Actions:
flag (note it in the ledger and let the call run), require_approval, deny.
content: section lives in the policy file. Without a policy file, content checks are off.
Cumulative intent
Each call looks fine alone; the sequence is the problem. Acumulative rule fires when a tool matching egress is
called in a run where a tool matching sources has already succeeded.
Results
When a tool result contains injection-like text or an encoded payload, thesucceeded record notes it
(result content check (injection): …). The result is still returned: Reversi does not rewrite what tools say.
Secrets never reach the ledger
Independent of these checks, every free-text ledger field (reason, detail, error text) is run through secret redaction before it is written, so a token pasted into an error message is stored as[REDACTED:github_token].
Arguments and results are never stored at all, only hashed.
