{"version":"2.1.288","anchor":"launch-model-drop-on-refusal","canonical_anchor":"launch-model-drop-on-refusal","heading":"Refused launch model is dropped in print and SDK sessions","tier":"notice","area":"SDK","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.288\/e\/launch-model-drop-on-refusal","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.288","markdown":"### Refused launch model is dropped in print and SDK sessions\n\nIn print\/SDK sessions, a launch model the server refuses is now discarded if no turn has been sent yet, and the drop is recorded\n\n**Unclear.** It is not clear which model the session uses instead once the refused one is dropped.\n\n**What**\n\nThe launch model is the model a session starts with. In print and SDK sessions, which run Claude Code without the interactive screen, a set-model call can fail because the server refuses that model (`serverRefusedModel`). A new step, `dropUnconfirmedLaunchModel`, now discards the refused launch model if no turn has been sent yet. A turn is one exchange with the model.\n\n- `dropUnconfirmedLaunchModel` discards the refused launch model when no turn has been sent.\n\n- When that happens, Claude Code records a usage event that notes the surface the request came from and the error code.\n\n- `refreshesClientDataOnSwitch` is removed.\n\n- A `clientDataFetches.clear()` reset call is added.\n\n**Why**\n\nThis affects which model a print or SDK session ends up using after the server turns down the model it was launched with. A refused launch model is no longer kept around once the server has said no, as long as no work has been sent yet.\n\n- Area: SDK\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: individual\n- Heads-up: no"}