Agent failures normally come from the model request, a local tool, schema validation, cancellation, or an incomplete human decision. Keep these paths visible in logs and return safe errors to callers.
Set OnError: "return-to-model" on a tool when the model can reasonably recover from the failure. The SDK converts the error into a tool result and allows the next turn to choose another action. Leave the default fail-run behavior for unsafe or unrecoverable failures.
Respect cancellation
Pass the request context to Run, Continue, or Stream. Cancelling it stops model streaming and prevents new tool work from starting.
Diagnose continuation errors
When a run is waiting for a person, every pending call needs an approval, rejection, or externally supplied result keyed by its tool-call ID. Persist the entire returned run record; a human message alone is not a substitute for those decisions.
Capture useful context
Record the run ID, step index, request ID, provider, model, finish reason, tool-call ID, and stop reason. Lifecycle hooks and DevTools expose these fields without requiring transport-level logging. Last modified on July 26, 2026