The Four Effort Levels
Low
Lookups & mechanical edits
- Pure questions
- File lookups
- Typos / renames
- Add/remove imports
Keywords: "where is", "what is", "which file", "show me", "list", "find", "rename", "typo"
Medium
Standard work — the default
- New features
- Bug fixes
- Refactors
- Multi-file edits
Keywords: "implement", "add", "fix", "refactor", "update", "create"
High
Deep reasoning required
- Subtle bugs
- Data-flow traces
- Architecture design
- PR / security review
Keywords: "why is", "debug", "trace", "investigate", "design the", "architect", "audit"
Max
Full-depth, costly — use sparingly
- Full codebase audits
- Worst-case analysis
/code-review ultra
- Dynamic workflows
Keywords: "ultra", "all files", "comprehensive audit", "worst case", "full codebase"
Decision Tree — 3 Questions
1. What type of task is this?
Use the keyword table in section 1. If no strong signal → default to Medium.
Start here
2. How many files does this touch?
1 file → Low/Medium is fine.
2–5 files with cross-file logic → Medium minimum.
5+ files or architectural scope → High or Max.
Scale up
3. What's the cost of being wrong?
Dev/test/throwaway → cheaper is fine.
Production-facing → go higher.
Security, auth, payments → High minimum, always.
Stakes
Fast Mode — /fast
Use /fast when
- The task is purely mechanical
- Boilerplate, formatting, rename
- Speed matters more than depth
- You'd also use Low effort
Skip /fast when
- Subtle bugs or edge cases
- Cross-file logic
- Correctness matters
- You'd use Medium or above
Quick-Fire Examples
| Prompt |
Choice |
Why |
| "Where is the auth middleware?" |
Low /fast |
Pure lookup, single answer |
| "Fix this typo in the README" |
Low /fast |
1 line, zero risk |
| "Add a loading spinner to the dashboard" |
Medium |
Standard feature, 2–3 files |
| "Refactor the user profile component" |
Medium |
Multi-file but no deep reasoning |
| "Why is the JWT expiry check silently failing?" |
High |
Deep data-flow trace, subtle bug |
| "Review this PR before merge" |
High |
Correctness + security at stake |
| "Design the multi-tenant data model" |
Max |
Architecture, long-term consequences |
| "Comprehensive audit of all files" |
Max |
Full codebase — expect real cost |
Sub-Agent Model Routing
Haiku 4.5
Cheapest — fastest
- File search & grep
- Symbol lookup
- Explore agents (always)
- Boilerplate edits
- Quality checks on small diffs
Sonnet 4.6
Default — balanced
- Feature planning
- Multi-file edits
- Bug tracing
- Data-flow debugging
- Orchestration tasks
Opus 4.8
Premium — ~5× Sonnet cost
- Security reviews
- PR reviews
- Architecture decisions
- Significant trade-off analysis
- Explore agents → always Haiku. They only search; no reasoning needed.
- >2 files with cross-file logic → Sonnet minimum. Don't cheap out here.
- Opus only when explicitly needed. It's not 5× better, it's 5× more expensive for nuanced cases.
How the Auto-Routing Hook Works
The hook fires on every prompt before Claude generates a response. You don't need to think about this — it's automatic. But knowing how it works helps you tune it.
You type a prompt
→
effort-router.js runs
→
Matches keywords in effort-rules.json
→
Logs decision to effort-log.jsonl
→
Prints [effort-router] → high in terminal
→
Claude generates at that effort level
At session end, session-start.js scans the log for miscalibrations and appends suggestions to your .sessions/ summary. Review them, then manually edit effort-rules.json if you agree.
# To tune the rules yourself:
~/.claude/hooks/effort-rules.json
# To see what the hook decided on past prompts:
~/.claude/effort-log.jsonl
# To manually override for one session:
/effort low (or medium / high / max)
/fast (toggle fast mode)
The One Rule That Cuts Cost in Half
Before every prompt, ask: "Does this need deep reasoning — or just execution?"
Execution → Low /fast
Reasoning → Medium or higher
Most prompts are execution. Most developers default everything to High.
The gap between those two behaviours is where the cost savings live.