Summary
In the Claude desktop app (Code tab), scheduled tasks ("routines") whose model is left on Default ignore the model set in ~/.claude/settings.json and instead silently track the last-used interactive session model — including its effort level. After one interactive Fable 5 session, every routine on the account launches on claude-fable-5 at high effort instead of the configured claude-opus-5-5[1m], roughly doubling (or more) the usage of every scheduled run. This value persists across full app restarts and is stored nowhere on disk that we could find, so there is no user-controllable default for routines.
This behavior began with the desktop app update installed 2026-10-06 ~07:58 CT. Before that update, routine session records carried the exact settings.json string (claude-opus-5-5[1m] — alias suffix included), proving routines then read settings.json. After it, the suffix disappeared and the model began following last use.
Environment
- Claude desktop app (Code tab), Windows 11 Pro 10.0.26200
- App auto-updated 2026-10-06, re-verified current + restarted 2026-10-07 before final repro
~/.claude/settings.json: "model": "claude-opus-5-5[1m]" (unchanged throughout)
- Scheduled tasks created via the scheduled-tasks MCP (no model parameter exists there) and via the app UI
Evidence (from the app's own session records: %APPDATA%\Claude\claude-code-sessions\...\local_<id>.json, fields model / effort / effortInherited)
| Created (UTC) |
Session |
model |
effort |
| Oct 4 12:24 |
routine |
claude-opus-5-5[1m] |
medium |
| Oct 6 12:53 |
routine |
claude-opus-5-5[1m] |
medium |
| Oct 6 13:08 |
routine (first run after app update) |
claude-opus-5-5 (suffix gone) |
medium |
| Oct 6 13:56 |
interactive |
claude-opus-5-5 |
high |
| Oct 7 04:20 |
interactive |
claude-fable-5 |
high |
| Oct 7 12:24 |
routine |
claude-fable-5 |
high |
| Oct 7 19:12 |
no-op probe routine (after settings.json re-pinned AND /model claude-opus-5-5 run in a session) |
claude-fable-5 |
high |
| Oct 7 19:44 |
no-op probe routine, model "Default" |
claude-fable-5 |
high |
| Oct 7 19:45 |
same probe with Opus 5.5 picked in the routine's Edit form |
claude-opus-5-5 |
medium |
| Oct 7 ~20:1x |
fresh probe created AFTER app re-update + full restart, model "Default" |
claude-fable-5 |
high |
All routine records show effortInherited: true.
What we ruled out
- Not settings.json: pinned to
claude-opus-5-5[1m] the whole time; probes still launched Fable.
- Not the most-recently-created session: a Sonnet-pinned session was created minutes before a Default probe; the probe still launched Fable (it tracks the interactive/composer model, not session creation).
- Not stale in-memory state: survives a full app quit/restart, twice.
- Not stored locally: a byte-level scan of
%APPDATA%\Claude (Local Storage leveldb decoded, IndexedDB, session stores, .claude.json, task folders) found no per-task model field and no composer-remembered model key. All 22 task folders contain only SKILL.md. The per-task model picked in the Edit form is apparently server-side.
Expected
Either (a) routines honor the settings.json model/effort cascade like other sessions (pre-Oct-6 behavior), or (b) there is a user-visible, documented default-model control for scheduled tasks. The current behavior — an undocumented "Default" that follows whatever model the user last ran interactively — makes scheduled-run costs unpredictable: one late-night Fable session silently converts every daily/weekly/monthly routine to Fable-at-high until the next interactive session.
Workaround we found (confirming the per-task pin works)
Setting the model explicitly in each routine's Edit form pins that routine durably (claude-opus-5-5, effort inheriting the model's default medium) even while interactive Fable sessions run. But it must be clicked per routine, new routines default to the broken "Default", and the scheduled-tasks MCP exposes no model parameter, so it cannot be automated.
Docs gap
https://code.claude.com/docs/en/desktop-scheduled-tasks does not document how a task's model or effort is resolved when left on Default, and no changelog entry describes the Oct-6 behavior change.
Summary
In the Claude desktop app (Code tab), scheduled tasks ("routines") whose model is left on Default ignore the
modelset in~/.claude/settings.jsonand instead silently track the last-used interactive session model — including its effort level. After one interactive Fable 5 session, every routine on the account launches onclaude-fable-5at high effort instead of the configuredclaude-opus-5-5[1m], roughly doubling (or more) the usage of every scheduled run. This value persists across full app restarts and is stored nowhere on disk that we could find, so there is no user-controllable default for routines.This behavior began with the desktop app update installed 2026-10-06 ~07:58 CT. Before that update, routine session records carried the exact settings.json string (
claude-opus-5-5[1m]— alias suffix included), proving routines then read settings.json. After it, the suffix disappeared and the model began following last use.Environment
~/.claude/settings.json:"model": "claude-opus-5-5[1m]"(unchanged throughout)Evidence (from the app's own session records:
%APPDATA%\Claude\claude-code-sessions\...\local_<id>.json, fieldsmodel/effort/effortInherited)/model claude-opus-5-5run in a session)All routine records show
effortInherited: true.What we ruled out
claude-opus-5-5[1m]the whole time; probes still launched Fable.%APPDATA%\Claude(Local Storage leveldb decoded, IndexedDB, session stores,.claude.json, task folders) found no per-task model field and no composer-remembered model key. All 22 task folders contain only SKILL.md. The per-task model picked in the Edit form is apparently server-side.Expected
Either (a) routines honor the settings.json
model/effort cascade like other sessions (pre-Oct-6 behavior), or (b) there is a user-visible, documented default-model control for scheduled tasks. The current behavior — an undocumented "Default" that follows whatever model the user last ran interactively — makes scheduled-run costs unpredictable: one late-night Fable session silently converts every daily/weekly/monthly routine to Fable-at-high until the next interactive session.Workaround we found (confirming the per-task pin works)
Setting the model explicitly in each routine's Edit form pins that routine durably (
claude-opus-5-5, effort inheriting the model's default medium) even while interactive Fable sessions run. But it must be clicked per routine, new routines default to the broken "Default", and the scheduled-tasks MCP exposes no model parameter, so it cannot be automated.Docs gap
https://code.claude.com/docs/en/desktop-scheduled-tasks does not document how a task's model or effort is resolved when left on Default, and no changelog entry describes the Oct-6 behavior change.