[BUG] Scheduled Tasks: lastRunAt/nextRunAt inconsistent with actual execution

Open 💬 0 comments Opened Jul 15, 2026 by kurata-ship-it

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?

平日に定期実行されるスケジュールタスク(Claude Codeの「Scheduled Tasks」機能で作成、cron設定は 0 9 1-5=平日9:00開始・ジッター最大約4.5分)が、直近4営業日連続で、実際には処理が実行されない状態になっていました。しかも失敗の仕方が毎回異なる3パターンありました。list_scheduled_tasks が返す lastRunAt/nextRunAt は、タスクのセッションが実際に実行されたかどうかを正しく反映していないようです。

環境
機能: Scheduled Tasks(mcp__scheduled-tasks__* ツール/SKILL.mdベースのスケジュールタスク)
スケジュール: 0 9 1-5(平日ローカル時刻9:00、jitterSeconds: 270)
プラットフォーム: Claude Code, Windows
観測された不具合(4営業日連続)
1日目 — 発火したセッション内部の時計が1日ズレていた(セッション自体は起動し、誤った結果を出力)
セッションは正常に起動しましたが、内部で最初に呼び出した datetime.date.today() が実際の日付より1日遅れた日付を返しました。セッション自身の currentDate システムコンテキスト(既に正しい日付)、および同一セッション内で数分後に再確認した結果(正しい日付)と照合して確認済みです。1回だけの誤った読み取りが日付計算全体に伝播し、エラーも出ないまま誤った日付のデータを処理してしまいました。

2日目 — lastRunAt は更新されるが、実際にはセッションが一切実行されていない
その日の予定時刻に lastRunAt は更新されており一見正常でしたが、出力物なし・該当セッション/トランスクリプトなし・祝日スキップの形跡もなし、という状態でした。

3日目 — その日の実行枠自体が、一度も発火しないまま丸ごと飛ばされていた
予定時刻から数分後(まだジッター猶予内)に確認すると、lastRunAt は前営業日のままなのに、nextRunAt は既に今日を飛び越して翌営業日を指していました。

4日目 — 2日目と同じパターンの再発

影響
4日間とも、出力物が来ていないことに人間側が気づいた後、その都度手作業でやり直しました。タスク自体のロジックは毎回問題なく、ロジック起因だったのは1日目のみです。

助けになりそうな情報
4回それぞれの予定発火時刻についてのサーバー側ログ
lastRunAt が「セッションが実際に起動・完了した」ことを保証すべきなら、対応セッションなしに更新される(2・4日目)のは不変条件違反に見える点
nextRunAt が未試行のスロットを飛び越す(3日目)のが仕様上想定内なのか

What Should Happen?

スケジュールタスクが設定通り(平日9:00頃、ジッター含む)確実に実行され、list_scheduled_tasksが返すlastRunAt/nextRunAtの値が、そのタスクのセッションが実際に実行されたかどうかを正しく反映していること。

Error Messages/Logs

1. cron設定で平日9:00に発火するスケジュールタスクを作成する
2. 数営業日にわたって自然に発火させる
3. 毎日 list_scheduled_tasks の lastRunAt/nextRunAt と、実際にタスクが出力した成果物(ファイル・セッション履歴など)を突き合わせて確認する
4. 直近4営業日で、以下の3パターンの不一致が再現した(詳細はWhat's Wrongの本文参照)

Steps to Reproduce

エラーメッセージは一切出力されていません。lastRunAtが更新されるのに実行痕跡がない、またはlastRunAtが更新されないままnextRunAtだけが翌営業日に進む、という「サイレントな」不整合でした。

Claude Model

None

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

不明(claudeコマンドがPATHに見つからず、npm list -g でも確認できませんでした)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

_No response_

View original on GitHub ↗