{"version":"2.1.292","anchor":"stream-message-stop-can-mark-abandoned-blocks","canonical_anchor":"stream-message-stop-can-mark-abandoned-blocks","heading":"Stream stop events can now flag partial content that will never complete","tier":"use","area":"SDK","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.292\/e\/stream-message-stop-can-mark-abandoned-blocks","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.292","markdown":"### Stream stop events can now flag partial content that will never complete\n\nWhen an API stream fails, stalls or ends early, the stop event can now say which partial content blocks to throw away\n\n**What**\n\nWhen a program reads Claude Code's output as a live stream through the SDK (the toolkit for driving Claude Code from your own code), each reply ends with a `message_stop` event. That event can now carry an optional `abandoned_blocks` field with two parts:\n\n- `api_message_id`: which reply the abandoned content belongs to\n\n- `from_block_index`: the position from which the content blocks (the separate pieces of a reply) were left unfinished\n\nClaude Code fills this in on a `message_stop` it produces itself when the stream from the API failed, stalled or ended early. A program can use it to remove half-received content blocks that will never become part of a finished assistant message.\n\n**Why**\n\nPrograms that show a reply as it streams in can now clean up the partial pieces left behind by a broken stream, instead of leaving fragments on screen that nothing will ever finish.\n\n- Area: SDK\n- Names: `abandoned_blocks`, `message_stop`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 2\/5\n- Scope: individual\n- Heads-up: no"}