Docs The loop
Replay
Re-run a recorded decision with one thing changed, and see whether the agent decides differently.
Runs. A recorded run holds everything a model step saw. Replay sends that same context to a model again, with one thing changed, so you can see whether a fix changes the decision before you ship it.
escalate_to_human first.How to: replay a step on another model
Open the run
In Runs, open the run with the decision you want to test.
Select a model step
Select a Model step in the timeline. The Replay this step panel shows the model it was captured on.
Choose what to change
Pick another model from the list. To test a prompt fix instead, edit the system prompt in the panel.
Run the replay
Select Replay as-is (or Run edited replay if you edited the prompt).
Expected outputThe new answer beside the recorded one. If the decision differs, the panel says Behaviour changed.
Step replay
Step replay re-runs one model step from a stored run: the same messages and tools, with the system prompt, the model or a parameter changed. Open any run in Runs and choose a step, or call POST /api/replay. The response is the new model output beside the recorded one.
The recording above is exactly that: the production call tried to refund the disputed charge and a rule stopped it; the same call with one line added escalated to a person instead.
Deep replay
Deep replay re-executes your agent's own code against a recorded run. It lives in @runback/sdk-replay, which is commercial and not yet published to npm; the runback-replay CLI ships with it. From Enterprise
| Step replay | Deep replay | |
|---|---|---|
| What runs again | One model step: the same messages and tools | Your agent's own code, with every model call, tool call and environment read served from the recording |
| Where | Any run in Runs, or POST /api/replay | @runback/sdk-replay and the runback-replay CLI |
| Plan | Every plan | Enterprise |
| Credentials | A session, or an API key whose scope is ci or full access | A session, or a full-access API key (scope ingest, or a legacy key with no scope) |
Deep replay reads its recording from GET /api/runs/{run_id}/cassette. A ci key gets 401 there and a trace_write key gets 403, because the recording carries every prompt and tool output in the run. See key scopes.
Next
A replay that decides better is the start of proving the fix.