Adaptive Thinking in Claude: Smarter, Dynamic Reasoning Without Manual Budgets
Learn how to use Claude's adaptive thinking mode to dynamically allocate reasoning effort, improve agentic workflows, and simplify your API calls.
Adaptive thinking lets Claude dynamically decide when and how much to use extended thinking based on request complexity, replacing manual token budgets. It's the default on Claude Opus 4.7 and Mythos Preview, and supports interleaved thinking for tool calls.
Introduction
Extended thinking has been one of Claude's most powerful features, allowing the model to reason step-by-step before producing a final answer. But until recently, you had to manually set a budget_tokens value — essentially guessing how much thinking each request would need. Too low, and Claude might cut off reasoning mid-stream. Too high, and you waste tokens and latency.
Enter adaptive thinking. This new mode flips the script: instead of you setting a fixed thinking budget, Claude itself decides when and how much to think, based on the complexity of each individual request. The result is smarter token usage, better performance on mixed workloads, and simpler code.
In this guide, you'll learn exactly how adaptive thinking works, which models support it, how to use it in your API calls, and when to pair it with the effort parameter for fine-grained control.
What Is Adaptive Thinking?
Adaptive thinking is the recommended way to use extended thinking with Claude Opus 4.7, Claude Opus 4.6, and Claude Sonnet 4.6. It is also the default mode on Claude Mythos Preview, where it auto-applies whenever thinking is unset.
Instead of requiring you to specify thinking: {type: "enabled", budget_tokens: N}, adaptive thinking uses thinking: {type: "adaptive"}. Claude then evaluates each request and dynamically allocates thinking tokens as needed.
Key benefits:
- No more guesswork — you don't need to estimate thinking budgets per task.
- Better performance on bimodal tasks — simple questions get less thinking; complex ones get more.
- Interleaved thinking — Claude can think between tool calls, making it ideal for agentic workflows.
- Zero Data Retention (ZDR) eligible — data sent through this feature is not stored after the API response is returned.
Important: On Claude Opus 4.7, adaptive thinking is the only supported thinking mode. Manual thinking: {type: "enabled", budget_tokens: N} is rejected with a 400 error. On Opus 4.6 and Sonnet 4.6, manual budgets are deprecated and will be removed in a future release.
Supported Models
| Model | Adaptive Thinking Support | Notes |
|---|---|---|
Claude Mythos Preview (claude-mythos-preview) | Default | Thinking auto-applies; thinking: {type: "disabled"} not supported |
Claude Opus 4.7 (claude-opus-4-7) | Only mode | Manual budgets rejected with 400 error |
Claude Opus 4.6 (claude-opus-4-6) | Supported | Manual budgets deprecated |
Claude Sonnet 4.6 (claude-sonnet-4-6) | Supported | Manual budgets deprecated |
| Older models (Sonnet 4.5, Opus 4.5, etc.) | Not supported | Must use thinking.type: "enabled" with budget_tokens |
How Adaptive Thinking Works
In adaptive mode, thinking is optional for the model. Claude evaluates the complexity of each request and determines:
- Whether to use extended thinking at all
- How much thinking to allocate
high), Claude almost always thinks. At lower effort levels, Claude may skip thinking for simpler problems — saving tokens and reducing latency.
Adaptive thinking also automatically enables interleaved thinking. This means Claude can think between tool calls, making it especially effective for agentic workflows where the model needs to reason about tool results before deciding the next action.
How to Use Adaptive Thinking
Basic Usage
Set thinking.type to "adaptive" in your API request. No budget_tokens needed.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=16000,
thinking={"type": "adaptive"},
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 Example
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' },
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});
}
}
Adaptive Thinking with the Effort Parameter
You can combine adaptive thinking with the effort parameter to guide how much thinking Claude does. The effort level acts as soft guidance — Claude will try to respect your preference but may still deviate based on the request.
Effort Levels
| Effort | Behavior | Use Case |
|---|---|---|
low | Minimal thinking; may skip for simple tasks | High-throughput, low-latency scenarios |
medium | Balanced thinking allocation | General-purpose workloads |
high | Maximum thinking; Claude almost always thinks | Complex reasoning, math, coding |
Example with Effort
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=16000,
thinking={
"type": "adaptive",
"effort": "medium"
},
messages=[
{
"role": "user",
"content": "Design a distributed rate limiter with Redis and explain your reasoning."
}
]
)
When to Use Adaptive Thinking vs. Manual Budgets
| Scenario | Recommendation |
|---|---|
| Bimodal workloads (simple + complex requests) | Adaptive thinking — let Claude decide |
| Agentic workflows with many tool calls | Adaptive thinking — interleaved thinking is automatic |
| Predictable latency requirements | Manual budgets on Opus 4.6/Sonnet 4.6 (deprecated but functional) |
| Strict cost control per request | Manual budgets on Opus 4.6/Sonnet 4.6 (deprecated but functional) |
| Claude Opus 4.7 or Mythos Preview | Adaptive thinking only — no other option |
| Older models (Sonnet 4.5, Opus 4.5) | Manual budgets required |
Migration Guide: From Manual Budgets to Adaptive
If you're currently using thinking: {type: "enabled", budget_tokens: 8000}, here's how to migrate:
- Identify your models — Check which Claude models you're using. Opus 4.6 and Sonnet 4.6 support both modes.
- Replace the thinking block — Change
{type: "enabled", budget_tokens: N}to{type: "adaptive"}. - Optionally add effort — If you had a specific budget, map it roughly: small budgets →
low, medium →medium, large →high. - Test and monitor — Compare response quality and token usage. Adaptive thinking often uses fewer tokens overall.
- Update model strings — If you're still on older models, consider upgrading to Opus 4.6+ for adaptive support.
Best Practices
- Start with
effort: "high"for complex reasoning tasks like math proofs, code generation, or multi-step planning. - Use
effort: "low"for high-throughput scenarios like simple classification or extraction tasks where thinking adds little value. - Combine with tool use — Adaptive thinking's interleaved mode shines when Claude needs to reason between tool calls.
- Monitor token usage — Adaptive thinking can reduce total tokens on bimodal workloads, but individual complex requests may use more than your old budget.
- Avoid mixing with
thinking: {type: "disabled"}on Mythos Preview — it's not supported and will cause errors.
Limitations and Caveats
- Not supported on older models — Sonnet 4.5, Opus 4.5, and earlier require manual budgets.
- No strict latency guarantees — Because Claude decides how much to think, response times can vary more than with a fixed budget.
- Effort is soft guidance — Claude may override your effort preference if the request demands more or less thinking.
- Manual budgets deprecated — On Opus 4.6 and Sonnet 4.6,
thinking.type: "enabled"withbudget_tokensstill works but will be removed in a future release. Plan to migrate.
Key Takeaways
- Adaptive thinking eliminates manual token budgets — Claude dynamically decides how much to think based on request complexity, simplifying your API calls.
- It's the only mode on Claude Opus 4.7 and the default on Mythos Preview; manual budgets are deprecated on Opus 4.6 and Sonnet 4.6.
- Interleaved thinking is automatic — Claude can reason between tool calls, making adaptive thinking ideal for agentic workflows.
- Use the
effortparameter to guide thinking allocation:lowfor speed,highfor deep reasoning,mediumfor balance. - Migrate now if you're using manual budgets on Opus 4.6 or Sonnet 4.6 — support will be removed in a future release.