BeClaude
Guide2026-04-25

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.

Quick Answer

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 thinkingextended thinkingClaude Opus 4.7Claude Sonnet 4.6API guide

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 a budget_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

ModelAdaptive Thinking SupportNotes
Claude Mythos Preview (claude-mythos-preview)✅ Default modeThinking auto-applies when unset; thinking: {type: "disabled"} is not supported
Claude Opus 4.7 (claude-opus-4-7)✅ Only modeManual enabled is rejected (400 error)
Claude Opus 4.6 (claude-opus-4-6)✅ RecommendedManual enabled with budget_tokens is deprecated
Claude Sonnet 4.6 (claude-sonnet-4-6)✅ RecommendedManual enabled with budget_tokens is deprecated
Older models (Sonnet 4.5, Opus 4.5, etc.)❌ Not supportedMust use thinking: {type: "enabled"} with budget_tokens
If you’re using Opus 4.6 or Sonnet 4.6, your existing 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).
At the default effort level (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 LevelBehaviorUse Case
lowMinimal thinking; skips for simple tasksHigh-throughput, low-latency applications
mediumBalanced approachGeneral-purpose use
high (default)Thinks on almost every requestComplex reasoning, agentic workflows
You can set effort like this:
{
  "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_tokens for complex reasoning, use effort: "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_tokens with adaptive thinking – This will either be ignored or cause an error. Remove budget_tokens when using type: "adaptive".
  • Expecting deterministic thinking budgets – Adaptive thinking varies per request. If you need predictable latency, consider using effort: "low" or falling back to manual budget_tokens on 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_tokens on Claude Opus 4.7, Opus 4.6, Sonnet 4.6, and Mythos Preview. Claude decides the thinking budget per request.
  • Use the effort parameter to control how aggressively Claude applies extended thinking: low, medium, or high (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_tokens is 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.