Claude Codeの/loop — セッションを開いたまま繰り返しタスクを回す
/loopでセッション内に繰り返しタスクを回す仕組みと、固定間隔・自己ペース・loop.mdの使い分け、Routines・Desktopスケジュールとの違いをまとめます。
こんな場面で使う
デプロイの完了待ち、CIの通過待ち、レビューコメントへの対応、長時間ビルドの監視など、「終わるまで席を外したいが、終わったらすぐ気づきたい」作業全般が対象です。人が定期的に画面を覗きに戻ってくる代わりに、Claude自身が状況をポーリングして結果を報告してくれます。1回限りのリマインダーであれば/loopをわざわざ使わず、自然言語で「45分後にテストが通ったか確認して」のように依頼するだけで、単発発火のタスクとしてスケジュールされます。
Claude Codeの/loopは何をするコマンドか
/loop(エイリアス/proactive)は、セッションを開いたまま同じプロンプトを繰り返し実行するバンドル済みSkillです。人が毎回タイマーを見ながら指示を打ち直す代わりに、Claude自身が次の実行タイミングまで待機し、条件が整った段階で自動的に再開します。ターミナルを見張り続ける手間をClaude側に肩代わりさせる仕組みだと考えるとイメージしやすいでしょう。間隔とプロンプトはどちらも省略でき、何を渡すかで挙動が変わります。
タスクは実行中のセッションに紐づき、新しい会話を始めると消えます。--resumeや--continueで再開した場合は、期限切れでない繰り返しタスクが復元されます。
text /loop 5m デプロイが終わったか確認して結果を教えて
/loopに渡す間隔とプロンプトで挙動がどう変わるか
渡す情報の組み合わせが3パターンあり、それぞれ動きが異なります。
| 渡すもの | 例 | 挙動 |
|---|---|---|
| 間隔とプロンプト | 例/loop 5m デプロイ確認 | 挙動固定間隔で実行 |
| プロンプトのみ | 例/loop デプロイ確認 | 挙動Claudeが毎回自己ペースで間隔を選ぶ |
| 間隔もプロンプトもなし | 例/loop | 挙動組み込みのメンテナンスプロンプト、または.claude/loop.mdが実行される |
/loop 20m /review-pr 1234のようにスキルを渡すこともできます。ただしスキルが自動実行されるのはClaudeが自分の判断で呼び出せる状態のときだけです。/permissionsや/modelのような組み込みコマンド、disable-model-invocation: trueが付いたSkill、skillOverridesで隠されたSkillは、実行されず単なるテキストとしてClaudeに渡されます。
固定間隔で回すとき
間隔を渡すと、Claudeはそれをcron式に変換してジョブを登録し、実行間隔とジョブIDを返します。間隔は30mのように先頭に置くことも、every 2 hoursのように文中に置くこともできます。単位は秒s・分m・時h・日dです。
cronの最小粒度は1分なので、秒指定は切り上げられます。7mや90mのようにcronのステップにきれいに乗らない間隔は、最も近い有効な間隔に丸められ、その旨がメッセージで示されます。
間隔を省略したとき — 自己ペース実行
間隔を省略すると、Claudeは固定cronではなく、毎回の実行結果を見て次の待ち時間を1分から1時間の範囲で自分で決めます。ビルドが進行中やPRがアクティブなら短い待ち時間、動きが止まっていれば長い待ち時間、という具合です。選んだ待ち時間とその理由は、各実行の最後に表示されます。
CIの通過とレビューコメントへの対応を繰り返し見張る例です。
text /loop CIが通ったか確認してレビューコメントがあれば対応して
自己ペースの/loopでは、Claudeがバックグラウンドスクリプトを実行してその出力を逐次受け取るMonitorツールを直接使うこともあります。ポーリングそのものが不要になるため、プロンプトを間隔実行で繰り返すよりトークン効率がよく応答も速くなる傾向があります。
組み込みのメンテナンスプロンプトは何をするか
プロンプトを省略した/loopは、毎回の実行で次の順に作業を進めます。まず会話に残っている未完了の作業を続け、次に現在のブランチのプルリクエストの世話(レビューコメントへの対応・失敗したCIの調査・マージコンフリクトの解消)をし、それらが片付いていればバグ探しや簡略化のようなクリーンアップ作業に着手します。会話がすでに許可した範囲を超える新しい取り組みは始めず、pushや削除のような取り消しづらい操作も、トランスクリプトが既に許可した内容の延長でしか実行しません。
loop.mdで既定プロンプトを差し替える
.claude/loop.md(プロジェクト単位、優先)または~/.claude/loop.md(ユーザー単位)を置くと、引数なしの/loopが実行する組み込みメンテナンスプロンプトを自分の指示に差し替えられます。ファイルは通常のMarkdownで、/loopに直接打ち込むつもりの指示文をそのまま書きます。編集内容は次の実行から即座に反映されるため、動かしながら指示を調整できます。ファイルサイズは25,000バイトを超えると切り詰められる点に注意します。
コマンドラインでプロンプトを渡した場合、loop.mdは無視されます。追加のプロンプトを並行して動かしたい場合は/loop <プロンプト>を使うか、Claudeに直接依頼してスケジュールします。
/loop・Routines・Desktopスケジュールはどう違うか
Claude Codeには繰り返し・定期実行の手段が3つあり、動く場所と持続性が異なります。
| Routines(クラウド) | Desktopスケジュール | /loop | |
|---|---|---|---|
| 実行場所 | Routines(クラウド)クラウド | Desktopスケジュール自分のマシン | /loop自分のマシン |
| マシンの起動が必要か | Routines(クラウド)不要 | Desktopスケジュール必要 | /loop必要(セッションも開いたまま) |
| 再起動後も残るか | Routines(クラウド)残る | Desktopスケジュール残る | /loop--resumeで期限内なら復元 |
| 最小間隔 | Routines(クラウド)1時間 | Desktopスケジュール1分 | /loop1分 |
マシンを閉じても確実に動かしたいならRoutines、ローカルファイルへのアクセスが要るならDesktopスケジュール、セッションを開いたその場でちょっと様子見したいなら/loop、という住み分けです。Claude Code Routinesはクラウドで恒久的に走らせる仕組みで、/loopはターミナルを開いている間だけ動く自己ペースの一時的な仕組みという点が最大の違いです。
/loopを止める・管理する
待機中の/loopはEscで止められます。保留中の次回実行がキャンセルされ、それ以降は発火しません。ただし、Claudeに直接依頼してスケジュールしたタスクはEscの影響を受けず、削除するまでその場に残ります。
自己ペースモードでは、タスクが完了したとClaudeが判断すればループ自体を終了させることもあります。1回の実行がスケジュール変更も停止もせずに終わった場合は、約20分後にフォールバックの再実行が1回だけ予約され、それでも変化がなければループは終了します。
タスク一覧の確認やキャンセルは自然言語で依頼できます。
text どんなスケジュールタスクが動いていますか
text デプロイ確認のジョブをキャンセルして
繰り返しタスクは作成から7日で自動的に期限切れになり、最後にもう1回発火してから消えます。7日を超えて動かし続けたい場合は、期限前に再作成するか、RoutinesやDesktopスケジュールを使います。
/loopの制約
/loopはセッションスコープの仕組みであるがゆえの制約を持ちます。使う前に知っておくと、想定外の動きに戸惑わずに済みます。
- アイドル状態でしか発火しない: Claudeが応答中のときにスケジュールされた時刻が来ても、その場では実行されず、現在のターンが終わってから発火します
- 見逃した回の埋め合わせはしない: 長時間の応答でスケジュール時刻を何度も過ぎても、アイドルに戻ったときに1回だけ実行されます。逃した回数分がまとめて実行されるわけではありません
- 新しい会話を始めるとタスクが消える: セッションスコープのタスクは、新規に会話を始めた時点で全て消去されます。継続したい場合は
--resumeか--continueで再開します - ターミナルを閉じると止まる: セッションが終了すればタスクも止まります。ただしセッションをバックグラウンド化した場合は、ターミナルなしで動き続けます
- 保存先がシンボリックリンクだと失敗する: タスク一覧はプロジェクトの
.claudeディレクトリに保存されるため、このディレクトリやタスクファイルがシンボリックリンクになっているとスケジュール自体がエラーで失敗します
恒久的に動かし続けたい自動化には、これらの制約を持たないRoutinesやGitHub Actionsのscheduledトリガー、Desktopスケジュールのほうが向いています。マシンの電源やターミナルの状態に依存しない実行環境を必要とするなら、最初からこちらを選ぶほうが手戻りは少なくて済みます。逆に言えば、こうした制約を受け入れられる範囲、つまり自分がターミナルを見ている作業セッション中の様子見には/loopがそのまま向いていて、余計な設定なしにすぐその場で使い始められます。
よくある質問
/loopでの間隔指定に上限はありますか
固定間隔の/loop自体に上限はありませんが、繰り返しタスクは作成から7日で自動的に期限切れになります。長期運用にはRoutinesかDesktopスケジュールが向きます。
/loopと似た仕組みの/goalとの違いは何ですか
/loopは時間の間隔でプロンプトを繰り返す仕組みです。ターンをまたいで条件を満たすまで自走し続けたい場合は、間隔ではなく完了条件で動く/goalが適しています。
指定した時刻ちょうどに発火しますか
同じ時刻に多数のセッションが一斉にAPIへアクセスしないよう、スケジューラは発火時刻に決まった範囲のずれ(ジッター)を加えます。繰り返しタスクは、間隔が1時間未満なら間隔の半分まで遅れて発火することがあり、毎時00分・30分に予定した単発タスクは最大90秒前倒しで発火することがあります。厳密な時刻にこだわる場合は、00分・30分以外の分を指定すると単発タスクのジッターは適用されません。また、自己ペースの/loopはClaudeが毎回待ち時間を決める性質上、このジッター規則自体が適用されません。
Amazon BedrockなどではLoopの挙動は同じですか
Amazon Bedrock、Claude Platform on AWS、Google CloudのAgent Platform、Microsoft Foundryでは挙動が一部異なります。間隔なしのプロンプトは自己ペースではなく固定10分間隔で実行され、プロンプトなしの/loopはメンテナンスプロンプトやloop.mdを実行せず使い方メッセージを表示します。
まとめ
/loopは、セッションを開いたままプロンプトを繰り返し実行する自己ペース型の仕組みです。固定間隔・自己ペース・loop.mdによる既定プロンプト差し替えの3通りの使い方があり、7日で自動的に期限切れになります。マシンの起動が要らず恒久的に動かすならRoutines、ローカルファイルにアクセスしたいならDesktopスケジュール、開いているセッションでその場に様子見したいなら/loop、と目的に応じて選びます。