スケジュールに従ってプロンプトを実行する
/loop と cron スケジューリングツールを使用して、Claude Code セッション内でプロンプトを繰り返し実行したり、ステータスをポーリングしたり、1 回限りのリマインダーを設定したりします。
スケジュール済みタスクを使用すると、Claude は一定の間隔でプロンプトを自動的に再実行できます。デプロイメントをポーリングしたり、PR を監視したり、長時間実行されるビルドをチェックバックしたり、後でセッション内で何かを実行するようにリマインダーを設定したりするために使用します。イベントが発生したときにポーリングする代わりに反応するには、Channels を参照してください。CI はセッションに直接失敗をプッシュできます。セッションが条件を満たすまで一定の間隔ではなくターンごとに動作し続けるようにするには、/goal を参照してください。
タスクはセッションスコープです。現在の会話に存在し、新しい会話を開始すると停止します。--resume または --continue で再開すると、Claude Code は 有効期限切れ になっていないタスクを復元します。ただし、制限事項 に記載されているタスクは除きます。セッションとは独立して存在する永続的なスケジューリングについては、Routines を使用して Anthropic 管理インフラストラクチャ上にルーチンを作成するか、Desktop スケジュール済みタスク をセットアップするか、GitHub Actions を使用してください。
スケジューリングオプションを比較する
Claude Code は、定期的または 1 回限りの作業をスケジュールするための 3 つの方法を提供します。
| Cloud | Desktop | /loop |
|
|---|---|---|---|
| 実行場所 | Cloud、デフォルトでは Anthropic 管理 | お客様のマシン | お客様のマシン |
| マシンの起動が必要 | いいえ | はい | はい |
| オープンセッションが必要 | いいえ | いいえ | はい |
| 再起動後も永続 | はい | はい | --resume で復元、例外あり |
| ローカルファイルへのアクセス | いいえ(新規クローン) | はい | はい |
| MCP サーバー | タスクごとに設定されたコネクタ | 設定ファイルとコネクタ | セッションから継承 |
| 権限プロンプト | いいえ(自律的に実行) | タスクごとに設定可能 | セッションから継承 |
| カスタマイズ可能なスケジュール | CLI の /schedule 経由 |
はい | はい |
| 最小間隔 | 1 時間 | 1 分 | 1 分 |
マシンなしで確実に実行する必要がある作業にはクラウドタスクを使用します。ローカルファイルとツールへのアクセスが必要な場合はデスクトップタスクを使用します。セッション中の迅速なポーリングには**/loop**を使用します。
/loop で定期的にプロンプトを実行する
/loop バンドルスキル は、セッションが開いている間、プロンプトを繰り返し実行する最速の方法です。間隔とプロンプトの両方はオプションであり、提供する内容によってループの動作が決まります。
| 提供する内容 | 例 | 動作 |
|---|---|---|
| 間隔とプロンプト | /loop 5m check the deploy |
プロンプトは固定スケジュールで実行されます |
| プロンプトのみ | /loop check the deploy |
プロンプトは各反復でClaude が選択した間隔で実行されます |
| 間隔のみ、または何もなし | /loop |
組み込みメンテナンスプロンプトが実行されるか、存在する場合は loop.md が実行されます |
スキルをプロンプトとして渡すこともできます。例えば /loop 20m /review-pr 1234 は、各反復でそのスキルを再実行します。スケジュール済みの実行は Claude が独自に呼び出すことを許可されているスキルのみを実行します。以下は Claude にプレーンテキストとして到達し、実行されません。
/permissions、/model、/clearなどの組み込みコマンドdisable-model-invocation: trueとマークされたスキル(バンドルされた/verifyスキルを含む)skillOverrides設定またはSkill拒否ルールによって Claude から保留されたスキル- MCP プロンプト(
/mcp__github__list_prsなど)
固定間隔で実行する
間隔を指定すると、Claude はそれを cron 式に変換し、ジョブをスケジュールし、頻度とジョブ ID を確認します。
/loop 5m check if the deployment finished and tell me what happened
間隔は 30m のような裸のトークンとしてプロンプトの前に配置することも、every 2 hours のような句としてプロンプトの後に配置することもできます。サポートされている単位は、秒の場合は s、分の場合は m、時間の場合は h、日の場合は d です。
秒は cron が 1 分の粒度を持つため、最も近い分に切り上げられます。7m や 90m など、クリーンな cron ステップにマップされない間隔は、最も近い間隔に丸められ、Claude が選択したものを通知します。
Claude に間隔を選択させる
間隔を省略すると、Claude は固定 cron スケジュールで実行する代わりに、動的に間隔を選択します。各反復の後、観察した内容に基づいて 1 分から 1 時間の間の遅延を選択します。ビルドが完了している間または PR がアクティブな間は短い待機時間、何も保留中でない場合は長い待機時間です。選択された遅延とその理由は、各反復の終了時に出力されます。
以下の例は CI とレビューコメントをチェックし、PR が静かになると Claude がより長く反復間で待機します。
/loop check whether CI passed and address any review comments
Monitor ツールが利用可能なセッションでは、動的な /loop スケジュールをリクエストすると、Claude は Monitor ツールを直接使用する場合があります。Monitor はバックグラウンドスクリプトを実行し、各出力行をストリーミングバックします。これにより、ポーリングを完全に回避でき、プロンプトを間隔で再実行するよりも多くの場合、トークン効率が高く、応答性が高くなります。
動的にスケジュールされたループは、他のタスクと同様にスケジュール済みタスクリストに表示されるため、同じ方法でリストまたはキャンセルできます。ジッタールールは適用されませんが、7 日間の有効期限は適用されます。
動的に選択された間隔と組み込みメンテナンスプロンプトはすべてのプロバイダーで機能し、フィーチャーフラグ取得がオフになっている場合でも機能します。Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、Microsoft Foundry、または取得がオフになっている場合、両方とも Claude Code v2.1.248 以降が必要です。その場合、以前のバージョンでは、間隔なしのプロンプトは固定 10 分スケジュールで実行され、プロンプトなしの /loop は使用メッセージを出力します。
組み込みメンテナンスプロンプトを実行する
プロンプトを省略すると、Claude は提供するプロンプトの代わりに組み込みメンテナンスプロンプトを使用します。各反復で、以下を順番に処理します。
- 会話からの未完了の作業を続行する
- 現在のブランチのプルリクエストを処理する。レビューコメント、失敗した CI 実行、マージコンフリクト
- 他に何も保留中でない場合、バグハントや簡素化などのクリーンアップパスを実行する
Claude はそのスコープ外の新しいイニシアチブを開始せず、プッシュまたは削除などの取り消し不可能なアクションは、トランスクリプトが既に承認した何かを続行する場合にのみ進行します。
/loop
裸の /loop は、このプロンプトを動的に選択された間隔で実行します。例えば /loop 15m のように間隔を追加して、代わりに固定スケジュールで実行します。組み込みプロンプトを独自のデフォルトに置き換えるには、loop.md でデフォルトプロンプトをカスタマイズするを参照してください。
loop.md でデフォルトプロンプトをカスタマイズする
loop.md ファイルを作成して、組み込みメンテナンスプロンプトを独自の指示に置き換えます。これは、裸の /loop の単一のデフォルトプロンプトを定義し、個別のスケジュール済みタスクのリストではなく、コマンドラインでプロンプトを指定するたびに Claude Code は無視します。それと一緒に追加のプロンプトをスケジュールするには、/loop <prompt> を使用するか、Claude に直接依頼してください。
Claude は 2 つの場所でファイルを探し、最初に見つかったものを使用します。
| パス | スコープ |
|---|---|
.claude/loop.md |
プロジェクトレベル。両方のファイルが存在する場合は優先されます。 |
~/.claude/loop.md |
ユーザーレベル。独自のファイルを定義しないプロジェクトに適用されます。 |
ファイルは必須の構造を持たないプレーン Markdown です。/loop プロンプトを直接入力しているかのように記述してください。以下の例は、リリースブランチを健全に保ちます。
Check the `release/next` PR. If CI is red, pull the failing job log,
diagnose, and push a minimal fix. If new review comments have arrived,
address each one and resolve the thread. If everything is green and
quiet, say so in one line.
loop.md への編集は次の反復で有効になるため、ループが実行中に指示を改善できます。どちらの場所にも loop.md が存在しない場合、ループは組み込みメンテナンスプロンプトにフォールバックします。ファイルは簡潔に保ってください。25,000 バイトを超えるコンテンツは切り詰められます。
ループを停止する
自分のペースの /loop が次の反復を待機している間に停止するには、Esc を押してください。これにより、保留中のウェイクアップがクリアされるため、ループは再度実行されません。Claude に直接依頼してスケジュールしたタスクは Esc の影響を受けず、削除するまで存在し続けます。
自分のペースモードでは、Claude はタスクが完了したら自分でループを終了することもできます。Claude は ScheduleWakeup ツールを stop: true で呼び出し、保留中のウェイクアップを直ちにキャンセルします。反復がスケジュール変更またはスケジュール停止のいずれも行わずに終了した場合、Claude Code は約 20 分後にフォールバックウェイクアップをスケジュールし、その反復がスケジュール変更も行わない場合にループを終了します。
固定間隔のループは、他のスケジュール済みタスクのようにキャンセルするか、7 日が経過するまで実行し続けます。
1 回限りのリマインダーを設定する
1 回限りのリマインダーの場合は、/loop を使用する代わりに、自然言語で実行したい内容を説明してください。Claude は実行後に自身を削除する単一実行タスクをスケジュールします。
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claude は cron 式を使用して火災時間を特定の分と時間に固定し、いつ実行されるかを確認します。
スケジュール済みタスクを管理する
自然言語で Claude にタスクをリストまたはキャンセルするよう依頼するか、基盤となるツールを直接参照してください。
what scheduled tasks do I have?
cancel the deploy check job
内部的には、Claude はこれらのツールを使用します。
| ツール | 目的 |
|---|---|
CronCreate |
新しいタスクをスケジュールします。5 フィールドの cron 式、実行するプロンプト、および繰り返すか 1 回実行するかを受け入れます。 |
CronList |
ID、スケジュール、プロンプトを含むすべてのスケジュール済みタスクをリストします。 |
CronDelete |
ID でタスクをキャンセルします。 |
各スケジュール済みタスクには、CronDelete に渡すことができる 8 文字の ID があります。セッションは一度に最大 50 個のスケジュール済みタスクを保持できます。
スケジュール済みタスクの実行方法
スケジューラは毎秒期限切れのタスクをチェックし、低優先度でキューに入れます。スケジュール済みプロンプトは、Claude が応答の途中ではなく、ターン間で実行されます。タスクが期限切れになったときに Claude がビジーの場合、プロンプトは現在のターンが終了するまで待機します。
すべての時間はローカルタイムゾーンで解釈されます。0 9 * * * のような cron 式は、UTC ではなく、Claude Code を実行している場所の午前 9 時を意味します。
ジッター
すべてのセッションが同じ壁時計の瞬間に API にヒットするのを避けるために、スケジューラは火災時間に決定論的オフセットを追加します。
- 定期的なタスクは、スケジュール済み時刻の最大 30 分後に実行されます(または 1 時間より頻繁に実行されるタスクの場合は間隔の最大半分)。時間ごとのジョブがスケジュール済みの
:00は:30までのどこかで実行される可能性があります。 - 時間の上部または下部にスケジュール済みの 1 回限りのタスクは、最大 90 秒早く実行されます。
オフセットはタスク ID から派生しているため、同じタスクは常に同じオフセットを取得します。正確なタイミングが重要な場合は、0 9 * * * ではなく 3 9 * * * など、:00 または :30 ではない分を選択すると、1 回限りのジッターは適用されません。
7 日間の有効期限
定期的なタスクは作成後 7 日で自動的に期限切れになります。タスクは最後に 1 回実行され、その後自身を削除します。これにより、忘れられたループが実行できる期間が制限されます。定期的なタスクをより長く続ける必要がある場合は、期限切れになる前にキャンセルして再作成するか、永続的なスケジューリングのために Routines または Desktop スケジュール済みタスク を使用してください。
Cron 式リファレンス
CronCreate は標準 5 フィールド cron 式を受け入れます。minute hour day-of-month month day-of-week。すべてのフィールドは、ワイルドカード(*)、単一値(5)、ステップ(*/15)、範囲(1-5)、カンマ区切りリスト(1,15,30)をサポートしています。
| 例 | 意味 |
|---|---|
*/5 * * * * |
5 分ごと |
0 * * * * |
毎時間の時刻 |
7 * * * * |
毎時間 7 分経過時 |
0 9 * * * |
毎日午前 9 時(ローカル) |
0 9 * * 1-5 |
平日午前 9 時(ローカル) |
30 14 15 3 * |
3 月 15 日午後 2 時 30 分(ローカル) |
曜日は日曜日の場合は 0 または 7、土曜日の場合は 6 を使用します。L、W、? などの拡張構文や、MON や JAN などの名前エイリアスはサポートされていません。
月の日と曜日の両方が制約されている場合、どちらかのフィールドが一致すれば日付が一致します。これは標準の vixie-cron セマンティクスに従います。
スケジュール済みタスクを無効にする
環境で CLAUDE_CODE_DISABLE_CRON=1 を設定して、スケジューラ全体を無効にします。cron ツールと /loop は利用できなくなり、既にスケジュール済みのタスクは実行を停止します。無効化フラグの完全なリストについては、環境変数 を参照してください。
制限事項
セッションスコープのスケジューリングには固有の制約があります。
- タスクは Claude Code が実行中でアイドル状態の場合にのみ実行されます。ターミナルを閉じるか、セッションを終了すると、タスクは実行を停止します。セッションをバックグラウンドで実行すると、
/loopタスクがバックグラウンドセッションに引き継がれ、ターミナルなしで実行を続けます。 - 見落とされた実行のキャッチアップはありません。タスクのスケジュール済み時間が Claude が長時間実行されるリクエストでビジーの間に経過した場合、Claude がアイドル状態になったときに 1 回実行され、見落とされた間隔ごとに 1 回ではありません。
- 新しい会話を開始すると、すべてのセッションスコープのタスクがクリアされます。
claude --resumeまたはclaude --continueでセッションを再開すると、Claude Code はCronCreateでスケジュールされたタスクを復元します。ただし、有効期限切れになっている定期的なタスク、およびスケジュール済み時間がすでに経過している 1 回限りのタスクは除きます。自分のペースで実行する/loopは復元されないため、再度/loopを実行して再開してください。バックグラウンド Bash およびモニタータスクは再開時に復元されることはありません。 - フィーチャーフラグ取得がオフの場合、Claude Code はセッション間で保持するよう要求したタスクをプロジェクトの
.claudeディレクトリに保存します。そのディレクトリまたはその中のタスクファイルがシンボリックリンクの場合、Claude Code はタスクをスケジュールする代わりにエラーを返します。
無人で実行する必要がある cron 駆動オートメーションの場合は、以下を使用してください。
- Routines:クラウドでスケジュールに従って実行、API 呼び出し、または GitHub イベント時に実行
- GitHub Actions:CI で
scheduleトリガーを使用 - Desktop スケジュール済みタスク:マシン上でローカルに実行