Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.170 ·

Model Refusal Fallback SDK Protocol Event

Entry
JSON All of v2.1.170
EntryKind: in v2.1.170,
New FeaturesSection of the release
What

A new model_refusal_fallback system event is now emitted over the SDK protocol whenever the primary model returns a safety refusal and the session automatically retries on a fallback model.

Details
  • Event fields: trigger: "refusal", direction: "retry" | "revert" | "sticky", original_model, fallback_model, request_id, api_refusal_category (e.g. "cyber", "bio"), api_refusal_explanation, retracted_message_uuids
  • retracted_message_uuids lists the wire UUIDs of messages that were rolled back by the fallback — SDK consumers should evict these from transcript state on receipt
  • The supersedes field on incoming messages was also updated: it can now include tombstoned tool_result frames from the refused leg, not only assistant frames
  • refusalFallbackLaneEnabled and refusalFallbackSettingToggleVisible are now communicated from the daemon to the main process at startup rather than read directly from a feature flag, making these states available to SDK consumers via init
Evidence

New schema definition (search for "model_refusal_fallback" and "retracted_message_uuids")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

See this entry in the whole of v2.1.170 →

Feedback