デプロイが終わったか数分おきに確かめる、PR の CI とレビューコメントを見張る、45分後に結合テストの結果を見直す。Claude Code には、こうした「あとでもう一度やる」作業をセッションの中で自動化する スケジュール実行(scheduled tasks) の仕組みがあります。本記事は公式ドキュメント「Run prompts on a schedule」に基づき、/loop と cron ツールの使い方を日本語で解説します。
ここで扱うタスクはセッション単位です。現在の会話の中にだけ存在し、新しい会話を始めると消えます。ターミナルを閉じても動き続ける定期実行が必要な場合は、後述するクラウドの Routines やデスクトップアプリのスケジュールタスクを使います。
3つのスケジュール手段の違い
Claude Code で定期的な作業や一度きりの作業を予約する方法は3つあります。公式ドキュメントの比較表を要約すると次のとおりです。
| クラウド(Routines) | デスクトップ | /loop | |
|---|---|---|---|
| 実行場所 | クラウド(既定は Anthropic 管理) | 自分のマシン | 自分のマシン |
| マシンの起動が必要 | 不要 | 必要 | 必要 |
| セッションを開いておく必要 | 不要 | 不要 | 必要 |
| 再起動をまたいで残るか | 残る | 残る | --resume で復元(例外あり) |
| ローカルファイルへのアクセス | なし(毎回まっさらな clone) | あり | あり |
| 権限の確認 | なし(自律実行) | タスクごとに設定 | セッションの設定を引き継ぐ |
| 最短間隔 | 1時間 | 1分 | 1分 |
使い分けの目安は、マシンが止まっていても確実に回したい作業はクラウド、ローカルのファイルやツールが要る作業はデスクトップ、作業中にさっとポーリングしたいだけなら /loop です。本記事は3つ目の /loop と、その土台になっている cron ツールを扱います。
なお、ポーリングではなくイベントが起きた瞬間に反応させたい場合(CI の失敗をセッションに直接流し込むなど)は Channels、一定間隔ではなく条件を満たすまでターンを重ねて作業させたい場合は /goal という別の機能が用意されています。
/loop で繰り返し実行する
/loop は Claude Code に同梱されているスキル(bundled skill)で、セッションを開いている間プロンプトを繰り返し実行する最短の手段です。間隔もプロンプトも省略でき、何を渡したかで動き方が変わります。
| 渡すもの | 例 | 動き方 |
|---|---|---|
| 間隔とプロンプト | /loop 5m check the deploy | 固定のスケジュールで実行 |
| プロンプトだけ | /loop check the deploy | 毎回 Claude が次の間隔を決める |
| 間隔だけ、または何も渡さない | /loop | 組み込みのメンテナンス用プロンプト(loop.md があればそちら)を実行 |
固定の間隔で回す
間隔を指定すると、Claude がそれを cron 式に変換してジョブを登録し、実行間隔とジョブ ID を返します。
# 5分ごとにデプロイの完了を確認する
/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 に任せる
間隔を省くと、固定の cron ではなく Claude が毎回の結果を見て次の待ち時間を1分から1時間の範囲で決めます。ビルドの完了間際や PR が動いている間は短く、何も起きていなければ長く待ちます。選んだ待ち時間と理由は各回の最後に表示されます。
# CI の結果とレビューコメントを見張る。PR が静かになると間隔が延びる
/loop check whether CI passed and address any review comments
Monitor ツールが使えるセッションでは、Claude が間隔任せの /loop の代わりに Monitor を直接使うことがあります。Monitor はバックグラウンドでスクリプトを走らせて出力を1行ずつ流してくるので、ポーリング自体が不要になり、トークン効率と反応速度の面で有利なことが多いと公式は説明しています。
スキルを繰り返す
プロンプトの代わりにスキルを渡すこともできます。たとえば /loop 20m /review-pr 1234 は、20分ごとにそのスキルを実行し直します。ただし予約された実行で動くのは、Claude が自分で呼び出してよいスキルだけです。次のものは実行されず、ただのテキストとして Claude に渡ります。
/permissions・/model・/clearなどの組み込みコマンドdisable-model-invocation: trueが付いたスキル(同梱の/verifyを含む)skillOverrides設定やSkillの deny ルールで Claude から隠されたスキル/mcp__github__list_prsのような MCP プロンプト
プロンプトを省いたとき
プロンプトを渡さない /loop は、組み込みのメンテナンス用プロンプトを実行します。各回で上から順に、会話の中の未完了の作業を続ける、現在のブランチの PR の面倒を見る(レビューコメント・失敗した CI・マージコンフリクト)、ほかに何もなければバグ探しや簡素化などの整理を行う、という流れです。その範囲外の新しい取り組みは始めず、push や削除のような取り消せない操作は、会話の中ですでに許可されている作業の続きである場合にだけ行います。
# 間隔は Claude 任せでメンテナンス用プロンプトを回す
/loop
# 15分の固定間隔で回す
/loop 15m
loop.md とループの止め方
引数なしの /loop で使うプロンプトは、loop.md というファイルで自分用に差し替えられます。これは「引数なしの /loop の既定プロンプト」を1つ定義するファイルで、複数のタスクを並べる場所ではありません。コマンドラインでプロンプトを渡したときは無視されます。
探す場所は2つで、先に見つかったほうが使われます。
.claude/loop.md… プロジェクト単位。両方あるときはこちらが優先~/.claude/loop.md… ユーザー単位。独自の loop.md を持たないすべてのプロジェクトに適用
書式の決まりはなく、/loop に直接打ち込むつもりで Markdown を書きます。公式の例は、リリースブランチを健全に保つための指示です。
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.
内容は「release/next の PR を確認し、CI が赤なら失敗ジョブのログを取って原因を調べ最小限の修正を push する。新しいレビューコメントがあれば1件ずつ対応してスレッドを resolve する。すべて緑で静かなら1行でそう言う」というものです。loop.md の変更は次の回から反映されるので、ループを回しながら指示を調整できます。25,000 バイトを超えた部分は切り捨てられるため、短く保ちます。
ループを止める
- 間隔任せのループ: 次の回を待っている間に
Escを押すと、予約中の起動が消えてループは再実行されません。ただし、自然文で Claude に頼んで作ったタスクはEscの影響を受けず、削除するまで残ります - Claude が自分で終える: 間隔任せのモードでは、作業が終わると Claude が
ScheduleWakeupツールをstop: trueで呼んでループを終えることがあります。ある回が再予約も停止もせずに終わった場合は、約20分後に1回だけ予備の起動がかかり、その回でも再予約されなければループは終了します - 固定間隔のループ: 次の節の方法でキャンセルするか、7日が経過するまで動き続けます
リマインダーとタスクの管理
一度きりのリマインダー
1回だけ実行したいときは /loop を使わず、自然文で頼みます。Claude は実行後に自動で消える単発タスクを登録し、いつ実行するかを確認として返します。
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
一覧とキャンセル
タスクの一覧やキャンセルも自然文で頼めます。
what scheduled tasks do I have?
cancel the deploy check job
裏で Claude が使っているのは次の3つのツールです。
| ツール | 役割 |
|---|---|
CronCreate | 新しいタスクを登録する。5フィールドの cron 式、実行するプロンプト、繰り返しか1回きりかを受け取る |
CronList | 登録済みのタスクを ID・スケジュール・プロンプト付きで一覧する |
CronDelete | ID を指定してタスクをキャンセルする |
タスクには8文字の ID が振られ、CronDelete に渡して使います。1つのセッションで同時に持てるタスクは50件までです。
cron 式の書き方
CronCreate は標準的な5フィールドの cron 式(分 時 日 月 曜日)を受け付けます。どのフィールドでもワイルドカード *、単一の値 5、刻み */15、範囲 1-5、カンマ区切りのリスト 1,15,30 が使えます。
| 式 | 意味 |
|---|---|
*/5 * * * * | 5分ごと |
0 * * * * | 毎時0分 |
7 * * * * | 毎時7分 |
0 9 * * * | 毎日9時(ローカル時刻) |
0 9 * * 1-5 | 平日の9時 |
30 14 15 3 * | 3月15日14時30分 |
曜日は日曜が 0 または 7、土曜が 6 です。L・W・? のような拡張構文や、MON・JAN のような名前での指定には対応していません。日と曜日の両方を指定した場合は、vixie-cron と同じくどちらか一方に一致すれば実行されます。
実行タイミングと制約
いつ実行されるか
スケジューラは1秒ごとに実行時刻が来たタスクを確認し、低い優先度でキューに入れます。予約されたプロンプトはターンとターンの間に実行され、Claude が応答している最中に割り込むことはありません。実行時刻に Claude が作業中なら、そのターンが終わるまで待ちます。
時刻はすべてローカルのタイムゾーンで解釈されます。0 9 * * * は UTC ではなく、Claude Code を動かしている場所の9時です。
ジッター(実行時刻のずれ)
すべてのセッションが同じ時刻に一斉に API を呼ばないよう、スケジューラは実行時刻に決まったずれを加えます。
- 繰り返しタスクは、予定時刻から最大30分遅れて実行されます(1時間より短い間隔のタスクは最大で間隔の半分)。毎時0分に予約したジョブは、0分から30分の間のどこかで実行されます
- 毎時0分または30分に予約した単発タスクは、最大90秒早く実行されます
ずれの量はタスク ID から決まるので、同じタスクなら毎回同じだけずれます。時刻を正確に合わせたい場合は、0 9 * * * ではなく 3 9 * * * のように 0分・30分以外を選ぶと、単発タスクのずれはかかりません。なお、間隔を Claude に任せたループにはジッターは適用されません。
7日間の期限
繰り返しタスクは作成から7日で自動的に期限切れになり、最後に1回実行してから自分自身を削除します。忘れたループが延々と回り続けないための上限です。間隔任せのループにもこの期限は適用されます。7日を超えて続けたい場合は期限前にキャンセルして作り直すか、Routines やデスクトップのスケジュールタスクを使います。
セッション単位であることによる制約
- タスクが実行されるのは、Claude Code が起動していて手が空いているときだけです。ターミナルを閉じたりセッションを終了したりすると止まります。ただし、セッションをバックグラウンドに回すと
/loopのタスクはバックグラウンドセッションに引き継がれ、ターミナルなしで動き続けます - 取りこぼした回の埋め合わせはありません。長い処理の間に予定時刻を過ぎた場合、手が空いたときに1回だけ実行されます(逃した回数分ではありません)
- 新しい会話を始めるとタスクはすべて消えます。
claude --resumeやclaude --continueで再開するとCronCreateで登録したタスクは復元されますが、期限切れの繰り返しタスクと予定時刻を過ぎた単発タスクは除かれます。間隔任せの/loopは復元されないので、もう一度/loopを実行します
スケジューラを無効にする
環境変数 CLAUDE_CODE_DISABLE_CRON=1 を設定すると、スケジューラ全体が無効になります。cron ツールと /loop が使えなくなり、登録済みのタスクも実行されなくなります。
# スケジュール実行を無効にして起動する
CLAUDE_CODE_DISABLE_CRON=1 claude
無人で確実に回す必要がある cron 的な自動化には、クラウドで動く Routines、CI の schedule トリガーを使う GitHub Actions、ローカルで動くデスクトップのスケジュールタスクが公式に案内されています。
関連記事: バックグラウンドセッションと agent view / Claude Code GitHub Actions
本記事は Anthropic 公式ドキュメント「Run prompts on a schedule」に基づく非公式の日本語解説です(確認日 2026-09-16)。コマンド一覧・ツール一覧・環境変数のページとも照合しています。仕様は更新される場合があるため、利用前に公式ドキュメントをご確認ください。