# Extended thinking configuration: manual vs adaptive
1. On current models (Claude 4.7 and later, e.g. Claude Opus 5.5, Claude Sonnet 5, Claude Fable 5.1), use adaptive thinking: `thinking` set to `{"type": "enabled"}` with no budget. Do not send `budget_tokens`.
2. Extended thinking with an explicit budget is deprecated on the Claude 4.6 models (requests using it still succeed). On Claude 4.7 and later it is not supported: requests that include it are rejected with a 400 error.
3. If your code targets 4.6-era models and needs predictable latency or precise control over the thinking budget, manual mode remains the documented choice there. Gate it on the model, not on a global flag.
4. In manual mode, the budget must be less than `max_tokens`; the budget has to leave room for the final response. The one exception is interleaved thinking, where the budget can exceed `max_tokens` because the budget spans all thinking blocks within one assistant turn.
5. Extended thinking cannot be combined with `max_tokens` set to 0 (cache pre-warming), because the budget must be less than max_tokens.
6. When migrating to adaptive thinking, remove every budget reference from your request builders, prompts, and docs. A stale helper that injects it will 400 on every call to a new model.
Failure modes this prevents: 400s on every request after a model upgrade; copying a budget snippet from training data onto Sonnet 5; setting the budget above max_tokens and starving the final answer.