
1
Install and enable
2
Observe
Start recording a job. Observe mode never blocks.
watch accepts a cron job name or id. If you pass a name that has not run yet, Mandate stores a placeholder (name:nightly-triage) and the first cron run of a job with that name adopts it.Let the job run at least three times. propose will compile with fewer runs, but it prints a warning: 3 or more give a more reliable mandate. MIN_RUNS in the compiler is 3.By default, observe_all_cron is true, so Mandate also records call shapes for cron jobs you have not watched yet. You can still propose those from hermes mandate list. If you turn observe_all_cron off, only watched jobs are recorded.3
Propose
# seen Nx) on every rule. Nothing is enforced yet. If the compiled YAML is byte-identical to the current pending or active mandate, it prints the text and says it is unchanged.4
Approve
y/N. Approval needs a TTY, or you must pass --yes. After you approve, the job switches to enforce unless you also pass --observe, which stores the approval but keeps recording without blocking.5
Enforce and inspect
--observe, switch later with hermes mandate enforce nightly-triage. You can go back with hermes mandate observe nightly-triage.What happens on the next run
In enforce mode, a call inside the approved mandate runs as usual. A call outside it is blocked inpre_tool_call, before the tool runs, and a drift record is stored. The block message names the failed rule, the drift id, and the exact widen command.