> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meshai.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Decision Evidence

> The per-decision record MeshAI keeps when a policy evaluates an agent action

Every agent action that MeshAI governs produces a decision: a policy was consulted, an agent was evaluated, and an outcome was reached. MeshAI records that decision as a first-class evidence record, separate from the request telemetry it relates to. Decision evidence is what an auditor reads when the question is not "what did the agent do" but "was it allowed, and on what basis."

Evidence records are produced on two paths: the proxy evaluates policies in the request path for traffic it fronts, and the OTLP ingest evaluates policies observe-only for activity reported from anywhere else.

## What a decision record carries

These are the fields returned by the API for each evaluation:

| Field                 | Type      | Meaning                                                                                                                                                    |
| --------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                  | integer   | Evidence record identifier                                                                                                                                 |
| `policy_id`           | integer   | The policy consulted for this decision                                                                                                                     |
| `agent_id`            | string    | The agent that was evaluated. Identity is resolved before evaluation, whether the agent is bound to the calling credential or self-asserted and discovered |
| `result`              | string    | `pass` or `fail`                                                                                                                                           |
| `reason`              | string    | Human-readable basis for the outcome, for example which rule matched                                                                                       |
| `context`             | object    | Producer detail: which path produced the record, the enforcement action taken, and matched categories where applicable                                     |
| `proxy_request_id`    | integer   | Linkage to the proxied request, where applicable                                                                                                           |
| `trace_id`, `span_id` | string    | Linkage to the surrounding trace, for records built from ingested OpenTelemetry activity                                                                   |
| `evaluated_at`        | timestamp | When the decision was made                                                                                                                                 |

Request-level attribution is recorded alongside on the request record itself: the API key identity, agent, team, provider, requested model, token usage, cost, and upstream status and latency.

## Decision outcomes

Outcomes in production are richer than allow and deny. A request can be denied by policy, held for [human approval](/governance/approvals), rate limited, stopped at a budget limit, blocked by the [prompt-injection scan](/governance/prompt-injection), refused by model routing rules, or have its response content acted on by a [PII policy](/governance/pii-filter) (block, redact, or observe). An agent under the [kill switch](/governance/kill-switch) is refused outright. Each of these is a different answer to a different question, and the evidence record keeps them distinguishable rather than flattening them into a single allow/deny bit.

## Query decision evidence

<CodeGroup>
  ```bash curl theme={null}
  curl "https://api.meshai.dev/api/v1/governance/policy-evaluations?result=fail&limit=50" \
    -H "Authorization: Bearer msh_YOUR_API_KEY"
  ```
</CodeGroup>

Filter by `policy_id`, `agent_id`, or `result` (`pass`, `fail`). Results are also visible in the dashboard's Eval Log.

<Note>
  Durable evidence rows are written today for content-policy evaluations on proxied responses and for all activity evaluated from OpenTelemetry ingest. Gateway enforcement denials return their decision and basis in the response; unifying those onto the same durable record is in progress. Check this page as coverage expands.
</Note>

## Standards alignment

The record above maps directly onto the direction of the OpenTelemetry GenAI semantic conventions for governance operations: a decision emitted by the deciding component, carrying the principal, the policy consulted, and the outcome, correlated onto the trace of the activity it governed. MeshAI participates in that standardization work and tracks it closely.
