Feature: Auto-select model and effort level based on task complexity
Problem
Currently, users must manually switch model (/model) and effort level (/effort) depending on task complexity. This creates friction — either you default to a powerful model and waste tokens on simple questions, or default to a lighter model and manually switch for complex tasks.
Proposed Solution
Allow Claude Code to automatically select (or interactively prompt the user to select) the appropriate model and effort level based on the complexity of the user's input.
Possible approaches:
- Auto-select: Use a lightweight classifier (e.g., Haiku) to evaluate the user's prompt and automatically set the model/effort before the main model processes it.
- Interactive prompt: Before each task, briefly prompt the user with a recommended model/effort choice based on the input, allowing them to confirm or override.
- Programmatic API: Expose model/effort switching via hooks or settings so that
UserPromptSubmithooks can dynamically adjust them. For example:
``json``
{
"hooks": {
"UserPromptSubmit": [{
"type": "command",
"command": "classify-and-set-model.sh"
}]
}
}
Use Case
- Simple Q&A, formatting, renaming → Sonnet + low effort
- Daily feature development, bug fixes → Sonnet + medium effort
- Architecture design, complex refactoring → Opus + high effort
Users shouldn't need to remember to switch manually — the tool should help optimize token consumption automatically.
Context
In a Go project with extensive documentation (4,827 lines of standards), session history analysis shows that model selection is one of the highest-leverage optimizations for token cost (20-40% savings). Currently there's no way to automate this via hooks or any other mechanism.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗