Govern

Fixture replay

YAML cases against a live plane. Connector policy still runs. Spend and daily run caps skip. Not a sandbox.

What it is

runkite sim -f fixtures.yaml creates a fresh thread per case, starts a run with X-Runkite-Simulation, polls until terminal, and optionally matches Admin audit deny/pending rows. Admin lists those runs with a sim badge.

Why it is here

Predicate and HITL checks need a real MCP path. Replay is how CI proves the plane still pending a large transfer without filling the day cap or the spend ledger.

How to implement

  1. Write YAML: agent, cases[].input, optional expect.policy_effects.
  2. Use an admin API key when auth is on. A write-only key gets 403.
  3. Run runkite sim -f … --url … --api-key …. Exit 0 means every case passed.
  4. Expecting pending does not approve the HITL row. Approve stays in Admin.
runkite sim -f examples/sim/predicates.yaml \
  --url http://127.0.0.1:2026 \
  --api-key "$RUNKITE_API_KEY" \
  --timeout 2m

What skips

What to expect

Reference: docs/sim.md · Grants & HITL · Runs & threads