Claude Adaptive Effort
Automatic reasoning effort for Claude Code. Claude Code thinks as hard as the task deserves: quick edits stay fast and cheap, hard bugs, architecture and critical changes get maximum effort — without touching the Effort slider.
Community extension, not affiliated with or endorsed by Anthropic.
Why
Claude Code's Effort slider (low, medium, high, xhigh, max) applies to the whole conversation. Left on max, every rename burns time and tokens; left low, hard problems get shallow answers. Claude Adaptive Effort moves the real effort level of the session, request by request — the same way the slider does.
Features
Per-request estimate: every message gets a level from its content (works in English and French).
| Request |
Level |
| "rename x to y", "what is…" |
low |
| everyday request |
medium |
| bug, error, test, refactor, performance, pasted stack trace |
high |
| architecture, concurrency, intermittent failure, security, algorithm |
xhigh |
| "ultrathink", "think hard", "max effort" |
max |
| short follow-up ("ok", "go on") |
unchanged |
Claude decides too: Claude can raise or lower its own effort with the effort-level skill — it applies from its very next step.
Escalation on evidence: after 3 consecutive failed checks (tests, builds, linters, type checks) the effort rises to xhigh, after 6 to max; when the failing check passes again, it goes back down.
Your slider is the ceiling: set it to Max to let the controller use the whole range, or lower to cap cost. Moving it applies to your next message.
Live panel: a gauge icon in the activity bar shows the current conversation's level, why, and its model, a min–max slider for the effort range (its stops follow the levels the current model supports), the options and the latest changes; the status bar shows the current level.
Works in every project, and adds a reasoning rule, a max-effort agent and hooks to Claude Code for sessions outside VS Code too.
Getting started
- Install Claude Adaptive Effort and click the gauge icon in the activity bar.
- Run Adaptive Effort: Install the controller (from the panel's
… menu or the Command Palette) and confirm.
- Open a new Claude Code conversation. The panel shows its effort level as you work.
Requirements: the Claude Code extension (2.1.139 or newer), Node.js 18+ on your PATH (checked during installation). On Windows, the C# compiler of .NET Framework 4, which ships with Windows 10 and 11.
Good to know: when a process wrapper is configured (claudeCode.claudeProcessWrapper), Claude Code starts in the "default" permission mode if none is chosen, and no longer checks for its own updates.
Recommended: pair it with the advisor
Switching models mid-conversation rarely pays off: prompt caches are per model, so every switch rewrites the whole conversation into the new model's cache, and the new model can't read the previous one's reasoning. Claude Code's built-in advisor gets you a stronger model where it matters instead: run a faster main model and let Claude consult a stronger one at key moments, without breaking the main model's cache.
{ "model": "sonnet", "advisorModel": "opus" }
(in ~/.claude/settings.json, or with /advisor opus). Claude Adaptive Effort keeps adjusting the effort of the main model, its rule tells Claude to consult the advisor only on hard work, and the max-effort agent runs on Opus. Each advisor call rereads the conversation uncached at the advisor's price — worth it at decision points, not on every message.
How it works
Claude Code's VS Code extension can launch Claude through a wrapper (claudeCode.claudeProcessWrapper). The installer points it at a small launcher that runs the effort controller, which relays the extension ↔ Claude traffic byte for byte and changes the effort with the same request the Effort slider sends. Its own requests' answers are kept out of the stream.
| Installed |
Location |
| Launcher and controller |
~/.claude/hooks/adaptive-effort/ |
| Reasoning rule |
~/.claude/rules/adaptive-effort.md |
effort-level skill |
~/.claude/skills/effort-level/ |
max-effort agent |
~/.claude/agents/max-effort.md |
| Hooks |
~/.claude/settings.json |
Configuration
In VS Code, everything is in the panel (the range slider, switches and advisor menu), and also under Settings › Extensions › Claude Adaptive Effort:
| Option |
Default |
Effect |
| Automatic effort |
on |
Off: new conversations run at the Effort slider level, untouched |
| Lowest effort |
low |
The controller never goes below it |
| Highest effort |
max |
The controller never goes above it (nor above the Effort slider) |
| Sync the effort pill |
on |
Claude Code's own effort pill shows the level actually in use |
| Advisor |
off |
A stronger model Claude consults at key moments (Claude Code's advisorModel) |
Changes apply to new and reopened conversations. If Claude Code ever refuses the controller's effort changes (for instance after an update that changed its internals), the panel shows a warning — Claude itself keeps working.
Without VS Code, the same options live in ~/.claude/hooks/adaptive-effort/config.json (with VS Code, the settings you change there win over hand edits of this file):
{ "enabled": true, "floor": "low", "ceiling": "max", "syncUi": true }
enabled: false lets every conversation run untouched. syncUi makes Claude Code's own effort picker show the level actually in use (on by default; set it to false if your Claude Code version misbehaves with it).
Safety
- Claude always starts: if Node, the controller or its configuration is missing or fails, the launcher starts Claude directly.
- Before pointing Claude Code at the launcher, the installer runs it once to make sure it works (antivirus, application control).
- Uninstalling (the command, or removing the extension) removes the setting first, then the files, and restores the settings files to their original content. The tiny launcher stays and simply starts Claude, so a setting left in another VS Code profile can never break Claude Code.
- An existing
claudeProcessWrapper from another tool is never replaced.
- State lives in a per-user folder (never a shared
/tmp), and what the controller publishes is validated before it reaches Claude.
Troubleshooting
- Controller log:
%TEMP%\claude-adaptive-effort\controller.log on Windows (your user temp folder on macOS; $XDG_RUNTIME_DIR or ~/.cache on Linux) — one line per level change, with its reason. The panel's log button opens it.
- No level shown: the conversation was opened before the installation — close and reopen it.
- "Launcher not found": click it to reinstall, or remove the setting.
Command line (without the extension)
node install.js # install everything (idempotent)
node install.js --no-controller # rule, agent and skill only
node install.js --no-vscode # don't touch VS Code's settings.json
node install.js --uninstall # remove everything
Limitations
- Relies on two internal mechanisms of the Claude Code extension (the
claudeProcessWrapper setting and the request the Effort slider sends). A Claude Code update may change them; Claude then simply starts without effort control.
- Subagents keep their own effort; the
max-effort agent always runs at max.
- The request estimate is keyword-based; Claude corrects it with the
effort-level skill.
- Tested on Windows with Claude Code 2.1.289; macOS and Linux are supported but less tested.
License
MIT