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 inapprovals.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.