Resuming and streaming

Whether a disconnected or crashed run can be resumed (continuing the same in-progress answer) or needs a full retry (asking again) depends on exactly how the last turn ended, not on how long ago it disconnected.

Resumability rules

  • A run that ended on a plain finished text answer is NOT resumable — the turn already completed.
  • A run that ended mid tool-call (the model was waiting on a tool result), or on a non-assistant turn, IS resumable — the model still owes a follow-up.
  • This resumability rule is applied consistently everywhere a client might ask "can I resume this" — there's no separate, looser check used just to decide whether to show a resume affordance.

(Note: This is a runtime logic guarantee. Network disconnections or host API timeouts behave according to the host platform's infrastructure, but the engine's assessment of whether a given checkpoint is continuable remains absolute.)

What you see in traces

The execution's status field tells you whether a run is still running, awaiting approval, or in a terminal state — a client-side stream disconnect does not by itself change this status.

Authoring implications

If your integration surfaces a Resume vs. Retry choice after a disconnect, base it on the execution's actual terminal or tool-call state, not on elapsed time or client-side guesswork.

Common Pitfall: Assuming any disconnected run can always be resumed. A run that already finished its answer before the disconnect cannot be "resumed" into producing a new one.