{"version":"2.1.268","anchor":"sdk-turn-result-schema-gains-resume-reason-and-result-index","canonical_anchor":"new-resume-reason-field-on-streaming-assistant-message-frame","heading":"Interrupted turns now report a resume_reason across streaming, SDK results, and resumed prompts","tier":"use","area":"SDK","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.268\/e\/sdk-turn-result-schema-gains-resume-reason-and-result-index","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.268","markdown":"### Interrupted turns now report a resume_reason across streaming, SDK results, and resumed prompts\n\nClaude Code now explains why an interrupted turn is being automatically resumed, and links it to the original turn\n\n**What**\n\n- Streaming partial-message frames can now carry a `resume_reason` field explaining why the current turn is an automatic re-run of one interrupted by a worker restart: `host_draining`, `checkpoint_restore`, `container_recreated`, or a fallback `interrupted_turn`. This ties to the `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` \/ `CLAUDE_CODE_RESUME_REASON` mechanism.\n\n- The SDK\/headless turn-result schema gains the same optional `resume_reason` string, plus an optional `result_index` integer, in both the streamed and final result message shapes.\n\n- When Claude Code auto-resumes an interrupted turn at session restart, the reconstructed prompt now includes a `resumeReason` and, when available, a `resumedTurnUserMessageUuid` pointing back to the original interrupted turn's user message.\n\n**Why** This makes it clear, both in the UI\/streaming output and in SDK results, why a turn was automatically re-run after an interruption (such as the worker host draining or a container being recreated), and links the resumed turn back to the original one it replaced.\n\n- Area: SDK\n- Names: `resume_reason`, `result_index`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 3\/5"}