{"version":"2.1.242","anchor":"groundwork-for-handling-model-refusals","canonical_anchor":"groundwork-for-handling-model-refusals","heading":"Groundwork for handling model refusals","tier":"soon","area":"Model Handling","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.242\/e\/groundwork-for-handling-model-refusals","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.242","markdown":"### Groundwork for handling model refusals\n\nGroundwork for spotting when the model refuses, with a banner slot that is still empty.\n\n**What**\n\nA pattern was added that recognises the openings of a refusal (\"I can't\", \"I cannot\", \"I'm unable\", \"I'm sorry\", \"I apologize\", \"Sorry,\"), and the streaming handler gained an `onRefusalFallbackBanner` slot that is still an empty stub. A retry check was narrowed at the same time: it now retries only when the failure reason is absent or is a full lane, rather than anything that was not a refusal.\n\n**Details**\n\n- An environment variable `CLAUDE_CODE_REFUSAL_FALLBACK_CATCH_ALL` sits in the environment map alongside this code; nothing in this build wires it to the banner slot.\n- With the banner unimplemented, the visible effect today is only the tighter retry rule.\n\n**Evidence**\n\n`onRefusalFallbackBanner`\n\n- Area: Model Handling\n- Tier: Nothing to try yet\n- Useful: 2\/5\n- Signal: 4\/5\n- Present in the build but not switched on"}