lazy documentationv0.94Contents

lazy system passphrase

This page is generated from lazy system passphrase --help.

Usage: lazy system passphrase [status|set|delete]

Manage the approval passphrase that `lazy accept` asks for when a merge
crosses a protected branch or task.

The passphrase is stored HASHED at ~/.lazy/passphrase.json
(mode 0600), outside every repository, and covers every lazy project on this
machine — enroll it once. It is never stored in the clear and cannot be
recovered; a forgotten passphrase is re-enrolled, not recovered.

Subcommands:
  status (default)  Whether a passphrase is enrolled, where the store lives,
                    and when it was last set. Never reveals or hints at the
                    value itself.
  set               Enroll or rotate. Typed twice at a masked prompt; rotating
                    first asks for the current passphrase.
  delete            Un-enroll (also requires the current passphrase). Protected
                    merges then fail closed until you enroll again.

Forgot it? There is no recovery — the store holds a hash, not the passphrase.
Both `set` (rotation) and `delete` ask for the current one, so the way back is
to remove the store yourself and enroll again:

  rm ~/.lazy/passphrase.json
  lazy system passphrase set

That is a local file only you can write; it resets the passphrase, nothing else.

Interactive terminal ONLY: there is deliberately no flag, environment
variable, or piped-stdin form, and the command refuses to run inside a
container. A passphrase supplied non-interactively lands in shell history, CI
config, or an agent transcript — this credential exists to show a human typed
it. For the same reason there is no MCP tool and no daemon RPC: enrollment
happens in this process, on the host, while verification stays daemon-side.

Examples:
  lazy system passphrase              # is anything enrolled on this machine?
  lazy system passphrase set          # enroll, or rotate an existing one
  lazy system passphrase delete       # un-enroll