Claude Codeの定期タスク実行は「1つの機能」ではなく、動作場所が異なる3種類の仕組みに分かれています。セッション内で完結する/loop、クラウドで動くRoutines、ローカルで動くDesktopスケジュールタスクです。本記事では2026年8月時点の公式ドキュメントに基づき、それぞれの違いと正しいコマンド構文、注意点を整理します。
3つの定期実行の仕組み|まず違いを理解する
Claude Codeで「定期的に何かを実行させたい」場合、目的に応じて3つの選択肢があります。
| 方式 | 実行場所 | PCの電源 | セッションを開いている必要 | 最小間隔 |
|---|---|---|---|---|
| Cloud(Routines) | Anthropic管理のクラウド | 不要 | 不要 | 1時間 |
| Desktopスケジュールタスク | 自分のマシン | 必要 | 不要 | 1分 |
/loop |
自分のマシン | 必要 | 必要(開いたセッション内) | 1分 |
「PCの電源を落としても動かしたい」ならCloud(Routines)、「ローカルファイルにアクセスしたい」ならDesktopタスク、「今のセッションで手早く監視したい」なら/loop、と使い分けるのが公式の推奨です。
/loopの使い方|間隔とプロンプトの組み合わせで動作が変わる
セッション内で繰り返し実行する/loopは、渡す内容によって挙動が変わります。
| 渡す内容 | 例 | 動作 |
|---|---|---|
| 間隔+プロンプト | /loop 5m check the deploy |
固定間隔で実行 |
| プロンプトのみ | /loop check the deploy |
Claudeが状況に応じて間隔を自分で決めて実行 |
| 何も渡さない | /loop |
組み込みのメンテナンスプロンプト、またはloop.mdがあればその内容を実行 |
/loop 5m check if the deployment finished and tell me what happened
間隔の単位はs(秒)・m(分)・h(時間)・d(日)に対応します。cronの最小粒度が1分のため、秒指定は繰り上げられます。間隔をつけずにプロンプトだけ渡すと、Claudeがビルド進行中は短め・落ち着いたら長めというように、1分〜1時間の範囲で自分で待機時間を決めて実行します。
1回限りのリマインダーは自然言語で
1回だけ実行したい場合は、コマンドではなく自然言語で依頼します。
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claudeが指定時刻をcron式に変換し、実行後は自動的に自身を削除します。
裏側の仕組み|CronCreate・CronList・CronDelete
スケジュール管理は「タスクの一覧を見せて」「〇〇のジョブを削除して」と自然言語で頼めますが、内部的には次の3つのツールが使われています。
| ツール | 役割 |
|---|---|
| CronCreate | 5フィールドのcron式・実行するプロンプト・繰り返しか1回限りかを指定して新規タスクを登録する |
| CronList | 登録中のタスクをID・スケジュール・プロンプトとともに一覧表示する |
| CronDelete | 8文字のタスクIDを指定してキャンセルする |
cron式は「分 時 日 月 曜日」の標準5フィールド形式で、*/5 * * * *(5分ごと)、0 9 * * *(毎日9時)、0 9 * * 1-5(平日9時)のように指定します。すべてローカルタイムゾーンで解釈されます。
制限事項|見落としやすい4点
- 1セッション最大50タスク:それ以上は登録できません。
- 繰り返しタスクは作成から7日で自動失効:最後にもう1回実行されてから自動的に削除されます。長期運用したい場合はCloud(Routines)かDesktopタスクを使います。
- セッションが終了すると全タスクが消える:新しい会話を始めると、そのセッションに紐づくタスクはクリアされます。
--resumeや--continueで再開した場合は、期限内の繰り返しタスクと、まだ発火時刻が来ていない1回限りのタスクだけが復元されます。 - 手が離れている間は発火し続けない:ターミナルを閉じる、あるいはセッションが終了すると発火が止まります。バックグラウンドセッションに移した場合は、ターミナルなしでも
/loopタスクは継続します。
スケジューラは1秒ごとに期限が来たタスクをチェックし、優先度を下げてキューに入れます。Claudeが応答の途中であれば、手が空くまで実行を待ちます。また同じ時刻に全セッションのリクエストが集中しないよう、実行時刻には最大30分程度のジッター(ばらつき)が加えられます。正確な時刻にこだわる場合は、0 9 * * *ではなく3 9 * * *のように0分・30分をずらして指定すると安定します。
実践ユースケース
1. デプロイの完了監視
/loop 5m check if the deployment finished and tell me what happened
2. PRのCI・レビュー対応を自動で回す
/loop check whether CI passed and address any review comments
3. リリースブランチの定期チェック(loop.mdで定義)
# .claude/loop.md
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.
loop.mdは.claude/loop.md(プロジェクト単位、優先)または~/.claude/loop.md(ユーザー単位)に置くと、引数なしの/loopのデフォルト挙動を上書きできます。25,000バイトを超える内容は切り捨てられる点に注意してください。
CI/CDとの使い分け
Scheduled TasksはGitHub ActionsやJenkins等のCI/CDと似ていますが、決定的な違いがあります。
- CI/CD:決められたスクリプトを実行。判断力なし。
- Scheduled Tasks:AIが状況を判断してアクションを決定。未知の問題にも対応可能。
両者は補完的な関係にあります。CIでビルド・テストを回し、Scheduled Tasksで「テスト結果を分析して改善提案を出す」といった組み合わせが効果的です。恒常的に無人稼働させたい場合は、公式もCloud(Routines)・GitHub Actions・Desktopスケジュールタスクを推奨しています。
よくある質問
環境変数でスケジューラを止められますか?
CLAUDE_CODE_DISABLE_CRON=1を設定すると、スケジューラ全体が無効化され、cronツールと/loopが使えなくなり、既存の登録タスクも発火しなくなります。
スキルを定期実行できますか?
/loop 20m /review-pr 1234のようにスキルをプロンプトとして渡せます。ただしClaudeが自律的に呼び出せないよう制限されたスキル(disable-model-invocation: true指定など)は、定期実行時にプレーンテキストとして渡されるだけで実行されません。
ミスして実行されなかった回はどうなりますか?
取りこぼした分の埋め合わせはありません。Claudeが長時間の処理でビジー状態だった場合、手が空いた時点で1回だけ実行され、逃した回数分は実行されません。
運営元 Uravation よりAIエージェントを構想から本番運用まで進める順番と、体制・KPIの決め方をまとめた資料を無料で公開しています。 AIエージェント導入ロードマップを受け取る(無料)
参考文献
最終確認日: 2026年8月23日
この記事を読んで導入イメージが固まってきた方へ
UravationではAIエージェント導入の研修・コンサルを行っています。
この記事はAIgent Lab編集部がお届けしました。
