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