Start here. This is the direct spoken answer to practice first.
Overview
Recovery means resuming from known state, not replaying the entire conversation and hoping the model repeats itself.
I persist the run goal, current state, completed steps, tool requests and receipts, approvals, budgets, and terminal status at durable boundaries. On restart, the runner loads that state and continues only unfinished work. Tools use idempotency keys or reconciliation queries so an ambiguous timeout does not repeat a side effect.