[FEATURE] Named model presets: multiple /model picker entries with preset effort levels

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 3, 2026

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_

View original on GitHub ↗