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

cpass
# 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 visible to an Agent. For example, stripe/live.
Agent
An AI coding session (Claude Code, Codex, or similar) whose context must be kept free of Secret values.
Broker
The local component that resolves a Handle into a Secret value at the moment a command runs, so the value reaches the destination process but not the Agent.
Context
Everything an Agent sees: prompts, tool results, and anything persisted from them (transcripts, logs, history).
Redaction
The Broker's replacement of a Secret value, in any recognisable encoding, with a marker in the output of a command before that output can reach an Agent.
Command Policy
The rules deciding whether a command an Agent wants to run may proceed: refusing commands that would reveal a Secret rather than use it, read Secrets from disk, or carry a raw Secret value. Applied both before a command runs and when the Broker injects.
Vault
The encrypted local store, owned by ClaudePass, where Secrets live. The only source the Broker reads from.
Binding
How a Secret lands in a command's process: either as an environment variable holding the value, or as a temporary file whose path is placed in an environment variable and which is destroyed when the command exits. A Handle carries a default Binding; a command may override it.
Manifest
A committed, per-project declaration of which Handles the project needs and their Bindings. Contains no Secret values and is safe to share. For example, .claudepass.toml.
Global Manifest
A per-machine declaration, in the same format as a Manifest, of which Handles every onboarded project should receive without naming them itself. Reaches a directory only through that directory's own Manifest, and never crosses into a nested repository. Contains no Secret values. For example, global.toml.
Capture
Storing the output of a command directly into the Vault as a new Secret, so that 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, moving it into the Vault, and erasing the prompt so the Agent only ever sees a Handle.
Exposed
The state of a Secret whose value has entered an Agent's Context at least once. An Exposed Secret is treated as compromised and due for rotation.

Learn more

  • Security — exactly what each component does and touches, and the no-telemetry guarantee.
  • Source — ClaudePass is free and MIT-licensed; read every line on GitHub.