{"version":"2.1.193","anchor":"model-refusal-no-fallback-sdk-event","canonical_anchor":"model-refusal-no-fallback-sdk-event","heading":"model_refusal_no_fallback SDK Event","tier":null,"area":null,"scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.193\/e\/model-refusal-no-fallback-sdk-event","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.193","markdown":"### `model_refusal_no_fallback` SDK Event\n\n**What**\n\nA 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.\n\n**Details**\n\n- Event fields: `type: \"system\"`, `subtype: \"model_refusal_no_fallback\"`, `original_model`, `request_id`, `api_refusal_category`, `api_refusal_explanation`, `content`, `uuid`, `session_id`.\n- 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 \u2014 the rewind target and composer prefill for edit-and-retry.\n- `refused_user_message_uuid` is `null` when the refused turn was not human-authored (e.g., a background task notification or auto-continuation).\n- Not emitted when a fallback model existed but was declined or gate-failed (that case uses the existing `model_refusal_fallback` event).\n\n**Evidence**\n\nNew event schema (search for `\"model_refusal_no_fallback\"` or `\"UUID of the user message the refused request was for\"`)"}