Skip to content

CLI reference

This is the map of the kovra CLI. Each command runs through the same policy decision; run kovra <command> --help for its exact flags and arguments.

Command What it does
kovra init Initialize the vault registry and master key. Creates a key only when the keyring has none; over a vault that already holds sealed records it takes --force and your approval.
kovra setup Onboard the current repo: ensure the vault, register the MCP server in .mcp.json, insert the conventions block in CLAUDE.md, install the credential gate’s hooks in .claude/settings.local.json (the Read denials in .claude/settings.json), and register kovrad at login (macOS). --dry-run previews.

kovrad is kovra’s per-user service; it runs the credential gate. On macOS it starts at login and is listed as kovrad under System Settings → General → Login Items → Allow in the Background. If you turn it off there, it does not start at login, and kovra starts it only when needed, without restarting it if it dies; kovra daemon status and kovra doctor remind you, and tell that switch apart from a registration that failed, which kovra daemon install repairs.

Command What it does
kovra daemon status Show whether kovrad is running: pid, version, uptime, connections and the gate’s counters.
kovra daemon start Start kovrad if it is not running (and restart one of another version).
kovra daemon stop Stop kovrad.
kovra daemon install Register kovrad to run at login and restart it if it dies (macOS); it returns once kovrad answers.
kovra daemon uninstall Stop kovrad and remove that registration; kovra setup then leaves it off until kovra daemon install.
Command What it does
kovra add <coord> Create a secret (value via hidden prompt or --stdin; never argv). Creating one in a project vault (--project) over a critical global secret takes your approval, as add, set, generate, keygen, import, intake fulfill and unpack all do. --description writes the usage note agents read (at most 500 characters); --mint-only marks a master credential that should only mint scoped child tokens (literals and references).
kovra set <coord> Update a secret’s value, keeping its note and its mint-only mark. Overwriting a high or inject-only one takes your approval.
kovra edit <coord> Edit metadata (sensitivity / description / reference / --mint-only true|false); lowering sensitivity is a guarded downgrade. On a critical secret, one edit can’t change both sensitivity and reference. The CLI is the only place that unmarks a mint-only secret or changes its note; an agent can only mark one.
kovra rm <coord> Delete a secret. A high or inject-only one takes your approval (Touch ID, or your login password).
kovra list List secrets — metadata only, never values. high, inject-only and prod values show no fingerprint (—). The mode shows mint-only for a marked secret, and the note column its usage note.
kovra show <coord> Reveal one value to stdout (high needs bioProve; inject-only never). A mint-only secret comes with kovra’s warning on stderr.
kovra generate <coord> Generate a random value server-side; never printed.
kovra import <coord> --from op://… Copy a value from 1Password into the vault as a literal.

The agent-initiated flow: an agent (or you) queues a request to create a secret — naming only the coordinate, never a value — and a human fulfils it out-of-band, so the value never passes through the agent’s context. See kovra over MCP.

Command What it does
kovra intake request <coord> Queue a request to create a secret (--sensitivity, --description; no value here).
kovra intake list List the pending secret-creation requests.
kovra intake fulfill <id> Supply the value for a request and seal it (--stdin / --clipboard / --window; a high or prod creation confirms). Over a secret that already exists it rotates it, and always asks for your approval.
kovra intake cancel <id> Drop a pending request without fulfilling it.

On macOS, the kovra-menulet menu-bar app lists pending requests and opens the native fulfilment window for you.

Command What it does
kovra mcp Serve kovra’s MCP server over stdio. Your agent starts it from .mcp.json, which kovra setup writes; you don’t run it by hand. Scope from KOVRA_MCP_OPERATIONS, KOVRA_MCP_ENVIRONMENTS and KOVRA_MCP_PROJECTS. See kovra over MCP.
Command What it does
kovra run --env <e> -- <cmd> Resolve an .env.refs and run a command with values injected into the child process. --allow allowlists an executable (by its resolved path) for high/prod for this run, with your approval — asked only when the run actually delivers such a value. A run that delivers high/prod gets a sanitized environment (fixed PATH, no code-loading variables). A run that injects a mint-only secret writes a warning to kovra’s stderr — the coordinate, kovra’s advice and the note — before the child starts (with --stdio too), and still runs.
kovra allow add / rm / list Manage the executor allowlist — the reviewed programs that may receive a high/prod value. It is sealed under the vault key, so only kovra writes it; add takes your approval. Each entry pins the program’s content (an edit un-allowlists it; list marks it changed since it was approved); generic interpreters and launchers (sh, bash, env, python, node, make, npm, docker, …) are refused.
kovra run --stdio -- <cmd> Same, but inherit stdin/stdout/stderr into the child (alias --interactive) — needed to wrap interactive processes and stdio MCP servers. Output isn’t captured, so no masking; the secret is still injected via the environment only and the high/prod gates still run.
Command What it does
kovra code <coord> Print the current TOTP code (never the seed). Gated as a reveal: an inject-only enrollment never shows a code, and a prod code asked from an agent’s session is refused (I14); from your own shell it asks for your approval.
kovra keygen <coord> Generate and custody an asymmetric keypair (private half never on disk).
kovra pubkey <coord> Print a keypair’s OpenSSH public key (free).
kovra sign <coord> [file] Sign a file, or stdin, with the private key; the signature goes to stdout. A high, inject-only or prod key asks you, and the approval shows the SHA-256 of the signed data and, on the Mac, the document itself (see What a signature approval shows). --reason "<text>" says what the signature is for, in one line of at most 200 characters; the approval shows it as the requester’s text, which kovra does not verify, and the audit records it. A reason that is empty, longer, or has a line break, a control, format, bidi, combining or invisible character, or a space other than the plain one is refused with exit code 2, before anything is asked.
kovra verify <coord> [file] Verify a signature (--signature <file>) with the public key, also of a public-only entry (free).
kovra encrypt / decrypt Encrypt to / decrypt with an ed25519 keypair.
kovra ssh-add <coord> Load a custodied key into the running ssh-agent, in memory only. Refuses high, inject-only and prod keys — those sign only through kovra ssh-agent.
kovra ssh-agent Run kovra as a governed ssh-agent (signs in memory; high/prod confirm per signature, and the dialog names the requesting process and what is signed).
Command What it does
kovra add <coord> --reference azure-kv://… Store a pointer to Azure Key Vault.
kovra add <coord> --reference aws-sm://… Store a pointer to AWS Secrets Manager.

References resolve at runtime under your own identity. See Cloud references.

Command What it does
kovra preflight <operation> … Answers, before an operation runs, whether it would ask you, where (the Mac, the paired phone, or only the phone over SSH) and why. It never asks, never prints a value and never contacts the phone; --json prints the same fields. See Preflight. kovra preflight sign <coord> --reason "<text>" checks the reason as kovra sign does and refuses it the same way (exit code 2).
Command What it does
kovra phone pair Pair the kovra Mobile app on your iPhone (coming soon, not published yet): prints a QR and, once the phone answers, the 6-digit code both screens share, and keeps the pairing once you approve it at the Mac. --relay <url> picks another relay.
kovra phone status Show the paired phone, its relay and whether notifications are on or muted.
kovra phone forget Forget the paired phone, approved at the Mac.

See Approve from your iPhone.

Command What it does
kovra license status Show the license: state, plan, lease and grace, and whether updates are allowed. --json for the menu-bar app.
kovra license activate Activate this Mac with the code Kaeus sent you (hidden prompt, or --stdin; never an argument).
kovra license refresh Renew the license now (kovrad renews it on its own).
kovra license deactivate Release this Mac’s seat in the license (activating again needs a new code); approved at this Mac only.

A license never keeps you from your secrets; it only gates updates. See The Free license.

Command What it does
kovra confirm <text> Request an attended human confirmation (exit 0 if approved) — for a host/app to gate its own action. The approval introduces the text as the calling program’s: A program — not kovra — asks you to approve.
kovra approve [id] Development builds and platforms other than macOS: approve/deny a request of the file broker. On a Mac every approval is in kovra’s review window, and an agent cannot approve: inside a Claude Code session it refuses.
Command What it does
kovra ui Bring up the on-demand loopback admin UI. On macOS it opens in a native window by default; --browser opens it in the system browser instead (--no-open also implies browser mode and only prints the URL; refused on macOS, where the printed URL never carries the session token); --window forces the native window; --persistent keeps it up and locks on idle instead of shutting down.
Command What it does
kovra scaffold Scan source for env-var references and propose an .env.refs (reads names only, never values).
kovra doctor (lint) Validate a project’s secret config; coordinates + status only, never a value. Exits non-zero on a hard finding. Without ./.env.refs it checks no contract, prints its notes on this Mac (PATH, kovrad, notifications, license) and exits 0; with --refs <file>, a missing file is an error, so a hook or CI step that must validate the contract passes --refs.
kovra hooks Manage git hooks that keep secrets out of commits.
kovra audit Query the audit trail — coordinates, truncated fingerprints, timestamps, origin; never a value.
kovra key export / import Back up / restore the vault master key (disaster recovery). export is approved with biometrics only when the Mac has Touch ID; import restores only a key that opens the vault’s records.