[BUG] Scheduled task ("routine") model setting silently reverts from Haiku to Sonnet between unattended cron runs

Status Open
Maintainer reply None cached
Activity 0 comments · opened Oct 6, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Summary

After setting a scheduled task's model to Haiku 4.5 via the routine's detail panel in the Claude desktop app (Mac), the model silently reverts to Sonnet 5.5 at some point during a stretch of fully unattended, automatically-triggered (cron) runs — with no manual action (no UI interaction, no API call, no "Run now") involved at all. This has happened repeatedly across more than one scheduled task in my account.

Environment

  • Claude desktop app, macOS
  • Feature: Scheduled tasks / Routines (sidebar "ルーティン")
  • Affected task observed: cross-platform-delist-on-sale, cron 7 */2 * * * (every 2 hours)

Expected behavior

Once I select a non-default model (e.g. Haiku 4.5) for a routine in its detail panel, that selection should persist and apply to every future automatic (cron-triggered) run of that routine, until I change it again myself.

Actual behavior

The model silently flips back to Sonnet 5.5 between automatic runs. No one touched the routine's settings or triggered a manual run during the window where it changed.

Evidence (session-by-session timeline)

I checked each run's actual model field (via session metadata) for the cross-platform-delist-on-sale task across one night:

| Time (JST, 2026-10-05/06) | Trigger type | Model used |
|---|---|---|
| 10/5 15:26 | automatic (cron) | claude-haiku-4-5-20251001 ✅ |
| 10/5 15:55 | manual (API "run now", for an unrelated test) | claude-sonnet-5-5 (expected — not through the UI's model selector) |
| 10/5 17:12 | automatic (cron) | claude-haiku-4-5-20251001 ✅ (correctly back to Haiku on its own) |
| 10/5 22:53 | automatic | claude-haiku-4-5-20251001 ✅ |
| 10/5 23:13 | automatic (cron) | claude-haiku-4-5-20251001 ✅ |
| 10/6 01:12 | automatic (cron) | claude-sonnet-5-5 ❌ — reverted, nobody touched anything between 23:13 and 01:12 |
| 10/6 03:12 | automatic (cron) | claude-sonnet-5-5 (stayed reverted) |
| 10/6 05:12 | automatic (cron) | claude-sonnet-5-5 (stayed reverted) |

So the revert happened sometime in the 23:13→01:12 window, during which the only activity was the routine's own unattended cron firing — no human interaction, no manual trigger, nothing.

This is not an isolated incident — I (the user) had already noticed and manually corrected the same "reverted to Sonnet" behavior on a different scheduled task earlier, before this timeline was captured.

Possible related clue

When re-selecting Haiku 4.5 from the routine's detail panel, a confirmation dialog appears:

モデルを切り替えますか? このセッションはSonnet 5.5用にキャッシュされています。Haiku 4.5に切り替えると、次のメッセージ送信時にClaudeがセッション全体を再読み込みするため、利用上限をより多く消費します。

(Translation: "Switch model? This session is cached for Sonnet 5.5. Switching to Haiku 4.5 will make Claude reload the entire session on the next message, consuming more of your usage limit.")

The wording "このセッションは…" ("this session is cached for...") suggests the model selector may be scoped to whichever single session is currently open/displayed in that routine's panel, rather than being stored as a persistent default that every future cron-spawned session (each of which gets its own new session ID) reliably inherits. If that's the mechanism, it would explain why the setting doesn't "stick" for unattended runs.

Impact

For scheduled tasks meant to run unattended for cost/budget reasons (this routine runs every 2 hours, 24/7), this makes Haiku effectively unreliable to rely on — the task silently (and expensively) falls back to Sonnet without any notification, defeating the purpose of choosing a cheaper model for routine automation.

What Should Happen?

Once a non-default model (e.g. Haiku 4.5) is selected for a scheduled task/routine, that setting should persist and be used by every future automatic (cron-triggered) run, without silently reverting to the default model.

Error Messages/Logs

Steps to Reproduce

  1. Open a scheduled task ("routine") in the Claude desktop app sidebar — one with a recurring cron schedule (e.g. every 2 hours).
  2. In the routine's detail panel, select a non-default model (e.g. Haiku 4.5) from the model dropdown at the bottom of the panel.
  3. Confirm the "Switch model?" dialog that appears (it warns that switching will reload the session and consume more usage).
  4. Do not touch the routine again. Let it fire automatically via its cron schedule, unattended, for several hours (no manual "Run now", no further settings changes).
  5. After several automatic runs have completed, inspect each run's session metadata to see which model it actually used.

Expected: every automatic run continues using the selected Haiku 4.5 model.
Actual: at some point between two consecutive automatic runs — with zero user interaction in between — the model silently reverts to the default (Sonnet 5.5) and stays there for all subsequent automatic runs, until manually reselected again.

Claude Model

Sonnet (default)

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.19675.1

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗