Custodian
ReferenceCommand line

custodian exec

Resolve a document of tokens and pipe the values into a program over standard input, without ever printing them.

custodian exec resolves a document of tokens the same way custodian resolve does, then pipes the resolved document into a program over standard input — so the real values exist only in that program's memory, and are never printed, written to disk, passed as an argument, or added to the environment. This is the command Custodian is built around: the agent works with tokens, and the values are substituted at the last possible moment on a machine you control. Be signed in first.

Put -- before the program, so its own flags are not read by Custodian:

custodian exec --input filled.json -- fill-liberty-form --template PY01.pdf

The resolved document is written to that program's standard input; the program is run directly, not through a shell, and inherits Custodian's environment unchanged.

Options:

  • --input <file> — the document to resolve; - or omitted reads standard input.
  • --batch-size <n> — the most distinct tokens per request (default 50).
  • --child-timeout <seconds> — terminate the program if it runs longer than this. This bounds the program only; the global --timeout bounds Custodian's own requests, never the program.

Resolve first, then run

The program is started only after the whole document has resolved. So a token that fails to resolve means the program is never started, and no half-finished work is produced. The document and the master key are cleared from memory the instant the pipe is written and closed, before the program even exits.

Exit codes and the summary

custodian exec exits with the program's own exit code. A program that cannot be found or run is Custodian's failure and exits 127; a program stopped by --child-timeout exits 124. After the program exits on its own, Custodian writes a one-line summary to standard error — counts only, never a value:

custodian exec: resolved 3 tokens and piped the document to "fill-liberty-form" over standard input; the master key was unwrapped on this device, and no plaintext was written to disk, passed as an argument, or added to the environment.

On this page