メインコンテンツへスキップ
セッションスコープのスケジュールタスクを使用すると、Claude は Claude Code セッション内で一定の間隔でプロンプトを自動的に再実行できます。デプロイをポーリングしたり、PR を監視したり、長時間実行されるビルドをチェックバックしたり、後でセッション内で何かを実行するようにリマインダーを設定したりするために使用します。
次のケースは他のページで説明しています。
  • ポーリングする代わりにイベントが発生したときに反応する: チャネル を参照してください。CI はセッションに直接失敗をプッシュできます。
  • 一定の間隔ではなく、条件を満たすまでターンごとにセッションを動作させ続ける: /goal を参照してください。
タスクはセッションスコープです。--resume または --continue で再開すると、Claude Code は 有効期限切れ になっていないタスクを復元します。ただし、制限事項 に記載されているタスクは除きます。セッションとは独立して存続するスケジューリングについては、クラウドスケジュールタスク を作成するか、Desktop スケジュールタスク をセットアップするか、GitHub Actions を使用してください。

スケジューリングオプションを比較する

Claude Code は、定期的または 1 回限りの作業をスケジュールするための 3 つの方法を提供します。
マシンなしで確実に実行する必要がある作業にはクラウドタスクを使用します。ローカルファイルとツールへのアクセスが必要な場合はデスクトップタスクを使用します。セッション中の迅速なポーリングには**/loop**を使用します。

/loop で定期的にプロンプトを実行する

/loop バンドルスキル は、セッションが開いている間、プロンプトを繰り返し実行する最速の方法です。間隔とプロンプトの両方はオプションであり、提供する内容によってループの動作が決まります。 スキルをプロンプトとして渡すこともできます。例えば /loop 20m /review-pr 1234 は、各反復でそのスキルを再実行します。スケジュール済みの実行は Claude が独自に呼び出すことを許可されているスキルのみを実行します。以下は Claude にプレーンテキストとして到達し、実行されません。

固定間隔で実行する

間隔を指定すると、Claude はそれを cron 式に変換し、ジョブをスケジュールし、頻度とジョブ ID を確認します。
間隔は 30m のような裸のトークンとしてプロンプトの前に配置することも、every 2 hours のような句としてプロンプトの後に配置することもできます。サポートされている単位は、秒の場合は s、分の場合は m、時間の場合は h、日の場合は d です。 秒は cron が 1 分の粒度を持つため、最も近い分に切り上げられます。7m や 90m など、クリーンな cron ステップにマップされない間隔は、最も近い間隔に丸められ、Claude が選択したものを通知します。

Claude に間隔を選択させる

間隔を省略すると、Claude は固定 cron スケジュールで実行する代わりに、動的に間隔を選択します。各反復の後、観察した内容に基づいて 1 分から 1 時間の間の遅延を選択します。ビルドが完了している間または PR がアクティブな間は短い待機時間、何も保留中でない場合は長い待機時間です。選択された遅延とその理由は、各反復の終了時に出力されます。 以下の例は CI とレビューコメントをチェックし、PR が静かになると Claude がより長く反復間で待機します。
Monitor ツールが利用可能なセッションでは、動的な /loop スケジュールをリクエストすると、Claude は Monitor ツールを直接使用する場合があります。Monitor はバックグラウンドスクリプトを実行し、各出力行をストリーミングバックします。これにより、ポーリングを完全に回避でき、プロンプトを間隔で再実行するよりも多くの場合、トークン効率が高く、応答性が高くなります。 動的にスケジュールされたループは、他のタスクと同様にスケジュールタスクリストに表示されるため、同じ方法でリストまたはキャンセルできます。リストには保留中のウェイクアップが単発タスクとして表示されるため、:00 または :30 にスケジュールされたウェイクアップは少し早く実行される場合があります。7 日間の有効期限もループに適用されます。
動的に選択された間隔と組み込みメンテナンスプロンプトはすべてのプロバイダーで機能し、フィーチャーフラグ取得がオフになっている場合でも機能します。Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、Microsoft Foundry、または取得がオフになっている場合、両方とも Claude Code v2.1.248 以降が必要です。

組み込みメンテナンスプロンプトを実行する

プロンプトを省略すると、Claude は提供するプロンプトの代わりに組み込みメンテナンスプロンプトを使用します。各反復で、以下を順番に処理します。
  • 会話からの未完了の作業を続行する
  • 現在のブランチのプルリクエストを処理する。レビューコメント、失敗した CI 実行、マージコンフリクト
  • 他に何も保留中でない場合、バグハントや簡素化などのクリーンアップパスを実行する
各実行は、何かをプッシュまたは削除する前に、セッションの権限チェックを通過します。 裸の /loop は、このプロンプトを動的に選択された間隔で実行します。
例えば /loop 15m のように間隔を追加すると、代わりに固定スケジュールで実行されます。組み込みプロンプトを独自のデフォルトに置き換えるには、loop.md でデフォルトプロンプトをカスタマイズするを参照してください。

loop.md でデフォルトプロンプトをカスタマイズする

loop.md ファイルを作成して、組み込みメンテナンスプロンプトを独自の指示に置き換えます。これは、裸の /loop の単一のデフォルトプロンプトを定義し、個別のスケジュール済みタスクのリストではなく、コマンドラインでプロンプトを指定するたびに Claude Code は無視します。それと一緒に追加のプロンプトをスケジュールするには、/loop <prompt> を使用するか、Claude に直接依頼してください。 Claude は 2 つの場所でファイルを探し、最初に見つかったものを使用します。 ファイルは必須の構造を持たないプレーン Markdown です。/loop プロンプトを直接入力しているかのように記述してください。以下の例は、リリースブランチを健全に保ちます。
.claude/loop.md
loop.md への編集は次の反復で有効になるため、ループが実行中に指示を改善できます。どちらの場所にも loop.md が存在しない場合、ループは組み込みメンテナンスプロンプトにフォールバックします。ファイルは簡潔に保ってください。25,000 バイトを超えるコンテンツは切り詰められます。

ループを停止する

自分のペースモードでは、Claude はタスクが完了したら自分でループを終了することもできます。Claude は ScheduleWakeup ツールを stop: true で呼び出し、保留中のウェイクアップを直ちにキャンセルします。反復がスケジュール変更またはスケジュール停止のいずれも行わずに終了した場合、Claude Code は約 20 分後にフォールバックウェイクアップをスケジュールし、その反復がスケジュール変更も行わない場合にループを終了します。

ループを停止せずにデタッチする

バックグラウンドセッションにアタッチしていて Claude がアイドル状態のときは、空のプロンプトで Ctrl+C を 2 回押すとデタッチします。そこで次の反復を待機している自分のペースのループは実行を続け、その反復はスケジュールどおりに開始されます。代わりにループを停止するには、デタッチする前に Esc を押します。ループを停止せずに Ctrl+C でデタッチするには、Claude Code v2.1.295 以降が必要です。

1 回限りのリマインダーを設定する

1 回限りのリマインダーの場合は、/loop を使用する代わりに、自然言語で実行したい内容を説明してください。Claude は実行後に自身を削除する単一実行タスクをスケジュールします。
Claude は cron 式を使用して実行時刻を特定の分と時間に固定し、いつ実行されるかを確認します。

セッションスコープのスケジュールタスクを管理する

自然言語で Claude にタスクをリストまたはキャンセルするよう依頼するか、基盤となるツールを直接参照してください。
これらは Claude が使用する基盤となるツールです。 各スケジュール済みタスクには、CronDelete に渡すことができる 8 文字の ID があります。セッションは一度に最大 50 個のスケジュール済みタスクを保持できます。

セッションスコープのスケジュールタスクの実行方法

スケジューラは毎秒期限切れのタスクをチェックし、低優先度でキューに入れます。スケジュール済みプロンプトは、Claude が応答の途中ではなく、ターン間で実行されます。タスクが期限切れになったときに Claude がビジーの場合、プロンプトは現在のターンが終了するまで待機します。 すべての時間はローカルタイムゾーンで解釈されます。0 9 * * * のような cron 式は、UTC ではなく、Claude Code を実行している場所の午前 9 時を意味します。

ジッター

スケジュールタスクは、スケジュールで指定された時刻とは異なる時刻に実行されることがあります。すべてのセッションのタスクが正確にスケジュールどおりに実行されると、多くのタスクが同じ瞬間に API を呼び出すことになるため、Claude Code は各タスクの実行時刻をずらします。定期的なタスクは遅れて実行されます。ただし、*/5 * * * * と記述される 5 分ごとに実行されるタスクは例外です。毎時 0 分または 30 分にスケジュールされた 1 回限りのタスクは少し早く実行されます。 タスクの次回実行予定時刻を確認するには、ターミナルで Claude の CronCreate 呼び出しの下にある行を確認してください。この行には、スケジュールの後にその時刻が表示されます(例:next run 10:21 AM)。後で改めて確認するには、Claude にタスクの一覧表示を依頼し、CronList 呼び出しの下の行で next run を探してください。これらの行に次回実行時刻が表示されるには、Claude Code v2.1.299 以降が必要です。

定期的なタスクがどれだけ遅れて実行されるか

5 分ごとに実行されるタスクを除き、定期的なタスクは各実行を、次の実行までの間隔の最大半分、かつ最長 30 分遅れて開始します。タスクは次の 3 つのケースのいずれかに該当します。
  • 等間隔の実行:1 時間ごと、毎日、10 分ごとなど、間隔が等しいタスクは、セッションがアイドル状態の場合も含め、毎回同じ分数だけ遅れて実行されます。
  • 不等間隔の実行:毎時 :00 と :15 にスケジュールされたタスクなど、間隔が等しくないタスクは、実行ごとに異なる分数だけ遅れて実行されることがあります。
  • 5 分ごと:*/5 * * * * と記述されたタスクは遅延しません。前回の実行のちょうど 5 分後に実行すると、5 分間のプロンプトキャッシュの有効期限が切れた後に開始されることになるため、各実行は 15 秒早く開始されます。
この表の最初の列で該当するスケジュールを探すと、各実行がいつ開始されるかを確認できます。 たとえば、7,37 * * * * はタスクを :07 と :37 にスケジュールします。この 2 つは 30 分間隔なので、遅延は 0〜15 分のいずれかになります。このタスクの遅延が 14 分の場合、毎時 :21 と :51 に実行されます。スケジュールを別の分に変更すると実行時刻は移動しますが、その場合も遅延は上乗せされます。

1 回限りのタスクが早く実行される場合

:00 または :30 にスケジュールされた 1 回限りのタスクは、最大 90 秒早く実行されます。Claude Code はそれ以外の分にスケジュールされた 1 回限りのタスクの実行時刻はずらさないため、タイミングが重要な場合は、0 9 * * * ではなく 3 9 * * * のように、毎時 0 分と 30 分を避けてスケジュールしてください。

7 日間の有効期限

定期的なタスクは作成後 7 日で自動的に期限切れになります。タスクは最後に 1 回実行され、その後自身を削除します。これにより、忘れられたループが実行できる期間が制限されます。定期的なタスクをより長く続ける必要がある場合は、期限切れになる前にキャンセルして再作成するか、永続的なスケジューリングのためにクラウドスケジュールタスクまたは Desktop スケジュールタスクを使用してください。

Cron 式リファレンス

CronCreate は標準 5 フィールド cron 式を受け入れます。minute hour day-of-month month day-of-week。すべてのフィールドは、ワイルドカード(*)、単一値(5)、ステップ(*/15)、範囲(1-5)、カンマ区切りリスト(1,15,30)をサポートしています。 曜日は日曜日の場合は 0 または 7、土曜日の場合は 6 を使用します。L、W、? などの拡張構文や、MON や JAN などの名前エイリアスはサポートされていません。 月の日と曜日の両方が制約されている場合、どちらかのフィールドが一致すれば日付が一致します。これは標準の vixie-cron セマンティクスに従います。

セッションスコープのスケジュールタスクを無効にする

環境で CLAUDE_CODE_DISABLE_CRON=1 を設定して、スケジューラ全体を無効にします。CronCreate と /loop は利用できなくなり、既にスケジュールされているタスクは実行を停止します。プロジェクトの .claude/scheduled_tasks.json ファイルにタスクが保持されている間は、CronList と CronDelete は引き続き利用できるため、Claude にタスクの一覧表示やキャンセルを依頼できます。無効化フラグの完全なリストについては、環境変数 を参照してください。

制限事項

セッションスコープのスケジューリングには固有の制約があります。
  • タスクは Claude Code が実行中でアイドル状態の場合にのみ実行されます。ターミナルを閉じるか、セッションを終了すると、タスクは実行を停止します。セッションをバックグラウンドで実行すると、/loop タスクがバックグラウンドセッションに引き継がれ、ターミナルなしで実行を続けます。
  • 見落とされた実行のキャッチアップはありません。タスクのスケジュール済み時間が Claude が長時間実行されるリクエストでビジーの間に経過した場合、Claude がアイドル状態になったときに 1 回実行され、見落とされた間隔ごとに 1 回ではありません。
  • バックグラウンドセッションでは、クラッシュ後など、セッションのプロセスが実行されていない間に次のウェイクアップの時刻が来ると、自分のペースで実行するループは停止します。プロセスが再び起動すると、トランスクリプトにウェイクアップが実行されないという通知が表示されます。ループを続けるには、セッションに返信して、ループの実行を続けるよう Claude に依頼してください。
  • claude --resume または claude --continue でセッションを再開すると、Claude Code は CronCreate でスケジュールされたタスクを復元します。ただし、有効期限切れになっている定期的なタスク、およびスケジュール済み時間がすでに経過している 1 回限りのタスクは除きます。自分のペースで実行する /loopは復元されないため、再度 /loop を実行して再開してください。
  • 復元された定期的なタスクは、セッションが実行されていなかった間に見逃した実行分については実行されません。次の実行は再開後に最初に予定されている実行で、その実行にはジッターが適用されます。
  • claude --resume または claude --continue で再開しても、Claude Code はセッション終了時に実行中だったバックグラウンドの Bash コマンドとモニターを再起動しません。引き続き必要な場合は、再度開始するよう Claude に依頼してください。
  • フィーチャーフラグ取得がオフの場合、Claude Code はセッション間で保持するよう要求したタスクをプロジェクトの .claude/scheduled_tasks.json ファイルに保存します。.claude ディレクトリまたはそのファイルがシンボリックリンクの場合、Claude Code はタスクをスケジュールする代わりにエラーを返します。保存されたタスクは、それを作成したプロジェクトフォルダでのみ実行されます。ファイルを新しいワークツリーなど別のフォルダにコピーした場合、そこのセッションはコピーされたタスクをリストしますが実行しないため、そのフォルダで再度タスクを作成してください。
無人で実行する必要がある cron 駆動オートメーションの場合は、以下を使用してください。