ClaudePass

Docs

A 60-second quickstart: an empty Vault, one Secret, a Manifest declaring it, the Claude Code integration, and a command that uses the Secret without ever printing it.

Quickstart

# 1. Create a Vault. CPASS_KEY (CI) or the platform's unlock source
#    (macOS Keychain, or a passphrase on Linux) supplies the encryption
#    key.
cpass init

# 2. Store a Secret under a Handle. The value is typed at a hidden
#    prompt — cpass add refuses without a terminal, so an Agent can
#    never pipe a value it already knows straight into the Vault.
cpass add stripe/live

# 3. Declare the Handles this project needs. No values live in this
#    file; it's meant to be committed.
cpass manifest init
cpass manifest add stripe/live

# 4. Wire up Claude Code: an Intercept hook, a Command Policy hook, and
#    a skill teaching an Agent to use cpass. Idempotent — safe to re-run.
cpass integrate claude

# 5. Run the real command. cpass run reads the Manifest, injects
#    stripe/live as $STRIPE_LIVE into this one child process, and
#    nothing else — swap the sh -c '...' below for your actual
#    deploy/curl/psql/gcloud command; the Secret reaches it the same
#    way, by reading its own environment.
cpass run -- sh -c '[ -n "$STRIPE_LIVE" ] && echo "deploy: authenticated"'

The value of stripe/live is never typed into a command line, never appears in this terminal's scrollback, and — because Claude Code's plugin is installed — never gets past a paste into the Agent's prompt either.

Vocabulary

Secret
A sensitive value (API key, password, token, private key) that must never appear in an Agent's Context.
Handle
An opaque name that refers to a Secret without revealing its value — the only form in which a Secret is ever visible to an Agent.
Broker
The local component that resolves a Handle into a Secret value at the moment a command runs.
Manifest
A committed, per-project file (.claudepass.toml) declaring which Handles the project needs. Contains no values.
Capture
Storing the output of a command directly into the Vault as a new Secret, so a value born in a tool result never reaches an Agent.
Intercept
Catching a Secret value in a human's prompt before it reaches an Agent, and moving it into the Vault instead.
Exposed
The state of a Secret whose value has entered an Agent's Context at least once — treated as compromised and due for rotation.

Learn more