Skip to content

ApprovalRefusalOrigin

ApprovalRefusalOrigin = "config" | "session" | "persisted"

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/config/shell-policy.ts:1292

[[EXT-107]] — where a refusal in force came from. Three sources, three lifetimes, three owners, and the /approvals display keeps them apart because the answer to “how do I get rid of this?” is different for each:

  • config — a line the user wrote in approvals.deny. Lives as long as the file does and is removed by editing it; nothing at run time may quietly drop it.
  • session — the escalation menu’s always reject, held only for this runner instance. Gone at exit whether or not anyone lifts it.
  • persisted — the same choice, written to the project’s deny file, so it is still in force in the next session and for anyone who checks the file in.

A merged list that cannot say which is which makes the removal control impossible to build honestly: it would either offer to lift a config line it cannot lift, or hide the saved refusal behind one it can.