{"version":"2.1.292","anchor":"sdk-result-messages-carry-safety-stops","canonical_anchor":"sdk-result-messages-carry-safety-stops","heading":"Protocol adds safety_stops counts, worker_epoch on interrupts and safeguard verdicts on turn handoffs","tier":"use","area":"SDK","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.292\/e\/sdk-result-messages-carry-safety-stops","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.292","markdown":"### Protocol adds safety_stops counts, worker_epoch on interrupts and safeguard verdicts on turn handoffs\n\nSDK results gain a `safety_stops` count, interrupts gain an internal `worker_epoch`, and turn handoffs can carry server-side safeguard verdicts\n\n**What**\n\nThe messages Claude Code exchanges with programs that host or control it gain several optional fields.\n\n- `safety_stops`: SDK result messages now carry a count kept by a new counter in the cost and usage tracker. It appears on every result type that shares the common fields. When a result already has `safety_stops` and the tracked cost is lower than the result's `total_cost_usd`, the merged value is the larger of the two counts.\n\n- `worker_epoch`: an internal field on the interrupt request, so an interrupt sent by the service cannot hit a later worker (the remote process running the session). A stale one can be refused with `stale_worker_epoch`. It is stripped from the interrupt event, as `for_user_message_uuids` already was.\n\n- The `next_abort` message to a remote worker now carries extra detail fields alongside the reason.\n\n- `safeguard_results` and `safeguard_tool_use`: new fields on the `turn_handoff` request, so a server-side classifier verdict can decide the single tool call to run.\n\n- `run_id`: the task notification message schema gains this optional field, filled in when sent, and background task records gain `runId`.\n\n**Why**\n\nPrograms built on the SDK can see how many safety stops happened, with the count no longer under-reported, and can match notifications to a run. Remote sessions avoid a late interrupt stopping the wrong worker, and the server can now rule on a handed-over tool call.\n\n- Area: SDK\n- Names: `safety_stops`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 4\/5\n- Scope: individual\n- Heads-up: no"}