Disabled thinking rejected on Sonnet 5.5: use between_tools
The error
Sonnet 5.5 rejects thinking: {"type": "disabled"} with a 400 whose message names the replacement:
"thinking.type.disabled" is not supported for this model. Use "thinking.type.between_tools" for the lowest thinking setting, or "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
Sonnet 5 accepted the disabled form, so this is usually the first failure when a Sonnet 5 route that ran thinking-off is moved to Sonnet 5.5.
Which replacement to reach for first
The error offers two, and Anthropic's own guidance is to try them in the opposite order to how most
people read the message. First, adaptive thinking at low effort: at low effort the model skips
thinking on most simple requests and keeps it short on the rest. Measure time to first token at the
median and the tail on your own traffic, and compare quality. Only if that doesn't meet the latency
bar, send between_tools.
What between_tools does, and what it won't accept
It is the lowest thinking setting: no extended thinking, with the short notes the model writes
between tool calls returned as thinking blocks carrying their text. It has limits that are each a
400 when crossed. It works only at effort high or below — at xhigh or max the error reads
output_config.effort 'xhigh' is not supported when thinking is disabled on this model. It takes no
other field inside thinking, so display, budget_tokens and block_binding alongside it are
rejected. It does not allow a per-message effort change mid-conversation. And it exists on Sonnet 5.5
only.
Clean up the prompt as well
Remove any instruction telling the model not to think; with thinking at its lowest setting, such
rules make internal tags in the visible output more likely. Size max_tokens for any thinking as
well as the reply — on the adaptive route, thinking counts toward it even though its text isn't
returned — and pass thinking blocks, including the progress notes, back unchanged with the assistant
turn. If you took the adaptive route, read the response by block type rather than position: it can
begin with a thinking block whose text is empty under the default display setting.
Related
See between_tools is not supported for this model for the failure this setting causes when a request is re-sent to another model, and migrating: Sonnet 5 to Sonnet 5.5.
Verified 2026-09-30 against ClaudeHow facts module (src/data/facts/) — see /about/#accuracy.