Policy
Governance → Policy shows what the policy engine actually decided, as opposed to what it's configured to decide. It has three tabs, each with its own URL so you can bookmark or share a filtered view:
| Tab | URL | Question it answers |
|---|---|---|
| Decisions | /governance/policy | What did the engine decide, about what, and why? |
| Divergence | /governance/policy/divergence | Would a second decision path have decided the same thing? |
| Conformance | /governance/policy/conformance | When a test suite tried to get past each control, did the control hold? |
Everything on this page is read-only. Anyone with the Viewer role or above can use it. For how decisions are made, see Approvals and risk appetite.
Decisions
The decision trail holds a record for every decision the engine made in your project: when an agent was built for a chat or a workflow run, when a built-in tool was considered for attachment, and similar points.
Filters
| Filter | Options |
|---|---|
| Window | Last 24 hours, Last 7 days (default), Last 30 days, Last quarter, Last year |
| Effect | Any effect, Allowed, Approval required, Denied |
| Reason | Any reason, or one reason code |
| Resource kind | Any kind, Function, Environment tool, MCP tool, Built-in, Integration operation |
| Agent id | A numeric agent ID |
Filters are kept in the page URL, so other screens (for example the Control Library and the Divergence tab) link straight into a filtered trail.
Summary
Above the table, five counts cover the whole window, not just the page you're looking at: Decisions, Allowed, Approval required, Denied, and Controls that did not hold — decisions that record a fail-open, a timeout, no approval channel, or an unavailable policy engine. If any are present, a warning says how many.
In some environments, Allowed decisions are sampled rather than all kept. When that's the case the page says so, and allow counts are a floor rather than a total. Denials and approval requirements are never sampled.
The table
| Column | Contents |
|---|---|
| When | When the decision was made. |
| Effect | Allowed, Approval required or Denied. |
| Reason | The reason code, in words. Hover for the raw code and an explanation. Codes that mean a control was reached and didn't hold are highlighted with a warning icon. |
| Resource | The tool, MCP server or function, with its resource kind. |
| Agent | The agent identity or agent ID. |
| Principal | The person the run was acting for, or Autonomous if there was none. |
| Policy | The policy version the decision was made against. |
The table loads 100 decisions at a time; use Load more for older ones.
Click a row to open the decision's full detail: the enforcement point that asked, the action, team and chat session, the combined risk, any obligations attached (such as human_approval), the linked oversight record, how long the decision took, and an inputs digest.
The inputs digest is enough to prove two calls were the same and to match a call to its approval, but the arguments themselves are never kept, because they're the part of a call most likely to contain whatever the user typed.
A decision marked as a shadow observation was recorded but not applied — it shows what the engine would have decided while a different path made the live decision.
Empty trail
- No decisions in this window means nothing happened in the window; widen it.
- No decisions have ever been recorded here means decision recording isn't running in this environment. Treat that as a finding, not a quiet week, and contact FYAI support.
Divergence
While the platform moves enforcement points from their original decision logic onto the policy engine, it can run both side by side and compare them. The Divergence tab reports that comparison.
Choose a Window — Last 7 days (default), Last 30 days or Last quarter.
- If shadow comparison is off for your environment, the tab says Shadow mode is off in this environment — nothing was compared. Every count is zero because nothing was compared, not because the paths agree. Don't read it as evidence of parity.
- If it's on, the tab says how many decisions were observed and compared, and shows:
- Decisions compared, Diverged and Divergence rate;
- By decision point — for each alternative path, how often it Agreed and Disagreed, and what it Would have decided;
- By reason code — what the shadow engine said, with Open to see those decisions on the Decisions tab;
- By effect — the shadow engine's decisions by effect;
- Where they disagreed most — the resources with the most divergent decisions.
Conformance
The conformance suite runs against a deployed environment, tries to get past each control the platform claims to have, and reports what it found. This tab shows those reports. Runs are posted in by the suite through the API; there's nothing to start from this page.
- If the most recent run has failing cases, a red banner says how many. A failing case means the suite got past a control.
- If the most recent run had cases that couldn't run, a warning says so. A case that couldn't run is a failure of coverage, not a pass.
- Pass rate over time charts the share of attempted cases that passed in each run, oldest on the left. Cases marked not applicable are left out of the calculation.
- The runs table shows Run, Finished, Cases, Passed, Failed, Not covered and Outcome for up to 50 runs from the last year. Expand a run to see every case with its Case ID, Title, the Control it exercises, Outcome (Passed, Failed, Not covered, Not applicable) and Reason.
The Conformance tab shows a red badge with the number of failing runs among the 10 most recent runs in the last 90 days, so a failure is visible without opening the tab.
Related
- Reason codes
- Control Library — turns this evidence into control status
- Alerts — raised from the same decisions
- Governance API