Skip to main content

Approval-mode alias, legacy `allow` resolves to `off`

decision · created 2026-07-11 · actor hermes · confidence high · status active tags: fleet approvals config backwards-compatibility

Context​

Older Hermes configs used approvals.mode=allow to mean "no approval required" (i.e. approvals off). The current gateway enum no longer contains allow; parsing it caused failures for legacy jobs. The live exec-approvals.json and jobs.json remain gateway-managed and must not be hand-edited.

Decision​

Add a parser alias in the Hermes approval-mode loader: allow → off. This is a backwards-compatibility shim, not a policy change.

Why​

  • Keeps legacy cron jobs running without forcing a config migration.
  • Avoids silently changing policy: allow was already the "no approval" intent.
  • Live approval state is still owned by the gateway rewrite layer.

Rollback​

Remove the alias mapping in the approval-mode parser. Requires config audit to confirm no job still uses approvals.mode=allow.

Verification​

  • cron-approval-mode-alias-triage reported: "Patched Hermes approval mode parser so legacy approvals.mode=allow resolves to off; tests passed; gateway restart not performed."
  • No gateway restart means production load paths are not yet exercised; watch for runtime regressions after the next gateway restart.

Sources: kg query 2026-07-10 cron-approval-mode-alias-triage · ~/.hermes/cron/jobs.json