[FEATURE] Named model presets: multiple /model picker entries with preset effort levels
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
I switch tiers many times a day depending on task weight — cheap model for mechanical
edits, top model at high effort for design and debugging work. Named presets make that
a single, unambiguous choice, and make the tiers shareable via project settings so a
team converges on the same vocabulary for "use the cheap one" vs "use the good one".
I dont want to remember benchmark results optimal combinations of model + effort, instead want them hardcoded when a new benchmark arrives.
Proposed Solution
What I want
A settings block defining multiple named model presets, each pairing a model with
an effort level, surfaced as selectable rows in the /model picker:
```json
{
"modelPresets": {
"tiny": { "model": "haiku", "effort": "low" },
"small": { "model": "sonnet", "effort": "medium" },
"medium": { "model": "opus", "effort": "medium" },
"top": { "model": "opus", "effort": "high" }
}
}
Selecting one sets both the model and the effort level, persistently for the
session — exactly as choosing a row in the picker does today for the model alone.
### Alternative Solutions
I went through the current options and each falls short in a specific way:
- /model picker + left/right arrows — does set model and effort together and
persists, which is the closest thing available. But the effort level isn't a
named, reviewable choice: I have to remember which arrow position corresponds to
the tier I want, for each model, every time.
- ANTHROPIC_CUSTOM_MODEL_OPTION — adds a custom picker entry, and its
companions (_NAME, _DESCRIPTION, _SUPPORTED_CAPABILITIES) come tantalisingly
close. But (a) only one custom entry is supported, and (b)
_SUPPORTED_CAPABILITIES only declares whether effort is available, not which
level to preset. So the picker-entry schema already carries display metadata and
capability flags — an effort field is the missing piece.
- modelOverrides — pure model-ID → provider-ID remapping. No effort, no
display name, one entry per model ID.
- effortLevel setting / CLAUDE_CODE_EFFORT_LEVEL — global and single-valued;
changing it in settings.json doesn't take effect until a new session.
- Skill model: / effort: frontmatter — supports both fields, but is
explicitly turn-scoped: "the override applies for the rest of the current turn and
is not saved to settings; the session model resumes on your next prompt." I want a
persistent switch, not a per-turn one.
- /model X then /effort Y — works and persists, but is two commands where the
conceptual action is one.
### Priority
High - Significant impact on productivity
### Feature Category
CLI commands and flags
### Use Case Example
_No response_
### Additional Context
_No response_