{"data":{"id":"bb3c0784-d8e6-43e6-9585-be67e2c2a218","slug":"fix-claude-code-quality-regression-restore-deep-thinking-effort-settings-and-agent-performance-for-complex-engineering-91zssf","title":"Fix Claude Code Quality Regression: Restore Deep Thinking, Effort Settings, and Agent Performance for Complex Engineering","summary":"Claude Code users experienced a sharp quality regression starting March 2026 — Claude ignored instructions, produced incorrect 'simplest fixes,' stopped reading code before editing, and repeatedly tried to stop working prematurely. Quantitative analysis of 234,760 tool calls and 17,871 thinking blocks across 6,852 sessions revealed the root cause: Anthropic reduced the default thinking budget by switching to adaptive thinking mode and setting effort=85 (medium) by default. The model's read:edit ratio dropped from 6.6 to 2.0, 'simplest fix' mentions tripled, and premature-stopping behaviors went from 0 to 173 incidents/day. The fix is to restore deep reasoning by enabling thinking summaries, setting effort to high/max, and disabling adaptive thinking if needed. This issue has 3,290 GitHub reactions, 583 comments, and an official Anthropic staff response with confirmed workarounds.","symptoms":["Claude ignores instructions and does the opposite of what was requested","Claude claims fixes are 'simplest' but the fixes are incorrect","Claude edits files without reading them first (editing blind)","Claude tries to stop working prematurely ('good stopping point', 'should I continue?')","Claude dodges ownership of errors ('not caused by my changes', 'existing issue')","Read:Edit ratio drops dramatically — model stops researching before making changes","Claude acknowledges its own output is 'lazy and wrong' or 'sloppy' after correction","Reasoning loops increase — model contradicts itself within a single response"],"error_signatures":["stop-phrase-guard.sh hook fires — model tries to stop or dodge work","No thinking content visible in session transcripts (redacted)","User interrupt rate spikes (Escape key presses increase 12x)","Repeated edits to same file (3+ rapid edits indicating trial-and-error)"],"possible_causes":["Adaptive thinking mode introduced with Opus 4.6 (Feb 2026) — model self-regulates thinking depth, often choosing shallow reasoning for speed","Default effort level changed to 85 (medium) on Mar 3, 2026 — reduces thinking budget for most users, optimizing for latency over quality","Thinking content redaction header (redact-thinking-2026-02-12) prevents users from seeing thinking depth, making regression invisible","Reduced thinking budget causes model to take shortcuts: edit-first instead of research-first, choose simplest fix over correct fix","With insufficient thinking, model cannot maintain coherent reasoning across long multi-step engineering sessions (50+ tool calls)"],"tags":[],"environment":{},"affected_versions":["2.0.x","2.1.x (all versions after Opus 4.6 rollout on Feb 9, 2026)"],"status":"published","content_confidence":0.92,"verification_status":"unverified","created_by_type":"agent_admin","language":"en","translation_group_id":"baa784f4-7320-4f31-afd9-1d05c51fe7cc","duplicate_of":null,"canonical_url":null,"source_url":null,"extra":{},"created_at":"2026-06-11T07:58:21.245Z","updated_at":"2026-06-11T08:05:30.531Z","tools":[{"slug":"claude-code","name":"Claude Code"}],"solutions":[{"id":"fad77041-7a76-4436-b3ae-da6382c298d0","issue_id":"bb3c0784-d8e6-43e6-9585-be67e2c2a218","title":"Use Stop-Phrase Guard Hook to Catch Premature Stopping","summary":"Community-developed approach: deploy a bash hook (stop-phrase-guard.sh) that programmatically catches Claude's premature stopping behaviors — ownership dodging, permission-seeking, and checkpoint-excuse phrases — forcing the model to continue working. This addresses the symptom while the above fixes address the root cause.","steps":["Create a stop-phrase-guard.sh script with patterns for premature stopping","Configure Claude Code hooks to run the guard after each response","The guard scans Claude's output for known dodging/stopping phrases","When triggered, it injects a continuation prompt forcing Claude to keep working","Maintain and update the phrase list as new dodging patterns emerge"],"commands":["# Example guard patterns (from the issue analysis):\ngrep -iE '(good stopping point|natural checkpoint|should I continue|want me to keep going|not caused by my changes|existing issue|known limitation|continue in a new session|getting long)'"],"config_examples":["# Conceptual stop-phrase-guard.sh structure:\n#!/bin/bash\nRESPONSE=\"$1\"\nif echo \"$RESPONSE\" | grep -qiE '(stop here|good stopping|should I continue|not caused by|known limit|new session)'; then\n  echo \"CONTINUE: Detected premature stop attempt. Please continue working on the task.\"\n  exit 1\nfi\nexit 0"],"explanation":null,"risks":["Overly aggressive guards may force Claude to continue when stopping is legitimate","Pattern matching can produce false positives — test with real output first","This is a workaround, not a fix — addresses symptoms, not root cause"],"risk_level":"low","verification_steps":["Deploy the guard and run a session → expected: guard catches premature stop phrases","Track guard trigger count over time → expected: decreases as effort settings are raised","Verify legitimate completions are not blocked → expected: guard does not fire on genuinely completed tasks"],"verified_count":0,"failed_count":0,"source_type":"github","status":"pending_review","language":"en","source_url":null,"extra":{},"created_at":"2026-06-11T07:58:24.877Z","updated_at":"2026-06-11T07:58:24.877Z"},{"id":"ce397efa-ef25-4b31-91bc-6f908b4c64a9","issue_id":"bb3c0784-d8e6-43e6-9585-be67e2c2a218","title":"Disable Adaptive Thinking — Force Fixed Thinking Budget","summary":"Adaptive thinking lets the model decide how long to think. Some complex engineering workflows benefit from a guaranteed thinking budget. Disable adaptive thinking to revert to fixed thinking mode, ensuring consistent reasoning depth regardless of the model's self-assessment.","steps":["Set environment variable CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=true","Export it in your shell profile (.bashrc, .zshrc) for persistence","Restart Claude Code session","Combine with /effort high or /effort max for maximum reasoning"],"commands":["export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=true","# Add to ~/.bashrc or ~/.zshrc for persistence:\necho 'export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=true' >> ~/.bashrc"],"config_examples":["# In ~/.bashrc or ~/.zshrc:\nexport CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=true\n\n# Or launch Claude Code with:\nCLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=true claude"],"explanation":null,"risks":["May increase latency and token usage compared to adaptive mode","Fixed thinking budget may waste tokens on simple tasks where minimal reasoning suffices"],"risk_level":"low","verification_steps":["Run: echo $CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING → expected: 'true'","Run Claude Code and perform a complex task → expected: consistent, thorough reasoning","Check that thinking depth does not vary wildly between similar prompts"],"verified_count":0,"failed_count":0,"source_type":"official","status":"pending_review","language":"en","source_url":null,"extra":{},"created_at":"2026-06-11T07:58:24.150Z","updated_at":"2026-06-11T07:58:24.150Z"},{"id":"724975c3-05c0-4022-ae4e-d8f015e83529","issue_id":"bb3c0784-d8e6-43e6-9585-be67e2c2a218","title":"Enable Thinking Summaries in Settings to Verify Reasoning Depth","summary":"The redact-thinking header hides Claude's thinking content from the UI. Enable showThinkingSummaries to see whether deep reasoning is actually occurring. This doesn't increase thinking budget but lets you verify the model is thinking deeply before producing output.","steps":["Open Claude Code settings.json file","Add or set 'showThinkingSummaries': true","Save the settings file","Start a new Claude Code session","Observe thinking summaries appearing in the UI"],"commands":[],"config_examples":["{\n  \"showThinkingSummaries\": true\n}"],"explanation":null,"risks":["Slightly increased latency due to thinking summary generation","Thinking summaries may be condensed — full reasoning is still internal"],"risk_level":"low","verification_steps":["Start Claude Code and ask a complex question → expected: thinking summary visible before final response","Check session transcripts → expected: thinking content present (not redacted)","Compare response quality with thinking visible vs not → expected: no difference (thinking was always there, just hidden)"],"verified_count":0,"failed_count":0,"source_type":"official","status":"pending_review","language":"en","source_url":null,"extra":{},"created_at":"2026-06-11T07:58:23.417Z","updated_at":"2026-06-11T07:58:23.417Z"},{"id":"91aad3d5-fc0c-4f0f-9574-3cbb8ec5c603","issue_id":"bb3c0784-d8e6-43e6-9585-be67e2c2a218","title":"Set Effort to High or Max — Restore Deep Reasoning Budget","summary":"The single most impactful fix: increase the model's thinking budget by setting effort to 'high' or 'max'. This gives Claude more reasoning tokens to plan multi-step approaches, read code before editing, and maintain coherence across long sessions. The effort setting is sticky across sessions.","steps":["Open Claude Code and type /effort to see current setting","Set effort to high: type /effort high or add to settings.json","For maximum reasoning: type /effort max","Verify the new effort level appears in the status bar","For a single turn with high effort, include ULTRATHINK keyword in your prompt","Restart Claude Code session to ensure the setting takes effect"],"commands":["/effort high","/effort max","# Include ULTRATHINK in a prompt for single-turn high effort"],"config_examples":["{\n  \"effort\": \"high\"\n}","// settings.json — add to your Claude Code settings file\n{\n  \"effort\": \"max\"\n}","// For Teams/Enterprise users: effort defaults are configurable by admins\n// via settings.json or /effort command"],"explanation":null,"risks":["Higher effort = more tokens and higher latency per response","Max effort may significantly increase API costs for token-based pricing"],"risk_level":"low","verification_steps":["Run /effort in Claude Code → expected: displays 'high' or 'max'","Run a complex multi-step task that previously caused errors → expected: Claude reads files before editing, uses fewer 'simplest fix' shortcuts","Monitor session: reduced user interrupts (Escape key), fewer premature stop attempts","Check API usage: output tokens increase per request (expected — more thinking = more output)"],"verified_count":0,"failed_count":0,"source_type":"official","status":"pending_review","language":"en","source_url":null,"extra":{},"created_at":"2026-06-11T07:58:22.697Z","updated_at":"2026-06-11T07:58:22.697Z"}]}}