定期実行と /loop
プロンプトを定期的に動かす方法です。セッション内の /loop と cron ツール、デスクトップアプリのローカルスケジュールタスク、クラウドのルーティンの違いと、使い方・制限をまとめています。
スケジュールタスクを使うと、Claude が決まった間隔でプロンプトを自動で再実行します。デプロイの状況の確認、PR の見守り、長いビルドの経過確認、セッション中の後回しの用事の知らせなどに使います。イベントに反応させたいなら、ポーリングの代わりにチャネルがあります(CI が失敗をセッションに直接押し込めます)。間隔ではなく、条件に達するまでターンを続けさせるなら /goal を使います。
- 方法は3つ:クラウド(ルーティン)・デスクトップのスケジュールタスク・セッション内の
/loop /loopのタスクはセッションに結びつく。--resumeや--continueで再開すると、期限切れでないものは復元される(例外は「制限」の節)- セッションに依存しない定期実行は、ルーティン・デスクトップのスケジュールタスク・GitHub Actions を使う
スケジュールの方法を比べる#
| クラウド(ルーティン) | デスクトップ | /loop |
|
|---|---|---|---|
| 動く場所 | クラウド(既定では 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のような組み込みコマンド- 同梱の
/verifyを含む、disable-model-invocation: trueのスキル skillOverrides設定やSkillの deny ルールで Claude から隠されたスキル/mcp__github__list_prsのような MCP のプロンプト
固定の間隔で動かす#
間隔を与えると、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分なので、秒は1分に切り上げられます。7m や 90m のように、きれいな cron の刻みにならない間隔は、近い刻みに丸められ、Claude が選んだ値を伝えます。
Claude に間隔を選ばせる#
間隔を省くと、固定の cron ではなく、Claude が動的に間隔を選びます。各反復のあと、見たものに応じて、1分〜1時間の遅延を選びます。ビルドが終わる間や PR が動いている間は短く、保留中のものがなければ長くなります。選んだ遅延とその理由が、各反復の終わりに出ます。
/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 以降が必要です。
同梱のメンテナンス用プロンプト#
プロンプトを省くと、Claude は自分で与えたものの代わりに、同梱のメンテナンス用プロンプトを使います。各反復で、次を順に行います。
- 会話の未完の作業を続ける
- 現在のブランチの PR を面倒みる(レビューのコメント・失敗した CI・マージの競合)
- ほかに保留がなければ、バグ探しや簡素化のような片づけをする
Claude は、この範囲の外で新しい取り組みを始めません。push や削除のような元に戻せない操作は、トランスクリプトがすでに許可した作業の続きであるときだけ進みます。
/loop
素の /loop は、このプロンプトを動的に選んだ間隔で動かします。/loop 15m のように間隔を付ければ、固定のスケジュールで動かします。
loop.md で既定のプロンプトを変える#
loop.md ファイルを作ると、同梱のメンテナンス用プロンプトを自分の指示に置き換えられます。素の /loop の既定のプロンプトを1つ定義するもので、別々のスケジュールタスクの一覧ではありません。コマンドラインでプロンプトを与えたときは、無視されます。ほかのプロンプトも並べてスケジュールするには、/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 バイトを超えた分は切り捨てられます。
ループを止める#
Claude が間隔を選ぶ /loop が次の反復を待っている間に止めるには、Esc を押します。保留中の起床が消えるので、ループはもう動きません。Claude に直接頼んでスケジュールしたタスクは Esc の影響を受けず、削除するまで残ります。Claude が間隔を選ぶモードでは、作業が終わったときに Claude が自分でループを終わらせることもあります。Claude は ScheduleWakeup ツールを stop: true で呼び、保留中の起床をすぐ取り消します。反復が、再スケジュールも停止もせずに終わると、Claude Code は約20分後の起床を1回だけ予備として設定し、その反復も再スケジュールしなければ、ループを終えます。固定の間隔のループは、ほかのスケジュールタスクと同じようにキャンセルするか、7日が経つまで動き続けます。
1回限りのリマインダー#
1回きりのリマインダーは、/loop でなく、自然な言葉で頼みます。Claude は、実行後に自分で消える、1回だけ動くタスクを登録します。
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 があります。1つのセッションが同時に持てるスケジュールタスクは、最大50個です。
スケジュールタスクの動き方#
スケジューラーは1秒ごとに期限が来たタスクを確かめ、低い優先度でキューに入れます。スケジュールされたプロンプトは、Claude が応答している最中ではなく、ターンの合間に動きます。期限が来たとき Claude が忙しければ、プロンプトは現在のターンが終わるまで待ちます。時刻はすべてローカルのタイムゾーンで解釈されます。0 9 * * * は UTC ではなく、Claude Code を動かしている場所の午前9時です。
ジッター#
すべてのセッションが同じ時刻に API を叩くのを避けるため、スケジューラーは起動時刻に決まった偏りを足します。
- 繰り返すタスクは、予定の時刻から最大30分後まで(1時間より頻繁に動くタスクは、間隔の半分まで)に動く。毎時の
:00に設定したジョブは、:30までのどこかで動く - 毎時の0分か30分に設定した1回限りのタスクは、最大90秒早く動く
偏りはタスク ID から導かれるので、同じタスクは常に同じ偏りになります。正確な時刻が要るなら、0 9 * * * でなく 3 9 * * * のように、:00 と :30 以外の分を選ぶと、1回限りのジッターは適用されません。
7日の期限#
繰り返すタスクは、作成から7日で自動的に期限切れになります。最後に1回動いてから、自分で消えます。忘れたループが動き続ける期間に上限を設けるためです。繰り返すタスクをもっと長く保つには、期限が切れる前にキャンセルして作り直すか、耐久性のあるスケジュールにルーティンかデスクトップのスケジュールタスクを使います。
cron 式のリファレンス#
CronCreate は、標準の5フィールドの cron 式を受け付けます:minute hour day-of-month month day-of-week。すべてのフィールドで、ワイルドカード(*)・単一の値(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日のローカルの午後2時30分 |
曜日は、日曜が 0 または 7、土曜が 6 です。L・W・? の拡張構文や、MON・JAN のような名前の別名は使えません。日と曜日の両方が指定されているときは、どちらかが合えば、その日付に合うと数えます(標準の vixie-cron の意味づけ)。
スケジュールタスクを無効にする#
環境変数 CLAUDE_CODE_DISABLE_CRON=1 を設定すると、スケジューラーが完全に無効になります。cron のツールと /loop が使えなくなり、すでにスケジュールされたタスクも動かなくなります。無効化のフラグの全体は環境変数一覧を見てください。
制限#
セッションに結びつくスケジュールには、構造上の制約があります。
- タスクが動くのは、Claude Code が動いていてアイドルのときだけ。端末を閉じたりセッションを終えたりすると止まる。セッションをバックグラウンドへ移すと、
/loopのタスクはバックグラウンドのセッションへ引き継がれ、端末なしで動き続ける - 取りこぼした起動の追いつきはない:長い要求の間に予定の時刻が過ぎても、Claude がアイドルになったとき1回だけ動き、取りこぼした間隔の数だけは動かない
claude --resumeかclaude --continueでセッションを再開すると、CronCreateでスケジュールしたタスクが復元される。ただし、期限切れの繰り返しタスクと、予定の時刻が過ぎた1回限りのタスクは除く。Claude が間隔を選ぶ/loopは復元されないので、/loopをもう一度実行して始め直す。バックグラウンドの Bash とモニターのタスクは、再開時に復元されない- 機能フラグの取得をオフにしていると、セッションをまたいで残すよう頼んだタスクは、プロジェクトの
.claude/scheduled_tasks.jsonに保存される。.claudeディレクトリかそのファイルがシンボリックリンクだと、Claude Code はタスクをスケジュールせず、エラーを返す。保存されたタスクが動くのは、作ったプロジェクトのフォルダだけ。ファイルを別のフォルダ(新しい worktree など)へコピーすると、そこのセッションはコピーされたタスクを一覧に出すが動かさないので、そのフォルダで作り直す
人手なしで動かす cron 駆動の自動化には、次があります。
- ルーティン:スケジュール・API 呼び出し・GitHub のイベントで、クラウドで動く
- GitHub Actions:CI の
scheduleトリガーを使う - デスクトップのスケジュールタスク(次の節):自分のマシンでローカルに動く
デスクトップアプリのスケジュールタスク#
デスクトップアプリのスケジュールタスクは、決めた時刻と頻度で、新しいセッションを自動で始めます。日次のコードレビュー・依存関係の更新の確認・カレンダーと受信箱から作る朝のブリーフィングなどに使います。デスクトップアプリの「Routines」ページでは、ローカルのスケジュールタスクと、リモートのルーティンの両方を作れます。ローカルのタスクは、ファイルとツールに直接アクセスできる自分のマシンで動きますが、アプリが開いていて、コンピュータが起きている間しか動きません。リモートのルーティンは、コンピュータの電源が切れていてもクラウドで動き、API 呼び出しや GitHub のイベントでも起動できます。このページの内容はローカルのタスクで、リモートのルーティンとそのトリガーはルーティンを見てください。
補足
既定では、スケジュールタスクは、作業ディレクトリの、未コミットの変更を含む状態に対して動きます。タスクを作るときに worktree のトグルをオンにすると、各実行に、独自の隔離された git worktree が与えられます(並列セッションと同じ要領)。
タスクを作る#
Claude Desktop の 1.1.5368 より前では、ローカルのスケジュールタスクは使えません。「Code」タブで、サイドバーか、サイドバーの「More」メニューの「Routines」をクリックし、「New routine」を押して「Local」を選びます。次のフィールドを設定します。
| フィールド | 内容 |
|---|---|
| Name | タスクの識別子。小文字のケバブケースに変換されてディスク上のフォルダ名になる。タスクの中で一意にする |
| Description | タスクの一覧に出る短い要約 |
| Instructions | タスクが動いたとき Claude にしてほしいこと。プロンプト欄のほかのメッセージと同じように書く。入力欄には、権限モードとモデルのピッカーがあり、その下で作業フォルダと、隔離された worktree で動かすかを選ぶ |
| Schedule | タスクを動かす頻度(下の「スケジュールの選択肢」) |
保存する前に、フォルダの指定が必要です。そのフォルダをまだ信頼していなければ、保存の前に信頼を求められます。どのセッションでも、やりたいことを説明してタスクを作ることもできます。たとえば「set up a daily code review that runs every morning at 9am」は繰り返すタスクを作り、「remind me at 3pm tomorrow to check the deploy」は、動いたあとに自分で無効になる1回限りのタスクを作ります。
スケジュールの選択肢#
Schedule のコントロールからプリセットを選びます。
| プリセット | 内容 |
|---|---|
| Manual | スケジュールなし。「Run now」を押したときだけ動く。要望に応じて動かすプロンプトの保存に使える |
| Hourly | 毎時動く |
| Daily | 選んだローカル時刻に毎日動く |
| Weekdays | Daily と同じだが、土日を飛ばす |
| Weekly | 時刻と曜日のピッカーが出る |
15分ごと・毎月1日・将来の特定時刻での1回の実行のように、ピッカーにない間隔は、デスクトップのどのセッションでも Claude に頼んで設定します。「schedule a task to run all the tests every 6 hours」のように、普通の言葉で頼みます。
動き方#
スケジュールタスクは自分のマシンで動きます。デスクトップアプリは、アプリが開いている間、1分ごとにスケジュールを確かめ、タスクの期限が来ると、開いている手動のセッションとは別に、新しいセッションを始めます。API のトラフィックをずらすため、各タスクは予定時刻から数分の小さな遅れを持ちます。遅れは決まった値で、同じタスクは常に同じ偏りで始まります。
タスクが動くと、デスクトップ通知が出て、サイドバーの「Scheduled」の節の下に新しいセッションが現れます。開くと、Claude がしたことを見る・変更をレビューする・権限プロンプトに答えることができます。Claude は、自分で始めたセッションと同じように、ファイルの編集・コマンドの実行・コミットの作成・PR の作成ができますが、デスクトップアプリのセッションの面を通した、デスクトップのセッション間のメッセージの送受信はできません。
タスクが動くのは、デスクトップアプリが動いていて、コンピュータが起きている間だけです。コンピュータが予定の時刻のあいだスリープしていると、その実行は飛ばされます。アイドルのスリープを防ぐには、「Settings > This computer > System」の「Keep computer awake」をオンにします(ノートの蓋を閉じるとスリープします)。コンピュータの電源が切れていても動かしたい、または API 呼び出しや GitHub のイベントで起動したいタスクには、リモートのルーティンを作ります。
取りこぼした実行#
アプリの起動時とコンピュータの復帰時に、デスクトップアプリは、各タスクが過去7日間に取りこぼした実行があるかを確かめます。あれば、最後に取りこぼした時刻について、追いつきの実行をちょうど1回始め、それより古いものは捨てます。6日取りこぼした日次のタスクは、復帰時に1回動きます。追いつきの実行が始まると、通知が出ます。プロンプトを書くときはこれを意識してください。午前9時にスケジュールしたタスクが、コンピュータが1日眠っていれば、午後11時に動くことがあります。時刻が重要なら、プロンプトの中に歯止めを入れます(例:「Only review today's commits. If it's after 5pm, skip the review and just post a summary of what was missed.」)。
スケジュールタスクの権限#
各タスクは、作成時か編集時に設定する、自分の権限モードを持ちます。~/.claude/settings.json の allow ルールも、スケジュールタスクのセッションに適用されます。タスクがManual モードで動き、権限のないツールを実行する必要があると、承認するまで実行が止まります。セッションはサイドバーに開いたまま残るので、あとで答えられます。
- 止まりを避けるには、タスクを作ったあとに「Run now」を押し、権限プロンプトを見守り、それぞれで「always allow」を選ぶ。以降のそのタスクの実行は、同じツールを、プロンプトなしで自動で承認する。承認は、タスクの詳細ページで確認・取り消しができる
requiresUserInteractionを付けた MCP ツールは、呼び出しのたびにプロンプトを出し、always allow の選択肢がない。これらのツールを呼ぶ実行は、毎回止まる
スケジュールタスクを管理する#
「Code」タブで、「Routines」の一覧のタスクをクリックして、詳細ページを開きます。ここでできることは次のとおりです。
| 操作 | 内容 |
|---|---|
| Run now | 次の予定の時刻を待たずに、すぐタスクを始める |
| Status | Active と Paused を切り替えて、タスクを消さずにスケジュールの実行を止める・再開する |
| Edit | 指示・スケジュール・フォルダなどの設定を変える |
| Review history | 飛ばされた実行を含め、過去のすべての実行を見る。飛ばされた項目にカーソルを置くと理由(コンピュータがスリープしていた・前の実行がまだ進行中・ほかのスケジュールタスクがすでに動いていた)が出る。「Show more」で古い項目を読み込む |
| Review allowed permissions | 「Always allowed」のパネルで、このタスクの保存されたツールの承認を見て取り消す |
| Delete | タスクを消し、作ったすべてのセッションをアーカイブする。確認のダイアログの「Also delete files on disk」にチェックすると、タスクの SKILL.md ファイルと関連データも ~/.claude/scheduled-tasks/ から消える |
デスクトップのどのセッションでも、Claude に頼んで、タスクの一覧・作成・編集・一時停止ができます(「pause my dependency-audit task」「show me my scheduled tasks」)。タスクの削除は、詳細ページの「Delete」ボタンを使います。動いているセッションの中から、スケジュールタスクが自分のスケジュールやプロンプトを update_scheduled_task の MCP ツールで変えることもできます。たとえば、リリースブランチが作られたのを見つけたら、コードレビューを早めに動かすよう、自分で再スケジュールできます。
タスクのプロンプトをディスク上で編集するには、~/.claude/scheduled-tasks/<task-name>/SKILL.md(CLAUDE_CONFIG_DIR を設定していればその下)を開きます。ファイルは、name と description に YAML の frontmatter を使い、プロンプトが本文です。変更は次の実行から効きます。スケジュール・フォルダ・モデル・有効かどうかはこのファイルになく、編集フォームを使うか、Claude に頼んで変えます。
関連:クラウドで動かすルーティン、CI でスケジュールする GitHub Actions、デスクトップアプリ全体の使い方はデスクトップアプリを見てください。
公式ドキュメント(英語)
2026年10月5日時点の内容をもとに、日本語でまとめています。