Govern

Run manifest

Every run freezes a snapshot of exactly what it was authorized to do the instant it was created — not whatever your config says right now. That snapshot is stored on the run record (metadata.run_manifest) and, when the run is actually dispatched to a runner, copied onto the queued job too. Admin can pull it up for any run, forever.

What it is

At createRunCtx — the single function every run creation path (REST, streaming, cron, A2A delegation) goes through — the plane resolves the agent, the runner it will dispatch to, its declared tool allowlist and connector needs, whether connector policy is fail-closed, and who asked for the run. That resolved set of facts is written once, as run.metadata.run_manifest, and copied verbatim onto the queued job the runner receives. Neither copy changes after that point, even if you edit langgraph.json, rotate a grant, or flip policy on a minute later.

Why it is here

"What was this agent even allowed to do when it ran?" is a question every audit, incident review, and support ticket eventually asks. Live config answers "what's allowed right now" — which is the wrong answer once anything has changed since. A frozen per-run record is the only honest answer to a question about the past.

What's in it (schema v1)

{
  "schema_version": 1,
  "captured_at": "2026-09-05T02:58:06Z",
  "tenant_id": "acme",
  "agent_id": "sales-bot",
  "agent_version": 3,
  "runner_kind": "python-langgraph",
  "connector_needs": ["salesforce"],
  "allowed_tools": ["lookup_account"],
  "policy_fail_closed": true,
  "principal": { "identity": "alice", "permissions": ["runs:create"] },
  "parent_run_id": null,
  "depth": 0
}

In the product

Admin → Runs → a run — the Run manifest card, with raw JSON one click away
Runkite Admin Run detail page showing the Run manifest card

What to expect

Reference: docs/trust-governance.md · Grants & HITL · Admin UI guide → Threads & Runs · Limitations