APPROVAL_RUNGS
constAPPROVAL_RUNGS: readonly ["manual","write","assisted","auto","bypass"]
Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/dist/config/shell-policy.d.ts:337
CFG-27 (spec §1, §2) — the ladder. There is ONE approvals setting and it is a single ordered ladder; each rung fully determines behaviour. There are no severity thresholds, no strictness levels and no independent rater on/off switch.
| # | Rung | Rater | LLM cost |
|---|---|---|---|
| 1 | manual |
no | none |
| 2 | write |
no | none |
| 3 | assisted |
yes | 1 call per gated call |
| 4 | auto |
yes | 1–2 calls per gated call |
| 5 | bypass |
no | none |
Rungs 1, 2 and 5 are fully deterministic: no model is consulted, so behaviour is reproducible and costs nothing.
CFG-39 — four postures plus one modifier, not five peers. write is not a rung on a trust
ladder: it is the same posture as manual with a different auto-granted set. The four postures
a user chooses between are APPROVAL_POSTURES (manual → assisted → auto, plus
bypass), and that ordering is legible in the names themselves. write remains fully settable
— via /approvals write and via config — and simply does not occupy a row in quick access.
This constant keeps ALL FIVE members: it is the type’s domain, the set
resolveInterruptToolNames unions over, and what makes write settable at all.
bypass is NOT a higher-autonomy rung than auto (§2.5). Both let the agent act
without asking; bypass is the same autonomy with the checks removed. The ordering below is the
order the rungs are offered in, and must never be presented as though auto were an
incomplete bypass.
Identifiers are lower-case single words (§9.1) because the same token must work as a config value, a slash-command argument and a CLI flag — a space breaks the last two. Display names are capitalised; see APPROVAL_RUNG_LABELS.