Adaptive Thinking: Smarter Extended Thinking for Claude Opus and Sonnet
Learn how to use adaptive thinking with Claude Opus 4.7, Opus 4.6, Sonnet 4.6, and Mythos Preview. Includes code examples, effort levels, and migration tips.
Adaptive thinking lets Claude dynamically decide when and how much to use extended thinking per request. It replaces manual budget_tokens on Opus 4.7 and is recommended for Opus 4.6 and Sonnet 4.6. You control effort level, not token count.
Adaptive Thinking: Smarter Extended Thinking for Claude Opus and Sonnet
Extended thinking has been one of Claude’s most powerful capabilities—allowing the model to reason step-by-step before generating a final answer. But until now, you had to guess how many thinking tokens each request needed. Set the budget too low, and Claude runs out of room to reason. Set it too high, and you waste tokens and latency.
Adaptive thinking changes that. Instead of you manually setting abudget_tokens value, Claude decides when and how much to think based on the complexity of each request. It’s the recommended way to use extended thinking on Claude Opus 4.7, Opus 4.6, Sonnet 4.6, and the new Mythos Preview.
This guide covers everything you need to know: which models support it, how it works, how to migrate your code, and best practices for getting the most out of it.
---
What Is Adaptive Thinking?
Adaptive thinking is a new mode for extended thinking where Claude dynamically evaluates each request and decides whether to engage extended reasoning—and if so, how much. It replaces the old manual thinking: {type: "enabled", budget_tokens: N} approach on supported models.
Key characteristics:
- Claude decides the thinking budget, not you.
- Thinking is optional—at lower effort levels, Claude may skip thinking for simple requests.
- Interleaved thinking is automatic—Claude can think between tool calls, which is critical for agentic workflows.
- No beta header required—just set
thinking: {type: "adaptive"}.
Important: On Claude Opus 4.7, adaptive thinking is the only supported thinking mode. Sending thinking: {type: "enabled"} will return a 400 error.
---
Supported Models
| Model | Adaptive Thinking Support | Notes |
|---|---|---|
Claude Mythos Preview (claude-mythos-preview) | ✅ Default mode | Thinking auto-applies when unset; thinking: {type: "disabled"} is not supported |
Claude Opus 4.7 (claude-opus-4-7) | ✅ Only mode | Manual enabled is rejected (400 error) |
Claude Opus 4.6 (claude-opus-4-6) | ✅ Recommended | Manual enabled with budget_tokens is deprecated |
Claude Sonnet 4.6 (claude-sonnet-4-6) | ✅ Recommended | Manual enabled with budget_tokens is deprecated |
| Older models (Sonnet 4.5, Opus 4.5, etc.) | ❌ Not supported | Must use thinking: {type: "enabled"} with budget_tokens |
budget_tokens configurations still work—but Anthropic recommends migrating to adaptive thinking before they’re removed in a future release.
---
How Adaptive Thinking Works
When you set thinking: {type: "adaptive"}, Claude evaluates each request independently. The model considers:
- Complexity of the prompt – Is this a simple factual question or a multi-step reasoning problem?
- Required depth – Does the task need chain-of-thought, or can it be answered directly?
- Tool usage – If tools are involved, Claude may think between tool calls (interleaved thinking).
high), Claude almost always thinks. At lower effort levels, it may skip thinking for straightforward requests, saving tokens and reducing latency.
The effort Parameter
Adaptive thinking introduces an effort parameter that lets you control how aggressively Claude applies extended thinking:
| Effort Level | Behavior | Use Case |
|---|---|---|
low | Minimal thinking; skips for simple tasks | High-throughput, low-latency applications |
medium | Balanced approach | General-purpose use |
high (default) | Thinks on almost every request | Complex reasoning, agentic workflows |
{
"thinking": {
"type": "adaptive",
"effort": "medium"
}
}
---
How to Use Adaptive Thinking (Code Examples)
Python
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=16000,
thinking={
"type": "adaptive",
"effort": "high"
},
messages=[
{
"role": "user",
"content": "Explain why the sum of two even numbers is always even."
}
]
)
for block in response.content:
if block.type == "thinking":
print(f"\nThinking: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")
TypeScript
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
const response = await client.messages.create({
model: 'claude-opus-4-7',
max_tokens: 16000,
thinking: {
type: 'adaptive',
effort: 'high'
},
messages: [
{
role: 'user',
content: 'Explain why the sum of two even numbers is always even.'
}
]
});
for (const block of response.content) {
if (block.type === 'thinking') {
console.log(\nThinking: ${block.thinking});
} else if (block.type === 'text') {
console.log(\nResponse: ${block.text});
}
}
cURL
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-4-7",
"max_tokens": 16000,
"thinking": {
"type": "adaptive",
"effort": "high"
},
"messages": [
{
"role": "user",
"content": "Explain why the sum of two even numbers is always even."
}
]
}'
---
Migrating from Manual budget_tokens
If you’re currently using thinking: {type: "enabled", budget_tokens: N} on Opus 4.6 or Sonnet 4.6, here’s how to migrate:
Step 1: Change type to "adaptive"
Before (deprecated):
{
"thinking": {
"type": "enabled",
"budget_tokens": 8000
}
}
After (recommended):
{
"thinking": {
"type": "adaptive",
"effort": "high"
}
}
Step 2: Remove budget_tokens
The budget_tokens field is ignored (or rejected) in adaptive mode. Remove it entirely.
Step 3: Adjust effort based on your workload
- If you previously used a high
budget_tokensfor complex reasoning, useeffort: "high". - If you were optimizing for speed with a low budget, try
effort: "low"or"medium".
Step 4: Test and compare
Run your existing test suite with adaptive thinking. In many cases, you’ll see equal or better performance with less manual tuning.
---
Best Practices
1. Start with effort: "high"
For most applications, especially those requiring reliable reasoning, start with effort: "high". Claude will think on almost every request, giving you the best quality.
2. Lower effort for high-throughput tasks
If you’re building a chatbot or handling simple Q&A, try effort: "low" or "medium". Claude will skip thinking for trivial requests, reducing latency and token usage.
3. Use adaptive thinking with tools
Adaptive thinking automatically enables interleaved thinking—Claude can think between tool calls. This is a game-changer for agentic workflows where the model needs to reason about tool outputs before making the next call.
4. Monitor thinking blocks in responses
When you receive a response, check for type: "thinking" blocks. These contain Claude’s internal reasoning. You can log them for debugging or display them to users who want transparency.
5. Don’t mix adaptive and manual thinking on the same model
On Opus 4.7, you can’t—adaptive is the only option. On Opus 4.6 and Sonnet 4.6, pick one approach per request. Mixing isn’t supported.
---
Common Pitfalls
- Using
budget_tokenswith adaptive thinking – This will either be ignored or cause an error. Removebudget_tokenswhen usingtype: "adaptive". - Expecting deterministic thinking budgets – Adaptive thinking varies per request. If you need predictable latency, consider using
effort: "low"or falling back to manualbudget_tokenson Opus 4.6/Sonnet 4.6 (though deprecated). - Forgetting to update model names – Adaptive thinking only works on the models listed above. Double-check your model string.
Key Takeaways
- Adaptive thinking replaces manual
budget_tokenson Claude Opus 4.7, Opus 4.6, Sonnet 4.6, and Mythos Preview. Claude decides the thinking budget per request. - Use the
effortparameter to control how aggressively Claude applies extended thinking:low,medium, orhigh(default). - Interleaved thinking is automatic – Claude can reason between tool calls, making adaptive thinking ideal for agentic workflows.
- Migrate now if you’re on Opus 4.6 or Sonnet 4.6 – Manual
budget_tokensis deprecated and will be removed in a future release. - Start with
effort: "high"for complex tasks, and lower it for high-throughput or simple applications to save tokens and reduce latency.