openclaw/skills/1password/SKILL.md
Read secrets, credentials, and payment information from the OpenClaw 1Password vault. Use when asked about passwords, API keys, credit card details, SSH keys, or any stored credentials. Also use when making purchases that require card information.
npx skillsauth add Dbochman/dotfiles 1passwordInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read secrets and credentials from the OpenClaw vault via the op CLI. The service account has read-only access.
The service account token is at ~/.openclaw/.env-token. Set it before using op:
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.openclaw/.env-token)
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.openclaw/.env-token)
op read "op://OpenClaw/Item Name/field"
| Item | Field | Read Command |
|------|-------|-------------|
| OpenAI API Key | password | op read "op://OpenClaw/OpenAI API Key/password" |
| ElevenLabs API Key | password | op read "op://OpenClaw/ElevenLabs API Key/password" |
| Gateway Token | password | op read "op://OpenClaw/OpenClaw Gateway Token/password" |
| BlueBubbles Password | password | op read "op://OpenClaw/BlueBubbles Password/password" |
| Star Market | password, username | op read "op://OpenClaw/Star Market/password" |
| Digital Ocean API | credential | op read "op://OpenClaw/Digital Ocean API Credential/credential" |
| Tavily | password | op read "op://OpenClaw/Tavily/password" |
| Google Places API | password | op read "op://OpenClaw/Google Places API/password" |
| OpenRouter | password | op read "op://OpenClaw/OpenRouter/password" |
| Resy | password | op read "op://OpenClaw/Resy/password" |
| OpenTable | password | op read "op://OpenClaw/OpenTable/password" |
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.openclaw/.env-token)
op read "op://OpenClaw/Visa/number" # Card number
op read "op://OpenClaw/Visa/expiry date" # Expiration (YYYYMM)
op read "op://OpenClaw/Visa/verification number" # CVV
op read "op://OpenClaw/Visa/cardholder name" # Cardholder
op read "op://OpenClaw/Visa/credit limit" # Spending cap
op read "op://OpenClaw/Visa/address" # Billing address
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.openclaw/.env-token)
op item list --vault OpenClaw --format json
export OP_SERVICE_ACCOUNT_TOKEN=$(cat ~/.openclaw/.env-token)
op item get "Item Name" --vault OpenClaw --format json
When making online purchases with the credit card:
****-****-****-0298OpenClaw — only items in this vault are accessiblePrivate, etc.) are NOT accessibleOP_SERVICE_ACCOUNT_TOKEN is loaded from ~/.openclaw/.env-tokenopAny script run by a LaunchAgent that calls op (directly or via a CLI like opentable, resy, nest) MUST set OP_SERVICE_ACCOUNT_TOKEN before invoking op. Without it, op falls back to the 1Password desktop app's Mach bootstrap service, which triggers a GUI permission popup for "bash" every run. On a headless Mini with no VNC, this popup is impossible to approve and the op call hangs until timeout.
# Add this near the top of any LaunchAgent script that may call op
if [[ -f "$HOME/.openclaw/.env-token" ]]; then
export OP_SERVICE_ACCOUNT_TOKEN=$(cat "$HOME/.openclaw/.env-token")
fi
This applies even to scripts that only indirectly call op — e.g., a bash script that calls opentable snipe, which internally calls op read when its credential cache expires. See LAUNCHAGENTS.md § New LaunchAgent Checklist for the full list of rules.
The gateway wrapper uses a cached secrets file instead of calling op read at startup.
This is a necessary exception to the "read from 1Password at runtime" principle.
On macOS Tahoe (26.x), op read hangs indefinitely when called from a LaunchAgent
context. The 1Password CLI spawns an op daemon --background process that attempts to
connect to the 1Password desktop app via a Mach bootstrap service. Under launchd, this
connection blocks forever because the desktop app requires user interaction (Touch ID/GUI
prompt) that can't happen in a non-GUI launchd context.
Every approach was tested and failed:
OP_SERVICE_ACCOUNT_TOKEN alone — daemon still spawns before token is evaluatedOP_BIOMETRIC_UNLOCK_ENABLED=false — Mach port connection precedes env check--config /isolated/dir — new daemon spawns, same behaviorenv -i minimal environment — Mach ports are per-user-session, not env-basedop invocation also triggers
incessant TCC "op would like to access data" popups on Tahoe that don't persistThe only reliable solution is to never call op from the launchd wrapper at all.
~/.openclaw/.secrets-cache (chmod 600, KEY=VALUE format)set -a; source $CACHE; set +a~/bin/openclaw-refresh-secrets — fetches secrets from 1Password
via op read and writes them to the cache. Run over SSH after key rotation.op read works fine over SSH and in interactive terminals — only launchd is broken.chmod 600 (owner-only read/write)~/bin/openclaw-refresh-secretsop read at runtime for on-demand secret access
(this works because the agent runs inside the gateway's node process, which
already has the secrets loaded as environment variables)development
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".