Decision inspector
The anatomy of a decision detail, the authorization path, the rule that failed, the facts and what each denial reason asks you to fix.
The inspector explains a whole decision: which step decided, why, who asked, through which agent, and what to do.

Anatomy
Bar. Back to the list returns to Investigate with the filters as they were. Quick incident opens another refusal by its code.
Header. The time of the decision in UTC. When the problem has an Inbox signal, the header also shows Inbox item with its state and Mark resolved (Inbox).
The authorization path. It comes first, one step after the other, each with its state and what it checked:
| Step | What it shows | Possible states |
|---|---|---|
| Delegation | Rafael Souza → refunds-assistant | Passed, Failed |
| Agent | refunds-assistant | Passed |
| MCP server | Acme Billing | Passed, Not evaluated |
| Tool | refund_order | Passed, Failed, Not evaluated |
| Rules | The name of the rule that failed, such as Refund up to 500 | Passed, Failed, Not applicable, Not evaluated |
"Not evaluated" means an earlier step already denied. "Not applicable" means the tool has no rules.
The result. Denied, Allowed or Would deny, the tool, and the cause in one sentence. When a rule denied, the cause reads "Rule not met:" and the rule as the rule builder reads it, such as "amount is at most 500". A rule that can not be read as a sentence, such as one written in advanced CEL, shows its CEL. The help icon next to it reminds that the values of the call and of the attribute sources are never recorded: the rule shows what was checked, not the value that failed.
The action. Open the rule, under the result, for every denial that a rule of the agent produced: the delegation, the tool, the allowed values or a call rule. It opens the place in the graph where that rule is. It only opens it: a denial is often the rule doing its job, and the button does not suggest allowing anything. A tool that was not reviewed shows Review the tool instead.
The facts. Two columns. On the left, who and where: Identity provider, On behalf of (name and subject ID), Agent (name and agent ID), MCP server and Tool. On the right, how it was decided: Mode (Enforce or Report-only at that time), Reference (the code that the caller got with a denied call; paste it in Quick incident), Permission revision (it opens the revision history) and Decided at (UTC).
Decisions in this problem. "Decisions in this problem · 3 denied", with the one-hour window under it: same agent, server, tool, reason and result. Each row shows the time, the subject and the reference code of that call; clicking a row shows it in the inspector. A decision that is not part of a problem shows "Repeated in this window" with the count and the window.
Each reason and its fix
condition: a rule was false
The case above. Rafael Souza asked refunds-assistant to refund an order. Delegation, agent, server and tool passed; the rule Refund up to 500 failed, and the result reads "Rule not met: amount is at most 500". Open the rule leads to the tool panel in the graph, where the rule can be reviewed. Often the fix is not to change the rule: the denial was the expected behavior.
no_resource: the value is not an allowed value of the agent
This denial happens only on a tool whose server declares an allowed values parameter in the tool schema (x-authzen-mapping). The result says "The value of the call is not one of the allowed values of the agent", and rules stay "Not evaluated". The Admin does not add allowed values: ask the owner of the MCP server to remove the declaration, and limit the tool with a rule, such as queue is one of [tier-1].
no_delegation: the subject did not delegate to the agent

Bruno Costa asked support-assistant for a ticket, but he does not delegate to that agent. Delegation failed; the server, the tool and the rules stayed "Not evaluated". Open the rule leads to the provider panel, with who can delegate to the agent. This case appears when the delegation was revoked after the token was issued; normally, the token exchange would already have been refused.
no_grant: the agent cannot call the tool

Júlia Mendes delegated to issues-manager, but the agent does not have merge_pull_request. The tool step failed and the rules stayed "Not evaluated". Open the rule leads to the tools of the agent on that server.
A would-deny call

The agent issues-manager was in Report-only when Júlia asked it to merge a pull request. The tool step failed, so in Enforce the call would have stopped there; in Report-only it ran. The result says Would deny and that the call ran because the agent was in Report-only, and the Not blocked notice says that the call reached the server. The failed step shows "Failed · not enforced", Mode shows Report-only, and Reference says "None: the caller was not refused". The action is the same as for a denial, so the policy can be fixed before the agent is enforced.
An allowed decision

Every step passed. The list_issues tool has no rules, so the rules step shows "Not applicable", and the result says "Every check passed." The inspector of an allowed decision serves auditing: it shows that Júlia Mendes, through issues-manager, listed issues at that time, and which relations allowed it.