CLAUDE LABJP
FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as OctoberFORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Articles/Claude Code
Claude Code/2026-05-05Advanced

Using Extended Thinking with Claude Code in 2026: A

A practical guide to using Claude 4's Extended Thinking feature with the Claude Code CLI and API. Learn how to set thinking budgets, handle streaming, and use it where it actually helps in production.

Extended Thinking3Claude Code197Claude 4API27reasoning3

Understanding why an AI reached a conclusion changes how much you trust it.

Extended Thinking, introduced with Claude 4, surfaces the model's internal reasoning process as part of the response. Before diving into "how to enable it," it's worth understanding when it actually helps — because using it indiscriminately adds cost without proportional benefit.

What Extended Thinking Changes

A standard Claude API response returns only the final answer. With Extended Thinking enabled, the response includes a thinking block before the text — the model's reasoning trace as it worked toward its conclusion.

This isn't cosmetic. The act of explicit reasoning genuinely improves performance on complex tasks: mathematical problems, multi-criteria code reviews, conflicting requirements analysis. The model does better work when it can think before it answers.

The tradeoff is tokens. The budget_tokens setting controls how much the model can think, and that directly affects cost. Thoughtful budget configuration is as important as the feature itself.

Basic Implementation

import anthropic
 
client = anthropic.Anthropic()
 
response = client.messages.create(
    model="claude-opus-4-6",  # Available on Opus 4 and Sonnet 4
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000  # Max tokens the model can spend on reasoning
    },
    messages=[{
        "role": "user",
        "content": "Identify all security vulnerabilities in this code:\n\n```python\ndef authenticate(username, password):\n    query = f'SELECT * FROM users WHERE name={username} AND pass={password}'\n    return db.execute(query)\n```"
    }]
)
 
# Separate thinking from text blocks
for block in response.content:
    if block.type == "thinking":
        print("=== Reasoning Process ===")
        print(block.thinking)
        print()
    elif block.type == "text":
        print("=== Response ===")
        print(block.text)

Keep budget_tokens within max_tokens. In this example, max_tokens=16000 with budget_tokens=10000 allocates up to 10K tokens for thinking and 6K for the actual response.

Streaming Extended Thinking

For tasks where the thinking phase is long, streaming lets you surface the reasoning process in real time.

import anthropic
 
client = anthropic.Anthropic()
 
with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=8000,
    thinking={
        "type": "enabled",
        "budget_tokens": 5000
    },
    messages=[{
        "role": "user",
        "content": "Design an optimal database schema for these requirements: [details]"
    }]
) as stream:
    current_block_type = None
    
    for event in stream:
        if hasattr(event, 'type') and event.type == 'content_block_start':
            if hasattr(event.content_block, 'type'):
                current_block_type = event.content_block.type
                if current_block_type == 'thinking':
                    print("\n[Thinking...]", flush=True)
                elif current_block_type == 'text':
                    print("\n[Response]", flush=True)
        
        elif hasattr(event, 'type') and event.type == 'content_block_delta':
            if hasattr(event.delta, 'thinking'):
                print(event.delta.thinking, end='', flush=True)
            elif hasattr(event.delta, 'text'):
                print(event.delta.text, end='', flush=True)

Streaming the thinking block makes a useful UX pattern: showing users that "Claude is working through this" reduces abandonment on slow tasks and sets appropriate expectations.

Setting budget_tokens Appropriately

More tokens doesn't automatically mean better answers. Match the budget to task complexity:

  • 1,000–3,000 tokens: Simple clarifications, short code fixes
  • 5,000–10,000 tokens: Mid-complexity design decisions, requirements organization
  • 15,000–30,000 tokens: Large system architecture, complex mathematical proofs

Setting an excessively high budget doesn't cause the model to think more than needed — it will use what the problem requires. But it does raise the ceiling on potential cost, so keep budgets proportional to the task.

Where Extended Thinking Earns Its Cost in Production

Pre-release code review

When the question is "should we ship this?" — not just finding bugs but evaluating design decisions, extensibility concerns, and hidden assumptions — Extended Thinking produces substantially richer reasoning. Reading the thinking block often surfaces issues the final answer only mentions in passing.

Competing requirements reconciliation

When stakeholders have conflicting needs, Extended Thinking makes the model's trade-off reasoning visible. That transparency can shorten team debates about which path to take.

Algorithm selection

"Which approach fits this constraint set?" benefits from visible reasoning. Seeing why the model rejected alternatives is often more valuable than the recommendation itself.

For related context on model selection and cost management with Claude Code, see the model selection strategy guide and the token usage optimization guide.

One Important Constraint: Thinking Blocks and Caching

As of 2026, thinking block content is not eligible for prompt caching. Passing thinking blocks across multiple turns in a conversation is technically possible, but caching won't apply, so costs scale up quickly.

The practical implication: Extended Thinking works best on single-turn, self-contained tasks. For conversational workflows, use standard mode and reserve Extended Thinking for the moments where reasoning visibility genuinely matters.

A Good First Experiment

Take the most complex code review in your current codebase and run it through Opus 4 with Extended Thinking enabled. Read the thinking block, not just the response. The reasoning trace alone — seeing how the model weighed different concerns — tends to surface a different kind of insight than the final answer. That's where the value of this feature becomes concrete.

Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

Claude Code2026-04-24
Claude Code Environment Variables — The Complete Practical Reference
A practitioner-focused reference for every Claude Code environment variable that actually matters. Covers API connectivity, model selection, PowerShell tool quirks, logging, timeouts, security flags, and real-world templates for solo, team, and CI/CD setups.
Claude Code2026-07-18
Branch with /fork, Delegate with /subtask — Two Commands That Traded Jobs
In Claude Code 2.1.212, /fork now clones your conversation into a background session, and in-session subagents moved to /subtask. Here is how I decide between them, and the budgets worth setting before you start branching freely.
Claude Code2026-07-18
The MCP Server I Declared Vanished from the List — Designing Config for a Namespace You Share with the Vendor
When a vendor reserves an MCP server name, your .mcp.json declaration goes quiet instead of failing. Here is the preflight check and prefix convention I use to turn that silent gap into a loud stop before an unattended run.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →