Thinking Modes & Extended Reasoning
Claude Code can show you its thinking process. For complex problems, it can engage extended reasoning—thinking deeply before responding. Understanding these modes helps you leverage Claude’s full problem-solving capability.
What Is Thinking?
Section titled “What Is Thinking?”When Claude works on a problem, it thinks through the solution internally. You can see this thinking process displayed in the interface:
<thinking>The user wants to add authentication. I need to consider:- Which auth method fits their stack?- What security requirements apply?- How does this integrate with existing code?</thinking>
Based on your Flask setup, I recommend JWT authentication...Why Thinking Matters
Section titled “Why Thinking Matters”Visible thinking helps you:
- Understand Claude’s reasoning - See why it chose an approach
- Catch misunderstandings early - Notice if Claude misread requirements
- Learn problem-solving patterns - Observe how to break down complex tasks
- Trust the output - Verify the logic behind suggestions
Normal vs Extended Thinking
Section titled “Normal vs Extended Thinking”Claude has two thinking modes:
| Mode | When Used | Characteristics |
|---|---|---|
| Normal | Most tasks | Quick, focused reasoning |
| Extended | Complex problems | Deep, multi-step reasoning |
Normal Thinking
Section titled “Normal Thinking”For standard tasks, Claude thinks briefly:
> add input validation to the login form
<thinking>Need to validate email format and password requirements.Check existing validation patterns in the codebase.</thinking>
I'll add validation to the login form...Extended Thinking (Ultrathink)
Section titled “Extended Thinking (Ultrathink)”For complex problems, Claude engages extended reasoning automatically:
> debug why the payment webhook fails intermittently
<thinking>This is a complex debugging task. Let me think through this systematically:
1. Intermittent failures suggest: - Race condition? - Network timeout? - Webhook signature validation timing out?
2. Need to check: - Webhook logs for patterns - Signature verification code - Database transaction handling
3. Common causes for Stripe webhooks: - Idempotency key issues - Database locks during high traffic - Signature timestamp expiry (5 min window)
Let me start by examining the webhook handler code...</thinking>
I'll investigate the webhook handler. Based on the symptoms...When Claude Uses Extended Reasoning
Section titled “When Claude Uses Extended Reasoning”Claude automatically engages extended reasoning for:
1. Complex Debugging
Section titled “1. Complex Debugging”> the authentication flow works locally but fails in production> users report intermittent login issues> no obvious errors in logsWhy extended thinking helps: Multi-variable problems require systematic elimination of possibilities.
2. Architecture Decisions
Section titled “2. Architecture Decisions”> should we use microservices or a monolith for this new feature?> consider: team size (4 devs), traffic (10k DAU), deployment complexityWhy extended thinking helps: Weighing tradeoffs requires considering multiple factors simultaneously.
3. Security Reviews
Section titled “3. Security Reviews”> review this authentication module for security vulnerabilities> focus on: injection attacks, session handling, cryptographic issuesWhy extended thinking helps: Security analysis requires thinking like an attacker, considering edge cases.
4. Performance Optimization
Section titled “4. Performance Optimization”> this endpoint is slow (p95: 2 seconds)> profile and suggest optimizationsWhy extended thinking helps: Performance issues often have multiple contributing factors requiring systematic analysis.
5. Refactoring Complex Systems
Section titled “5. Refactoring Complex Systems”> refactor the legacy order processing system to use event sourcing> maintain backward compatibility during transitionWhy extended thinking helps: Large refactors require understanding dependencies and planning migration paths.
Requesting Extended Reasoning
Section titled “Requesting Extended Reasoning”You can explicitly request deeper thinking:
> think carefully about the best approach for [problem]> before implementing, analyze all the edge cases> use extended reasoning to debug [complex issue]Keywords that trigger extended thinking:
- “think carefully”
- “analyze thoroughly”
- “consider all possibilities”
- “systematic analysis”
- “what are all the ways this could fail?”
Reading Thinking Output
Section titled “Reading Thinking Output”Structure of Extended Thinking
Section titled “Structure of Extended Thinking”<thinking>1. Problem analysis - What we know - What we don't know - Assumptions to verify
2. Possible approaches - Option A: [pros/cons] - Option B: [pros/cons]
3. Recommendation - Why this approach - Risks and mitigations</thinking>What to Look For
Section titled “What to Look For”Good signs:
- Breaks problem into components
- Considers multiple approaches
- Identifies assumptions
- Thinks about edge cases
Warning signs:
- Jumps to conclusions
- Ignores constraints you mentioned
- Missing obvious considerations
If thinking goes off track, interrupt:
> stop - your thinking is missing [important constraint]> reconsider with this additional context: [clarification]Impact on Performance & Cost
Section titled “Impact on Performance & Cost”Token Usage
Section titled “Token Usage”Extended thinking uses more tokens:
| Mode | Typical Token Cost | Example |
|---|---|---|
| Normal thinking | +100-300 tokens | Simple feature |
| Extended thinking | +500-2000 tokens | Complex debugging |
The thinking tokens count as input tokens in your usage.
Response Time
Section titled “Response Time”Extended reasoning takes longer:
- Normal: 2-10 seconds
- Extended: 10-30 seconds (or more for very complex problems)
Best Practices
Section titled “Best Practices”1. Let Claude Choose
Section titled “1. Let Claude Choose”For most tasks, let Claude decide whether to use extended reasoning:
# Good: Let Claude assess complexity> debug the payment processing issue
# Unnecessary: Forcing extended thinking for simple tasks> think deeply and carefully about adding this print statement2. Use for Decision Points
Section titled “2. Use for Decision Points”Request extended thinking when making important decisions:
> we need to choose between PostgreSQL and MongoDB for user data> think through the tradeoffs given our requirements: [list requirements]3. Interrupt Bad Reasoning
Section titled “3. Interrupt Bad Reasoning”If thinking goes wrong, stop it early:
> your analysis is missing the fact that we use Redis for caching> restart your thinking with that in mind4. Save Complex Thinking
Section titled “4. Save Complex Thinking”When Claude produces good analysis, save it:
> save this analysis to docs/architecture-decisions/auth-approach.mdFuture sessions can reference it without re-thinking.
Thinking vs Plan Mode
Section titled “Thinking vs Plan Mode”Thinking and plan mode serve different purposes:
| Feature | Thinking | Plan Mode |
|---|---|---|
| Purpose | Internal reasoning | User interaction |
| When | Always (visible or not) | When planning complex features |
| Output | Thinking blocks | Clarifying questions + plan |
| Your role | Observer | Participant (answer questions) |
They work together:
# Plan mode with extended thinking> [in plan mode] add a notification system
<thinking>Complex feature. Need to clarify:- Notification types (email, push, in-app)- Delivery mechanism- User preferences- Scale considerations</thinking>
[Claude uses AskUserQuestion tool to clarify]
<thinking>Based on answers:- Email + in-app notifications- Using SendGrid for email- Need: templates, queueing, user prefs</thinking>
Here's the implementation plan...Common Questions
Section titled “Common Questions””Can I disable thinking?”
Section titled “”Can I disable thinking?””You can’t disable thinking (it’s core to how Claude works), but you can request more concise responses:
> be concise, minimal explanation“Why doesn’t Claude always use extended reasoning?”
Section titled ““Why doesn’t Claude always use extended reasoning?””Extended reasoning is expensive (time + tokens). Claude uses it when the problem requires it. For simple tasks, normal thinking is sufficient and faster.
”Can I see thinking for past responses?”
Section titled “”Can I see thinking for past responses?””Thinking is shown during generation. If you missed it, you can ask:
> explain your reasoning for that last suggestion“Does thinking affect output quality?”
Section titled ““Does thinking affect output quality?””Yes—extended thinking improves quality for complex problems. Research shows LLMs perform better on hard tasks when they “think out loud.”
Examples by Task Type
Section titled “Examples by Task Type”Bug Investigation
Section titled “Bug Investigation”> the webhook endpoint returns 200 but payments aren't processed
<thinking>Intermittent issue. Possible causes:1. Race condition in payment processing2. Database transaction not committed3. Webhook processed but business logic fails silently4. Return 200 before async job completes
Need to check: logs, database, async job queue</thinking>Architecture Choice
Section titled “Architecture Choice”> should we use WebSockets or Server-Sent Events for real-time updates?
<thinking>Requirements: real-time updates to browser clients
WebSockets:- Pro: Bidirectional, widely supported- Con: More complex, requires connection management- Con: Harder to load balance
Server-Sent Events:- Pro: Simpler, auto-reconnect built-in- Pro: Works over standard HTTP- Con: One-way only (server → client)
Given the use case (server pushes updates, client doesn't need to send data):SSE is simpler and sufficient.</thinking>Code Review
Section titled “Code Review”> review this authentication code for security issues
<thinking>Security review checklist:1. Password storage: bcrypt/argon2? ✓2. Session handling: secure cookies?3. SQL injection: parameterized queries?4. Rate limiting on login?5. Password reset token expiry?
Checking each...</thinking>