Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All of v2.1.170 Home All releases olderv2.1.169 v2.1.172newer

Model Refusal Fallback SDK Protocol Event

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 →