claude-code - 💡(How to fix) Fix scheduled-tasks dispatcher stopped honoring SKILL.md `model:` frontmatter on/around 2026-04-27 ~01-02 UTC [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#56164Fetched 2026-05-05 05:56:30
View on GitHub
Comments
1
Participants
2
Timeline
8
Reactions
0
Timeline (top)
labeled ×5commented ×1cross-referenced ×1renamed ×1

As of approximately 2026-04-27 01:00–02:30 UTC, the Claude Code scheduled-tasks dispatcher stopped reading the model: frontmatter field in ~/.claude/scheduled-tasks/{id}/SKILL.md. Every scheduled task now runs on Opus regardless of what its frontmatter says — including tasks set to sonnet and tasks set to haiku. Pre-04-27 sessions for the same tasks ran on Sonnet/Haiku as the frontmatter specified.

This is a global behaviour change, not a per-task regression. Editing or re-saving SKILL.md after the change has no effect.

For Pro users this is invisibly costly (quota burn). For API users it's ~3× cost.

Root Cause

As of approximately 2026-04-27 01:00–02:30 UTC, the Claude Code scheduled-tasks dispatcher stopped reading the model: frontmatter field in ~/.claude/scheduled-tasks/{id}/SKILL.md. Every scheduled task now runs on Opus regardless of what its frontmatter says — including tasks set to sonnet and tasks set to haiku. Pre-04-27 sessions for the same tasks ran on Sonnet/Haiku as the frontmatter specified.

This is a global behaviour change, not a per-task regression. Editing or re-saving SKILL.md after the change has no effect.

For Pro users this is invisibly costly (quota burn). For API users it's ~3× cost.

Fix Action

Fix / Workaround

Bug: scheduled-tasks dispatcher stopped honoring SKILL.md model: frontmatter on/around 2026-04-27 ~01–02 UTC

As of approximately 2026-04-27 01:00–02:30 UTC, the Claude Code scheduled-tasks dispatcher stopped reading the model: frontmatter field in ~/.claude/scheduled-tasks/{id}/SKILL.md. Every scheduled task now runs on Opus regardless of what its frontmatter says — including tasks set to sonnet and tasks set to haiku. Pre-04-27 sessions for the same tasks ran on Sonnet/Haiku as the frontmatter specified.

TaskFrontmatterLast non-Opus session (UTC)First Opus session after (UTC)
meeting-digest-sweepersonnet2026-04-27 00:512026-04-27 01:06
vbe-workflow-syncsonnet2026-04-26 23:452026-04-27 02:08
vbe-cache-refreshhaiku2026-04-26 23:452026-04-27 02:15
learn-system-syncsonnet2026-04-26 23:452026-04-27 02:18
vbe-comment-stalenesssonnet2026-04-26 23:472026-04-27 02:19
migration-matrix-refresh(no model: line)2026-04-26 23:522026-04-27 02:28
learn-daily-digestsonnet2026-04-26 23:532026-04-27 16:10
verify-scheduled-jobssonnet2026-04-26 23:532026-04-27 16:10
onb-syncsonnet2026-04-26 23:582026-04-27 16:13
standup-digestsonnet2026-04-27 00:512026-04-27 23:08
learn-pending-processorsonnet2026-04-28 18:062026-04-28 19:06
learn-weekly-auditsonnet2026-04-26 23:482026-05-03 22:29 (next dispatch — weekly)
RAW_BUFFERClick to expand / collapse

Bug: scheduled-tasks dispatcher stopped honoring SKILL.md model: frontmatter on/around 2026-04-27 ~01–02 UTC

Summary

As of approximately 2026-04-27 01:00–02:30 UTC, the Claude Code scheduled-tasks dispatcher stopped reading the model: frontmatter field in ~/.claude/scheduled-tasks/{id}/SKILL.md. Every scheduled task now runs on Opus regardless of what its frontmatter says — including tasks set to sonnet and tasks set to haiku. Pre-04-27 sessions for the same tasks ran on Sonnet/Haiku as the frontmatter specified.

This is a global behaviour change, not a per-task regression. Editing or re-saving SKILL.md after the change has no effect.

For Pro users this is invisibly costly (quota burn). For API users it's ~3× cost.

Environment

  • Claude Code desktop app, Windows 11
  • ~/.claude/scheduled-tasks/{id}/SKILL.md storage layout
  • mcp__scheduled-tasks__create_scheduled_task / update_scheduled_task / list_scheduled_tasks
  • Session metadata at %APPDATA%/Claude/claude-code-sessions/<root>/<group>/local_*.json

Evidence: coordinated transition across 12 tasks within a 2-hour window

For each task with model: sonnet (or model: haiku) in frontmatter, I extracted the timestamp of the last Sonnet/Haiku session and the first Opus session that followed:

TaskFrontmatterLast non-Opus session (UTC)First Opus session after (UTC)
meeting-digest-sweepersonnet2026-04-27 00:512026-04-27 01:06
vbe-workflow-syncsonnet2026-04-26 23:452026-04-27 02:08
vbe-cache-refreshhaiku2026-04-26 23:452026-04-27 02:15
learn-system-syncsonnet2026-04-26 23:452026-04-27 02:18
vbe-comment-stalenesssonnet2026-04-26 23:472026-04-27 02:19
migration-matrix-refresh(no model: line)2026-04-26 23:522026-04-27 02:28
learn-daily-digestsonnet2026-04-26 23:532026-04-27 16:10
verify-scheduled-jobssonnet2026-04-26 23:532026-04-27 16:10
onb-syncsonnet2026-04-26 23:582026-04-27 16:13
standup-digestsonnet2026-04-27 00:512026-04-27 23:08
learn-pending-processorsonnet2026-04-28 18:062026-04-28 19:06
learn-weekly-auditsonnet2026-04-26 23:482026-05-03 22:29 (next dispatch — weekly)

The "first Opus after" times trail by however long it took each task's cron to fire next. The earliest Opus session is 2026-04-27 01:06 UTC. Every task's very next dispatch after that boundary returned Opus, regardless of frontmatter.

Tasks that legitimately have model: opus (e.g. learn-monthly-audit, standup-digest-audit) and tasks with no model: line still run Opus — these are matching by accident or by default, not by the dispatcher reading frontmatter.

Why this isn't "the SKILL.md edits broke things"

A task's prior verification report attributed the regression to SKILL.md frontmatter edits made on 2026-04-29 to five specific tasks. That framing is wrong:

  • The transition happened ~2 days earlier (04-27 ~01 UTC) and affected every task with non-Opus frontmatter, not just the 5 that were later edited.
  • The 04-29 edits to those 5 SKILL.md files had no effect either way — the dispatcher had already stopped reading frontmatter.

Reproduction

  1. Pick any active scheduled task whose SKILL.md frontmatter has model: sonnet. Confirm via local_*.json that recent runs use claude-opus-4-7[1m].
  2. Compare against earlier runs (pre-2026-04-27) — they used claude-sonnet-4-6.
  3. Edit the file: re-save with the same model: sonnet line, or remove and re-add it. Wait for the next dispatch. Model is still claude-opus-4-7[1m].
  4. Try update_scheduled_task mutations:
    • update_scheduled_task(taskId, description=<same value>) → next dispatch still Opus.
    • update_scheduled_task(taskId, enabled=false) then update_scheduled_task(taskId, enabled=true, fireAt=<near future>) → next dispatch still Opus. (Verified 2026-05-05 00:03 UTC on migration-matrix-refresh.)
    • update_scheduled_task(taskId, fireAt=<near future>) on an active task → next dispatch still Opus. (Verified 2026-05-04 21:52 UTC on migration-matrix-refresh.)

Why we can't work around it

  • mcp__scheduled-tasks__create_scheduled_task schema has no model parameter.
  • There's no delete_scheduled_task tool — can't delete and recreate within the MCP.
  • Filesystem-level deletion of ~/.claude/scheduled-tasks/{id}/ would orphan whatever scheduler state the runner keeps elsewhere.

Asks

  1. Restore frontmatter-honoring behaviour at dispatch time, OR expose model as an explicit parameter on create_scheduled_task and update_scheduled_task.
  2. Add a delete_scheduled_task tool to the mcp__scheduled-tasks__* surface.
  3. Document the current behaviour in the meantime so users on Pro plans know their model: sonnet configurations are silently being ignored.

Workaround currently in use

Disabled the most expensive scheduled tasks (enabled: false) until a fix lands.

extent analysis

TL;DR

The scheduled-tasks dispatcher stopped honoring the model: frontmatter field in SKILL.md files, causing all tasks to run on Opus regardless of the specified model, and a workaround is to disable expensive tasks until a fix is implemented.

Guidance

  • Verify that the issue is not specific to a particular task by checking the behavior of multiple tasks with different frontmatter settings.
  • Check the local_*.json files to confirm that recent runs are using the Opus model instead of the expected model.
  • Test the update_scheduled_task mutation with different parameters to see if it has any effect on the model used for the next dispatch.
  • Consider disabling expensive tasks until a fix is implemented to avoid unnecessary costs.

Example

No code snippet is provided as the issue is related to the behavior of the scheduled-tasks dispatcher and not a specific code implementation.

Notes

The issue seems to be a global behavior change that occurred around 2026-04-27 01:00-02:30 UTC, and it is not clear what caused the change. The workaround of disabling expensive tasks may not be feasible for all users, and a permanent fix is needed to restore the frontmatter-honoring behavior.

Recommendation

Apply the workaround of disabling expensive tasks until a fix is implemented, as it is the most straightforward way to mitigate the issue. The recommended fix is to restore frontmatter-honoring behavior at dispatch time or expose the model as an explicit parameter on create_scheduled_task and update_scheduled_task.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING