Install
openclaw skills install headless-bitwardenExtension 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.
openclaw skills install headless-bitwardenGoal: safely retrieve secrets from Bitwarden without pasting passwords/tokens into chat.
This skill is intentionally small and non-overlapping:
rbw.This skill standardizes a workflow around:
rbw (local encrypted cache + unlock)pinentry override is used, it must be restored even on failure.skills/bitwarden/SKILL.mdrbw installed and registered/logged-in (device approved)node availablebashcloudflared (for an ephemeral HTTPS URL)rbw unlocked
rbw sync
rbw search "<keyword>"
rbw get "<item name>" --field "<field name>"
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:<port>/<token>/cloudflared exists: a Public URL: https://<random>.../<token>/Open the Public URL on your phone/laptop, enter the master password, and press Unlock. The helper will:
rbw unlockrbw unlock finishesrbw sync after the browser response (so the page shouldn’t spin)Even with HTTPS tunnel and no logs, this is not “zero risk”. Remaining risks include:
Mitigations implemented:
127.0.0.1)The Public URL includes the one-time token. Anyone who obtains it during the TTL window can access the unlock form.
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.
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.
Implementation lives in:
skills/headless-bitwarden/scripts/rbw-remote-unlock/{start.sh,server.mjs,pinentry.sh}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: <path-to-pinentry.sh>and then restores it back.
If something crashes mid-flight, the quickest manual recovery is:
rbw config set pinentry pinentry
If rbw unlocked says agent not running, restart/refresh the agent by running:
rbw stop-agent || true
rbw unlocked