/install headless-bitwarden
Headless Bitwarden (rbw) — Skill (addon)
Goal: safely retrieve secrets from Bitwarden without pasting passwords/tokens into chat.
This skill is intentionally small and non-overlapping:
- Use the existing Bitwarden skill for installation / account setup.
- This skill only adds an ephemeral remote unlock web helper for
rbw.
This skill standardizes a workflow around:
rbw(local encrypted cache + unlock)- an ephemeral unlock web helper that you can start on-demand and shut down automatically.
Core rules (must)
- Never paste secrets into chat
- No master password, no session keys, no JSON secrets.
- Ephemeral by default
- Unlock helper must be localhost-only, token-gated, and auto-expire.
- Default TTL: 600s (10 minutes).
- No secret logging / no secret persistence
- Do not log request bodies.
- Do not write secrets to disk.
- Always restore rbw config
- If a temporary
pinentryoverride is used, it must be restored even on failure.
Prereqs
- Follow the workspace Bitwarden skill for setup (install, register/login):
skills/bitwarden/SKILL.md
- Additional requirements for the unlock helper:
rbwinstalled and registered/logged-in (device approved)nodeavailablebash- Optional (recommended for remote):
cloudflared(for an ephemeral HTTPS URL)
Fast paths
A) If the vault is already unlocked
rbw unlocked
rbw sync
rbw search "\x3Ckeyword>"
rbw get "\x3Citem name>" --field "\x3Cfield name>"
B) If the vault is locked: start the ephemeral web unlock helper
From your workspace:
TTL_SECONDS=600 SYNC_AFTER_UNLOCK=1 \
skills/headless-bitwarden/scripts/rbw-remote-unlock/start.sh
You will see:
Local URL: http://127.0.0.1:\x3Cport>/\x3Ctoken>/- If
cloudflaredexists: aPublic URL: https://\x3Crandom>.../\x3Ctoken>/
Open the Public URL on your phone/laptop, enter the master password, and press Unlock. The helper will:
- run
rbw unlock - respond to the browser as soon as
rbw unlockfinishes - optionally run
rbw syncafter the browser response (so the page shouldn’t spin) - exit immediately on success (or auto-exit on TTL)
Security notes (residual risk, be explicit)
Even with HTTPS tunnel and no logs, this is not “zero risk”. Remaining risks include:
- password exists briefly in process memory
- password is passed briefly to a child process via env (in same-user scope)
- token URL leakage during TTL would allow access to the form
- tunnel provider is within the trust boundary (even though traffic is HTTPS)
Mitigations implemented:
- localhost bind only (
127.0.0.1) - high-entropy path token
- request body size limit
- no request-body logging
- TTL auto-exit + exit-on-success
- pinentry override always restored
Treat the Public URL as sensitive
The Public URL includes the one-time token. Anyone who obtains it during the TTL window can access the unlock form.
- Do not paste the Public URL into GitHub issues, logs, screenshots, or shared channels.
- Share it only to the person who is unlocking, and only for that one session.
Autofill note
The password input is configured to discourage browser/password-manager autofill (best-effort), but some managers may still try to fill. If you want to avoid accidental autofill, use a private/incognito window or temporarily disable the password manager for that page.
Retry / “unlock in progress” note
An unlock attempt can take a bit of time. If you submit twice quickly, you may see an “unlock attempt already in progress” message. Wait for the attempt to finish (default timeout is ~30s) before retrying.
Files
Implementation lives in:
skills/headless-bitwarden/scripts/rbw-remote-unlock/{start.sh,server.mjs,pinentry.sh}
Troubleshooting / operational notes
pinentry restore reliability
The helper does not call rbw config set/unset (which can hang in non-interactive environments). Instead, it temporarily edits:
~/.config/rbw/config.json→pinentry: \x3Cpath-to-pinentry.sh>
and then restores it back.
If something crashes mid-flight, the quickest manual recovery is:
rbw config set pinentry pinentry
Agent state
If rbw unlocked says agent not running, restart/refresh the agent by running:
rbw stop-agent || true
rbw unlocked
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install headless-bitwarden - After installation, invoke the skill by name or use
/headless-bitwarden - Provide required inputs per the skill's parameter spec and get structured output
What is Headless Bitwarden?
Extension for Bitwarden usage: adds an ephemeral HTTPS web unlock helper for rbw (TTL default 10m) so you can unlock remotely without pasting secrets into chat. It is an AI Agent Skill for Claude Code / OpenClaw, with 138 downloads so far.
How do I install Headless Bitwarden?
Run "/install headless-bitwarden" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Headless Bitwarden free?
Yes, Headless Bitwarden is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Headless Bitwarden support?
Headless Bitwarden is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Headless Bitwarden?
It is built and maintained by Hans (@hans00); the current version is v1.0.2.