Use GCP without recurring browser OAuth
集成
Bitwarden Lease
试用One secure Bitwarden unlock per 24 hours
它能做什么
Install, operate, diagnose, and safely consume an owner-only macOS Bitwarden CLI lease that uses one native hidden-answer unlock interaction for a 24-hour process-continuity window. Use when repeated `bw unlock` prompts or agent handoffs disrupt work, when local agents need Bitwarden-backed credentials without persisting `BW_SESSION`, when checking whether the lease is usable, or when repairing the `io.github.antreasantoniou.bitwarden-lease` LaunchAgent. Bitwarden only; never substitute another credential store implicitly.
技能文档
Bitwarden Lease
Use one local macOS broker process to retain BW_SESSION in memory for 86,400
seconds. Present the human with a native secure dialog, allow three password
attempts, and share the lease across agent tasks through an owner-only Unix
socket. Never return the Bitwarden session itself.
Resolve this skill
Set the directory containing this SKILL.md before invoking bundled scripts:
BITWARDEN_LEASE_SKILL="/absolute/path/to/bitwarden-lease"
Do not assume whether the active copy is under ~/.agents, ~/.claude, or
~/.codex; resolve the selected skill path from the available-skills catalog.
Inspect without prompting
Run:
"$HOME/.local/bin/bw-lease" status
This operation must never open a dialog. Interpret only:
status=unlocked: the broker holds a live lease; useremaining_seconds.status=locked: explicitly unlock before requesting a secret.- missing socket/client: inspect or install the LaunchAgent.
Do not use bw status for this check: brokered bw operations intentionally
ensure a lease and may prompt.
Install or repair
Requirements: macOS, Bitwarden CLI bw, and a stable absolute Python 3 path.
Prefer Homebrew Python outside a virtual environment when present.
Validate the package before installation:
python3 "$BITWARDEN_LEASE_SKILL/scripts/self_test.py"
python3 "$BITWARDEN_LEASE_SKILL/scripts/install_bitwarden_lease_broker.py" \
install --python /opt/homebrew/bin/python3
On Intel Homebrew, use /usr/local/bin/python3; otherwise use a reviewed,
absolute, executable Python 3 path. The installer copies immutable runtime
files to ~/Library/Application Support/BitwardenLease, writes an owner-only
LaunchAgent, installs ~/.local/bin/bw-lease, and starts the service. Installing
or repairing restarts the broker and therefore discards any current lease.
After installation, verify all of these without unlocking:
launchctl print "gui/$(id -u)/io.github.antreasantoniou.bitwarden-lease"
ls -l "$HOME/Library/Caches/bitwarden-lease/broker.sock"
"$HOME/.local/bin/bw-lease" status
Require a running service and a socket mode no broader than 0600. Never
claim a usable lease merely because the process exists.
Unlock once
Only trigger unlock when the user asked for credentialed work or an imminent authorized operation requires it:
"$HOME/.local/bin/bw-lease" unlock
The native dialog is the only password-entry surface. It permits three attempts. Do not ask the user to type into an agent terminal, do not accept the password in chat, and do not pass it in argv, files, shell history, clipboard automation, or environment variables.
After success, call status again. Report lease state and approximate remaining
time only. Never report vault identity metadata unless the task explicitly
requires a public identity verification.
Consume a secret without exposing it
The client supports allowlisted bw get, bw list, bw sync, and bw status
operations:
"$HOME/.local/bin/bw-lease" bw get password ITEM_ID
Secret-bearing output is sensitive. Never run such a command directly when its
stdout will enter a tool transcript. Route output directly into the smallest
authorized one-shot consumer, suppress diagnostics that might echo it, unset
derived environment values immediately, and verify only non-secret public
identity or operation receipts. Do not write .env files, shell profiles,
LaunchAgent variables, Keychain entries, GCS objects, CI outputs, logs, or
evidence records containing the secret.
Each brokered Bitwarden CLI operation is bounded to 30 seconds. A timeout
returns exit code 75 with no stdout, so one stalled bw child cannot serialize
all later clients behind it or expose partial secret output. Treat a timeout as
a transient broker/CLI failure; diagnose the child process and retry once after
it is absent. Do not restart a healthy broker merely to retry, because restart
discards the in-memory lease.
The broker rejects --session, --passwordfile, and --passwordenv supplied
by callers. It has no operation that returns its in-memory session key.
Honor the availability boundary
The guarantee is one prompt per 24 hours while the broker process survives. A reboot, logout, broker crash/restart, explicit vault lock, account revocation, or Bitwarden session invalidation requires a fresh prompt. Never claim prompt-free survival across those events: that would require persisting a reusable decrypted credential.
If a brokered operation reports the session invalid before lease expiry, treat
the lease as unusable and request a fresh explicit unlock. Do not silently fall
back to ambient BW_SESSION, raw bw unlock, 1Password, service-account keys,
or credentials found in project files.
Diagnose safely
Read only process state, permissions, and secret-free logs:
launchctl print "gui/$(id -u)/io.github.antreasantoniou.bitwarden-lease"
tail -100 "$HOME/Library/Caches/bitwarden-lease/broker.stderr.log"
The logs must remain empty of passwords, sessions, vault objects, and secret command output. Read references/security-contract.md before changing the protocol, lifetime, persistence model, permissions, or allowed Bitwarden commands.
Close the loop
For changes to this skill or broker:
- Run
scripts/self_test.pyand the skill validator. - Verify installed/reviewed script hashes if installation changed.
- Check
launchctlstate and non-prompting lease status. - Record only the custody decision, lease state, and non-secret receipts.
- Publish only source, tests, and non-secret receipts. Never publish runtime state, socket contents, vault identifiers, or retrieved values.
相关技能
Plant decoy credentials in your OpenClaw workspace to detect malicious skill behavior. Canary tokens trigger alerts when read, copied, or exfiltrated. Activate when user says "deploy canary", "set up honeypot", "plant decoy", "canary check", "canary status", or "canary cleanup".
Use Bitwarden Secrets Manager safely
agentself is a free, local CLI that gives an agent its own identity: encrypted secrets, a wallet, and optional email. Everything lives on the machine, under the agent’s control. No borrowing your accounts, no cloud dependency, and no login.
在服务端把密钥注入到命令中执行,明文永不返回给 Agent,也不会进入聊天记录。
Use the Cryptowerk Verifiable Data skill to implement an "Agent Flight Recorder" that creates an immutable, cryptographically verifiable audit trail for Open...