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.193 Home All releases olderv2.1.191 v2.1.195newer
Claude Code v2.1.193

model_refusal_no_fallback SDK Event

What

A new system event is now emitted when the model ends a turn with stop reason "refusal" and no fallback model is configured, allowing SDK consumers to handle refusals programmatically.

Details
  • Event fields: type: "system", subtype: "model_refusal_no_fallback", original_model, request_id, api_refusal_category, api_refusal_explanation, content, uuid, session_id.
  • A new refused_user_message_uuid field (added to both model_refusal_fallback and model_refusal_no_fallback) contains the UUID of the human turn that triggered the refusal — the rewind target and composer prefill for edit-and-retry.
  • refused_user_message_uuid is null when the refused turn was not human-authored (e.g., a background task notification or auto-continuation).
  • Not emitted when a fallback model existed but was declined or gate-failed (that case uses the existing model_refusal_fallback event).
Evidence

New event schema (search for "model_refusal_no_fallback" or "UUID of the user message the refused request was for")

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.193 →