← Back to Skills Marketplace
hans00

Headless Bitwarden

by Hans · GitHub ↗ · v1.0.2 · MIT-0
cross-platform ⚠ suspicious
138
Downloads
0
Stars
1
Active Installs
3
Versions
Install in OpenClaw
/install headless-bitwarden
Description
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.
README (SKILL.md)

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)

  1. Never paste secrets into chat
  • No master password, no session keys, no JSON secrets.
  1. Ephemeral by default
  • Unlock helper must be localhost-only, token-gated, and auto-expire.
  • Default TTL: 600s (10 minutes).
  1. No secret logging / no secret persistence
  • Do not log request bodies.
  • Do not write secrets to disk.
  1. Always restore rbw config
  • If a temporary pinentry override is used, it must be restored even on failure.

Prereqs

  1. Follow the workspace Bitwarden skill for setup (install, register/login):
  • skills/bitwarden/SKILL.md
  1. Additional requirements for the unlock helper:
  • rbw installed and registered/logged-in (device approved)
  • node available
  • bash
  • 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 cloudflared exists: a Public 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 unlock finishes
  • optionally run rbw sync after 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.jsonpinentry: \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
Usage Guidance
This skill appears to do exactly what it claims: run a short‑lived, token‑gated local unlock helper and optionally expose it via a Cloudflare tunnel. Before installing, verify you trust the skill source and inspect the included scripts (they modify ~/.config/rbw/config.json and create /tmp FIFOs). Only run the helper when needed, do not share the public URL, and prefer a private browser window for unlocking. If you don't want an external tunnel, ensure cloudflared is not present or disable START_TUNNEL. Finally, note residual risks the skill documents: the master password is briefly in process memory/child env and the tunnel provider is in the trust boundary.
Capability Analysis
Type: OpenClaw Skill Name: headless-bitwarden Version: 1.0.2 This skill implements a remote unlock helper for Bitwarden (rbw) by launching a local Node.js server and optionally exposing it via a public Cloudflare tunnel (trycloudflare.com). While the code includes security mitigations such as ephemeral tokens, TTL-based auto-shutdown, and attempts to clear password buffers in memory, the pattern of soliciting a master password through a web form and a public tunnel is inherently high-risk. The skill also dynamically modifies the local rbw configuration to use a custom pinentry script (pinentry.sh) and a FIFO pipe to automate credential injection, which are sensitive operations that could be abused if the session token is intercepted.
Capability Assessment
Purpose & Capability
Name/description match the implementation: scripts start a localhost HTTP helper, optionally open a Cloudflare tunnel, and temporarily override rbw pinentry to perform an unlock. Requested actions (edit rbw config, run rbw, start cloudflared) are expected for this feature.
Instruction Scope
SKILL.md limits the skill to starting/stopping an ephemeral unlock helper and documents the exact files touched. The runtime code only reads/writes the rbw config.json (to set/restore pinentry), creates a FIFO in /tmp, runs rbw unlock, and serves a token-gated form. It does not attempt to read unrelated files or exfiltrate stored secrets to external endpoints (aside from the optional tunnel provider which merely proxies TLS traffic).
Install Mechanism
Instruction-only with bundled scripts; no remote downloads or install hooks. Files are provided in the skill bundle, so nothing is fetched from arbitrary URLs during install.
Credentials
The skill requests no external credentials and uses only local configuration/environment (rbw binary, node, optional cloudflared). It does edit ~/.config/rbw/config.json and writes a FIFO in /tmp—both reasonable for implementing a temporary pinentry override and unlocking flow.
Persistence & Privilege
Skill is not always-enabled and does not modify OpenClaw or other skills. It runs ephemeral processes and auto-exits on TTL/success; no long‑lived privileges or persistent background services are installed.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install headless-bitwarden
  3. After installation, invoke the skill by name or use /headless-bitwarden
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.2
- Improved and refactored the unlock helper scripts for readability and maintainability. - Minor code updates in pinentry.sh and server.mjs—no behavior or workflow changes. - Documentation unchanged; security practices and workflow are as before.
v1.0.1
- Updated Bitwarden skill dependency reference from `skills/bitwarden-vault/SKILL.md` to `skills/bitwarden/SKILL.md` in prerequisites. - No other changes.
v1.0.0
Initial release of headless-bitwarden. - Adds an ephemeral HTTPS web unlock helper for rbw, enabling secure remote unlock of Bitwarden vaults. - Designed to prevent pasting secrets (e.g., passwords, tokens) into chat/workspaces. - Web unlock helper is localhost-only, token-gated, and auto-expires (default TTL 10 minutes). - No secret request logging or persistence; temporary pinentry overrides are always restored. - Supports integration with cloudflared for secure public HTTPS access, suitable for remote unlock scenarios.
Metadata
Slug headless-bitwarden
Version 1.0.2
License MIT-0
All-time Installs 1
Active Installs 1
Total Versions 3
Frequently Asked Questions

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.

💬 Comments