Production failed on Friday. My final transcript looked clean. The agent answered, cited sources, and summarized. The raw trace told a different story. It called the same endpoint three times with stale arguments.

Re-running the agent wasted tokens and time. Replaying the trace took seconds. I built a diff-first replay harness. Logs became the source of truth for debugging.

This post shows how to replay agent runs from JSONL traces. It also shows where a free server and a free model allowance fit in the loop.

Why re-running is the wrong default

Re-running an agent is a roll of the dice. Temperature, tool latency, and cached state change every run. You pay tokens for each attempt. You also need live credentials and network access.