Approval auto-triage
Learn auto-allow rules from how your reviewers already decide, accept them one by one, and work the approval queue in order of blast radius times uncertainty.
- Read the auto-allow rules your approval history suggests
- Accept, dismiss or revoke a rule
- Sort the approval queue so the novel and dangerous come first
Approval fatigue sets in when reviewers see the same safe request a hundred times. Auto-triage reads the receipted decisions on the trust ledger and does two things with them. A receipt that no longer verifies is not counted.
Auto-allow suggestions
Decided requests are grouped by agent, MCP server, tool and argument shape. The shape is the argument names, plus whether the call acts on a list of 10 or more items. The values are not part of it.
A group is suggested as an auto-allow rule when, over the last 180 days, reviewers decided it at least 20 times, approved it unedited at least 95% of the time, and rejected none of its last 10 requests.
GET /api/governance/approval-rules lists the suggestions, with the evidence for each, and the rules already accepted.
Nothing changes until a person accepts a suggestion. POST /api/governance/approval-rules/{key}/accept needs mcp.servers.update and Cedar configure on the agent. Only a suggestion the history supports at that moment can be accepted (409 otherwise). An accepted rule then lets a call of exactly that shape through a require_approval posture without a person, for 90 days. After that it must be earned again.
A rule never releases:
- a
denyposture, - a call a posture rule escalated,
- a call held by the agent's autonomy ladder,
- a call whose risk score is at or above the high-risk mark (60).
Dismiss a suggestion with POST .../{key}/dismiss so it is not offered again. Revoke a rule with DELETE /api/governance/approval-rules/{key}.
Rank the queue by blast radius times uncertainty
GET /api/approvals?status=pending&sort=triage orders the queue by a score that multiplies two things:
- Blast radius: the request's risk score (0 to 1), raised by the size of the largest list it acts on.
- Uncertainty: how close the history of its group is to a coin flip,
1 - |2p - 1|, wherepis the smoothed approve rate. A request nobody has decided before is fully uncertain.
Each row carries its triage breakdown, so a reviewer can see why it sits where it does. The novel and the dangerous rise to the top; the routine sinks.
Audit events
agent.approval.rule.accepted, agent.approval.rule.refused, agent.approval.rule.dismissed, agent.approval.rule.revoked, and agent.approval.auto_allowed for every call a rule let through, naming the rule and who accepted it.