Move off manual thinking budgets before they start 400ing.
1. Detect the failure mode. If a request fails with a 400 whose message starts with "thinking.type.enabled" is not supported, your model uses adaptive thinking and rejects the manual budget. On Claude 4.6 models the manual parameter is deprecated but requests still succeed, so grep your code for budget_tokens now instead of waiting for the error.
2. Remove thinking.type enabled and budget_tokens from requests. Adaptive thinking manages the reasoning effort itself; the manual budget parameter does not exist on newer models. Delete it from request builders, SDK wrappers, and config files, do not just comment it out.
3. Check where thinking blocks flow through your code. If your app stores or replays thinking blocks (multi-turn chats, context editing), confirm the new blocks still round-trip correctly. Thinking block clearing strategies from the context editing guide still apply, but test them against the new format.
4. Re-run reasoning-dependent evals. Prompts that relied on a large manual budget may behave differently under adaptive thinking. Run your eval suite with the manual budget (old code, old model) and adaptive (new code, new model) and compare the reasoning-quality criteria specifically.
5. Update docs and runbooks. Any internal doc that says "set budget_tokens to N" is now wrong for current models. Rewrite it to describe the adaptive behavior and where to look if a request 400s on thinking parameters.
6. Keep one code path. Do not branch on model version to send manual budgets to old models and nothing to new ones: pin current models and use the adaptive path everywhere. Version branches in request construction are a future outage.