PluginBench
Skill
Fail
Audit score 45

1password

steipete/clawdis

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

What is 1password?

1Password CLI enables secure secret management through three authentication modes: service account tokens (headless/CI), desktop app integration (interactive), and standalone signin. Use it to read, inject, or manage secrets without exposing them in logs or code.

  • Authenticate via service account token, desktop app integration, or interactive signin
  • Read secrets directly with `op read op://vault/item/field`
  • Inject secrets into commands with `op run` or `op inject` without writing to disk
  • List vaults and verify access with `op whoami` and `op vault list`
  • Manage multiple accounts with `--account` flag or `OP_ACCOUNT` environment variable

How to install 1password

npx skills add https://github.com/steipete/clawdis --skill 1password
Prerequisites
  • 1Password CLI binary (`op`) installed via brew or official installer
  • For service account mode: `OP_SERVICE_ACCOUNT_TOKEN` environment variable set
  • For desktop app mode: 1Password desktop application running and CLI integration enabled
  • For standalone signin mode on macOS/Linux: `tmux` skill available (Windows requires desktop app or service account)
Claude Code
Cursor
Windsurf
Cline

How to use 1password

  1. 1.Verify CLI installation with `op --version`
  2. 2.Determine your authentication mode: check for `OP_SERVICE_ACCOUNT_TOKEN`, running desktop app, or plan for interactive signin
  3. 3.For service account: export token and run `op whoami` to verify access
  4. 4.For desktop app: run `op whoami` directly (may prompt for Touch ID/Windows Hello); do not wrap in tmux
  5. 5.For standalone signin on macOS/Linux: create a tmux session, run `eval "$(op signin --account domain)"` inside it, then reuse that session for all `op` commands
  6. 6.Run `op vault list` to confirm access before executing secret reads
  7. 7.Use `op read op://vault/item/field` to retrieve secrets or `op run -- command` to inject secrets into commands

Use cases

Good for
  • Retrieve database passwords or API keys in CI/CD pipelines using service account tokens
  • Inject secrets into application startup commands without exposing them in process listings
  • Verify 1Password access and account status before running secret-dependent workflows
  • Access secrets from interactive desktop environments with Touch ID or Windows Hello authentication
  • Manage secrets across multiple 1Password accounts in the same session
Who it's for
  • DevOps engineers setting up CI/CD secret management
  • Backend developers needing secure local secret access
  • System administrators managing headless or gateway deployments
  • Teams using 1Password as their centralized secret store

1password FAQ

Which authentication mode should I use?

Use service account tokens for CI/CD and headless environments (most secure and reliable). Use desktop app integration for interactive development on macOS/Windows/Linux (supports biometric auth). Use standalone signin only if the other two are unavailable; it requires tmux on macOS/Linux.

Why does desktop app integration fail in tmux?

The 1Password desktop app uses per-user IPC channels (XPC on macOS, Unix sockets on Linux, named pipes on Windows) that are not reliably accessible from tmux subshells with different environment contexts. Always run `op` directly, not wrapped in tmux, when using desktop integration.

How do I keep a standalone signin session alive across multiple commands?

Create a persistent tmux session, run `eval "$(op signin --account domain)"` inside it to export the `OP_SESSION_*` token, then send all follow-up `op` commands to the same tmux pane. Reuse the same socket and session name for the entire workflow.

What should I do if 'account is not signed in' appears?

For service account: re-export `OP_SERVICE_ACCOUNT_TOKEN`. For desktop app: confirm the app is running and CLI integration is enabled. For standalone: re-run `op signin` in the same tmux session and complete any MFA or password prompts.

Can I write secrets to disk or log them?

No. Always use `op run` or `op inject` to pass secrets directly to commands, or pipe `op read` output directly to applications. Never paste secrets into logs, chat, code, or temporary files.

Full instructions (SKILL.md)

Source of truth, from steipete/clawdis.


name: 1password description: "Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets." homepage: https://developer.1password.com/docs/cli/get-started/ metadata: { "openclaw": { "emoji": "🔐", "requires": { "bins": ["op"] }, "install": [ { "id": "brew", "kind": "brew", "formula": "1password-cli", "bins": ["op"], "label": "Install 1Password CLI (brew)", }, ], }, }

1Password CLI

Follow the official CLI get-started steps. Don't guess install commands.

References

  • references/get-started.md (install + app integration + sign-in flow)
  • references/cli-examples.md (real op examples)

Workflow

  1. Check OS + shell.
  2. Verify CLI present: op --version.
  3. Detect the auth mode the user has set up:
    • Service account: OP_SERVICE_ACCOUNT_TOKEN is set (typical for headless setups, CI, gateways).
    • Desktop app integration: the 1Password desktop app is running with CLI integration enabled (typical on macOS / Windows / Linux desktops).
    • Standalone signin: neither of the above — op signin will prompt for an account password every session.
  4. Run op according to the auth mode (see below).
  5. Verify access: op whoami should succeed before any secret read.
  6. If multiple accounts: use --account or OP_ACCOUNT.

Running op per auth mode

Service account (preferred for headless / gateway use)

Direct exec. No tmux, no signin step.

export OP_SERVICE_ACCOUNT_TOKEN="ops_..."
op vault list
op read op://app-prod/db/password

Desktop app integration

Direct exec. Do not wrap in tmux — the desktop app integration uses a per-user IPC channel that is established for the gateway's exec environment but is not always reliably reachable from tmux subshells, which run with a different environment context. The transport differs per platform (XPC via the 1Password Browser Helper on macOS, a Unix domain socket on Linux, a named pipe on Windows); the practical rule for an agent is the same on all three: run op directly. On macOS, a useful symptom indicator is the 1Password integration group container at ~/Library/Group Containers/2BUA8C4S2C.com.1password/t/.

op vault list      # may trigger Touch ID / Windows Hello / system auth on first call
op whoami

If a call returns 1Password CLI couldn't connect to the 1Password desktop app, do not switch to tmux. Confirm the desktop app is running and unlocked, then retry direct exec.

Standalone signin (no app, interactive password)

This is the only mode where tmux helps. op signin prints an eval-style export setting an OP_SESSION_* token for POSIX shells; later commands in the same shell are authenticated by that env var. The gateway's per-command shells lose that state between calls, so a persistent tmux pane keeps the session token alive — but only if the export is actually applied with eval in a POSIX shell. Sending op signin as a plain command leaves stdout printed to the pane and op whoami will fail.

The tmux flow is only actionable on macOS/Linux hosts where the tmux skill is available. The example intentionally opens /bin/sh so the POSIX eval "$(op signin ...)" output is valid even when the user's normal shell is fish. On Windows, prefer desktop app integration or service account auth. If the user only has standalone interactive signin on Windows, stop and ask them to provide a persistent PowerShell session mechanism or switch to desktop integration/service account auth; do not translate the tmux commands directly.

SOCKET_DIR="${OPENCLAW_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}"
mkdir -p "$SOCKET_DIR"
chmod 700 "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/openclaw-op.sock"
SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"

tmux -S "$SOCKET" new -d -s "$SESSION" -n shell /bin/sh
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'eval "$(op signin --account my.1password.com)"' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -40

Do not queue follow-up commands while signin is prompting. Poll the pane with capture-pane until signin has either completed and the shell prompt has returned, or it is clearly waiting for human input. If the prompt requires a password, MFA, or account choice, pause and ask the user to complete signin in their own terminal; give them the socket and session values so they can attach locally. The agent should not run tmux attach from exec because attach consumes the current TTY and prevents scripted send-keys / capture-pane control.

After the shell prompt returns, verify by sending the checks into the same pane:

tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op whoami' Enter
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'op vault list' Enter
tmux -S "$SOCKET" capture-pane -t "$SESSION":0.0 -p -S - | tail -80

Keep the tmux session running so later op read / op run commands reuse the same authenticated shell.

Use the same SOCKET and SESSION values for every follow-up command in this standalone signin flow. The -S "$SOCKET" flag selects the tmux server socket; keep it in a user-owned 0700 directory, do not share it between users, and choose a new session name for each new signin attempt.

Guardrails

  • Never paste secrets into logs, chat, or code.
  • Prefer op run / op inject over writing secrets to disk.
  • If sign-in without app integration is needed, use op account add first.
  • If a command returns "account is not signed in":
    • service account: re-export OP_SERVICE_ACCOUNT_TOKEN
    • desktop app: confirm the app is running and integration is enabled
    • standalone: re-run op signin inside the same tmux session and authorize