1password

Set up op CLI, sign in, and read or inject secrets.

  • security
  • secrets
  • 1password
  • op
  • cli

Declared platforms: linux · macos · windows

Install
npx skills add 'https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/security/1password'
Download bundle ↓
main · 24fd22bScanned 2026-09-15

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

SKILL.md

SKILL.mdBrowse 3 files
View on GitHub
---name: 1passworddescription: Set up op CLI, sign in, and read or inject secrets.version: 1.0.0author: arceus77-7, enhanced by Hermes Agentlicense: MITplatforms: [linux, macos, windows]metadata:  hermes:    tags: [security, secrets, 1password, op, cli]    category: securitysetup:  help: "Create a service account at https://my.1password.com → Settings → Service Accounts"  collect_secrets:    - env_var: OP_SERVICE_ACCOUNT_TOKEN      prompt: "1Password Service Account Token"      provider_url: "https://developer.1password.com/docs/service-accounts/"      secret: true--- # 1Password CLI Use this skill when the user wants secrets managed through 1Password instead of plaintext env vars or files. ## Requirements - 1Password account- 1Password CLI (`op`) installed- One of: desktop app integration, service account token (`OP_SERVICE_ACCOUNT_TOKEN`), or Connect server- `tmux` available for stable authenticated sessions during Hermes terminal calls (desktop app flow only) ## When to Use - Install or configure 1Password CLI- Sign in with `op signin`- Read secret references like `op://Vault/Item/field`- Inject secrets into config/templates using `op inject`- Run commands with secret env vars via `op run` ## Authentication Methods ### Service Account (recommended for Hermes) Set `OP_SERVICE_ACCOUNT_TOKEN` in `${HERMES_HOME:-~/.hermes}/.env` (the skill will prompt for this on first load).No desktop app needed. Supports `op read`, `op inject`, `op run`. ```bashexport OP_SERVICE_ACCOUNT_TOKEN="your-token-here"op whoami  # verify — should show Type: SERVICE_ACCOUNT``` ### Desktop App Integration (interactive) 1. Enable in 1Password desktop app: Settings → Developer → Integrate with 1Password CLI2. Ensure app is unlocked3. Run `op signin` and approve the biometric prompt ### Connect Server (self-hosted) ```bashexport OP_CONNECT_HOST="http://localhost:8080"export OP_CONNECT_TOKEN="your-connect-token"``` ## Setup 1. Install CLI: ```bash# macOSbrew install 1password-cli # Linux (official package/install docs)# See references/get-started.md for distro-specific links. # Windows (winget)winget install AgileBits.1Password.CLI``` 2. Verify: ```bashop --version``` 3. Choose an auth method above and configure it. ## Hermes Execution Pattern (desktop app flow) Hermes terminal commands are non-interactive by default and can lose auth context between calls.For reliable `op` use with desktop app integration, run sign-in and secret operations inside a dedicated tmux session. Note: This is NOT needed when using `OP_SERVICE_ACCOUNT_TOKEN` — the token persists across terminal calls automatically. ```bashSOCKET_DIR="${TMPDIR:-/tmp}/hermes-tmux-sockets"mkdir -p "$SOCKET_DIR"SOCKET="$SOCKET_DIR/hermes-op.sock"SESSION="op-auth-$(date +%Y%m%d-%H%M%S)" tmux -S "$SOCKET" new -d -s "$SESSION" -n shell # Sign in (approve in desktop app when prompted)tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "eval \"\$(op signin --account my.1password.com)\"" Enter # Verify authtmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op whoami" Enter # Example readtmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op read 'op://Private/Npmjs/one-time password?attribute=otp'" Enter # Capture output when neededtmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200 # Cleanuptmux -S "$SOCKET" kill-session -t "$SESSION"``` ## Common Operations ### Read a secret ```bashop read "op://app-prod/db/password"``` ### Get OTP ```bashop read "op://app-prod/npm/one-time password?attribute=otp"``` ### Inject into template ```bashecho "db_password: {{ op://app-prod/db/password }}" | op inject``` ### Run a command with secret env var ```bashexport DB_PASSWORD="op://app-prod/db/password"  # example op:// reference, resolved by `op run`op run -- sh -c '[ -n "$DB_PASSWORD" ] && echo "DB_PASSWORD is set" || echo "DB_PASSWORD missing"'``` ## Guardrails - Never print raw secrets back to user unless they explicitly request the value.- Prefer `op run` / `op inject` instead of writing secrets into files.- If command fails with "account is not signed in", run `op signin` again in the same tmux session.- If desktop app integration is unavailable (headless/CI), use service account token flow. ## CI / Headless note For non-interactive use, authenticate with `OP_SERVICE_ACCOUNT_TOKEN` and avoid interactive `op signin`.Service accounts require CLI v2.18.0+. ## References - `references/get-started.md`- `references/cli-examples.md`- https://developer.1password.com/docs/cli/- https://developer.1password.com/docs/service-accounts/ 
Discovery context

Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.