Mac Keychain
Use this skill to operate on macOS Keychain generic password items.
Scope
- Support
exists,read-meta,set,update,read-secret,reveal-secret, anddelete. - Operate on generic password items only.
- Stop if the request involves certificates, identities, private keys, or broad keychain administration.
Runtime
- Require
macOS,/usr/bin/security, and/bin/zsh. - Use the bundled scripts for deterministic behavior.
- Stop and explain the missing runtime dependency if the scripts cannot run as shipped.
Operating Rules
- Resolve the target with
service + accountbefore any write, delete, or secret read. - Default to the current user's
loginkeychain. - Pass
--keychainonly when the target is not the default login keychain. - Keep caller attribution, approval prompts, and workflow policy in the caller. Do not model them inside this skill.
- Keep the script interface narrow. Do not pass legacy caller-attribution or purpose flags.
- Keep this skill thin. It should expose local Keychain operations, not orchestrate a larger secret-management workflow.
Safety Model
- Do not guess missing
serviceoraccountforset,update,read-secret,reveal-secret, ordelete. - Do not echo the incoming secret in
setorupdate. - Use
read-secretfor downstream machine use after the caller has already decided that retrieval is allowed. - Use
reveal-secretonly when the user explicitly wants plaintext in visible output. Require--confirmed. - Use
deleteonly with a clear target. Require--confirmed.
Scripts
All scripts accept --service and --account. Use --keychain only for a non-default keychain.
scripts/keychain-exists.sh: return whether an item exists.scripts/keychain-read-meta.sh: return safe metadata only.scripts/keychain-set.sh: create a new item and fail if it already exists.scripts/keychain-update.sh: update an existing item and fail if it does not exist.scripts/keychain-read-secret.sh: return a plaintext secret for downstream use. Use--value-onlyto emit only the secret.scripts/keychain-reveal-secret.sh: return a plaintext secret for visible output. Require--confirmed.scripts/keychain-delete.sh: delete an item. Require--confirmed.
Output
- Expect structured JSON on stdout for success and on stderr for failures, except
scripts/keychain-read-secret.sh --value-only. - Treat
read-secretoutput as sensitive even when the caller does not print it. - Keep normal user-facing status non-disclosing unless the requested action is
reveal-secret.