Durable audit
Snapshot the actor, tool address, outcome, reason, and matched policy so a decision remains understandable after rules or the catalog change.
Policy decision records omit tool arguments completely.
Controller evaluates governed calls before they reach an upstream service. Unmatched calls are denied by default; policies can allow them, require a person, or block them.
The host attaches the connection credential and invokes the adapter. Agent code still never receives the plaintext value.
Policies can match exact or wildcard addresses, integrations, connections, risk, actors, environments, and structured input conditions. When several rules match, Controller resolves them in a deterministic order.
| Order | Factor | Resolution |
|---|---|---|
| 1 | Priority | Higher configured priority wins |
| 2 | Specificity | Narrower matching scope wins |
| 3 | Safer effect | Block, then approval, then automatic execution |
Input rules support exact values, membership, containment, regular expressions, numeric comparisons, negative operators, and the full input object. Common string-obfuscation forms are normalized, but narrow structural allow rules remain the stronger control.
Snapshot the actor, tool address, outcome, reason, and matched policy so a decision remains understandable after rules or the catalog change.
Policy decision records omit tool arguments completely.
Decrypt only while constructing an approved upstream request.
Grant read, execute, approve, or admin with expiration and revocation. Store only the token hash.
Reject embedded credentials and private or reserved destinations; revalidate redirects before following them.
Route native tools and non-Controller MCP calls from Codex, Claude Code, Cursor, OpenCode, and other supported clients through the same policy engine, failing closed without a valid decision.