A Claude Code mod that lets you pick the model
with one keypress the moment a session opens. No more typing /model.
Model: claude-fable-5-1. Press a digit to switch.
1: Fable 2: Opus 3: Sonnet 4: Haiku 5: GLM-5.3 Flash Beta 6: GLM-5.3 744B 0: Keep
(The last two: the model rows another mod — intility-inference — keeps in the settings file. See Customise.)
Press a digit on the empty prompt and the mod runs /model <alias> for you.
Press 0 to keep what you have. The band goes away either way.
At the prompt of a terminal session:
/plugin install model-picker --marketplace alfredtm/claude-model-picker
Answer y to add the marketplace, then pick a scope (user is the usual one).
The mod is active right away and in every session after.
- The band appears above the prompt on every interactive start.
1to4switch the model.0keeps the current one./pick-modelbrings the band back later in the session.
Headless runs (claude -p) never show it.
Set a model the mod switches to on every interactive start, before you press anything. Handy when something else (managed settings, say) resets the model between sessions.
Open /config, find Default model under model-picker and enter whatever
/model accepts: opus, sonnet, a full id like claude-opus-5-5. Or put it
in ~/.claude/settings.json by hand:
{
"pluginConfigs": {
"model-picker@alfredtm": {
"options": { "defaultModel": "opus" }
}
}
}(The key is the plugin's name as claude plugin list prints it; a
--plugin-dir checkout is plain model-picker.)
The band still shows, with the default marked, so a digit overrides it for the session. Leave the option empty to keep whatever the session opened on.
Beside the four built-ins, the band carries every model row in the user
settings.json's modelPicker.options — the same rows /model shows,
so whatever keeps them there rides the band with a digit of its own: a
hand-edited lineup, or a mod that maintains one (intility-inference
writes its GLM models there, and they appear beside the Claude models).
replaceBuiltInOptions: true shows the rows alone. The rows are read
when a session opens and when /pick-model is run, from the user
settings file only, and the band stops at nine choices — 0 keeps —
because the digits run out.
The built-ins themselves live in one list at the top of
hooks/choices.ts:
export const BUILT_INS: Choice[] = [
{ hotkey: '1', label: 'Fable', value: 'fable' },
...
]value is whatever /model accepts: an alias like opus or a full model id.
Run it from a checkout without installing:
claude --plugin-dir /path/to/claude-model-picker
Edits to the hooks module hot-reload in that session. Check and test with:
claude plugin validate .
claude plugin test .
After the mod has loaded once, tsc -p . type-checks it against the
declarations Claude Code lays down in .claude-plugin/types/.
MIT