--- name: 1password description: Install and use 1Password CLI (`op`) to sign in, inspect vault items, read secrets safely, and inject secrets into commands. user-invocable: true requires: bins: - op metadata: hybridclaw: category: security short_description: "1Password CLI access." tags: - secrets - enterprise - 1password install: - id: op kind: brew formula: 1password-cli bins: ["op"] label: Install 1Password CLI (brew) --- # 1Password CLI Use this skill for host-side secret workflows with 1Password CLI. ## Default Workflow 1. Check whether `op` is installed: ```bash op --version ``` 2. If it is missing, tell the user to run: ```bash hybridclaw skill install 1password op ``` or install it manually. 3. Verify sign-in state: ```bash op whoami op vault list ``` 4. Confirm the exact vault and item before reading any secret. 5. Prefer secret injection over copying values into files or chat. ## Safe Read Patterns List items: ```bash op item list --vault "Engineering" ``` Inspect an item without dumping every field: ```bash op item get "Prod API" --vault "Engineering" ``` Read one field only: ```bash op item get "Prod API" --vault "Engineering" --fields label=password ``` Read by secret reference: ```bash op read "op://Engineering/Prod API/password" ``` ## Safe Injection Patterns Run a command with secrets injected: ```bash op run --env-file=.env.1password -- your-command ``` Inject a template into a throwaway runtime file: ```bash RUNTIME_ENV="$(mktemp /tmp/runtime.env.XXXXXX)" chmod 600 "$RUNTIME_ENV" trap 'rm -f "$RUNTIME_ENV"' EXIT INT TERM op inject -i .env.template -o "$RUNTIME_ENV" ``` Prefer `/tmp` or an untracked runtime path. Do not inject into tracked files unless the user explicitly asks. If you are done before the shell exits, run `rm -f "$RUNTIME_ENV"` and `trap - EXIT INT TERM`. ## Rules - Never paste a secret value into chat unless the user explicitly requests it and there is no safer option. - Never commit, log, or echo secrets into shell history on purpose. - Default to read-only operations. Creating or editing vault items needs explicit user confirmation. - If `op whoami` fails, stop and tell the user they need to unlock the desktop app or sign in again. - If the task only needs a secret for one command, use `op run` instead of reading the secret into plain text.