Claude CodeのloopコマンドとClaude Desktopのスケジュール、CursorのAutomationsはどう違うのか

Claude CodeのloopコマンドとClaude Desktopのスケジュール、CursorのAutomationsはどう違うのか

2026.03.11

こんにちは、せーのです。今日は Claude Code の2つの定期実行機能(/loop コマンドと Desktop の Scheduled Tasks)を実際に触って比較してみましたので、共有します。

AIのタイマー化がはじまった

2026年3月、AIコーディングツールの「定期実行」が一斉に登場しました。Cursor の Automations、Claude Code の /loop、Claude Desktop の Scheduled Tasks と、エージェントが「呼ばれたら答える」から「常駐して監視・実行する」へ進む転換点です。本記事では Claude まわりの2つをハンズオンしつつ、違いと使い分けを整理します。

前提条件

  • Claude Code v2.1.71 以上(/loop 対応)
  • Claude Desktop 最新版(Scheduled Tasks 対応)
  • MCP 設定済み(Slack など、後述の Step 5 で利用)
  • 有料プラン(Pro / Max / Team / Enterprise)

/loop をやってみた

バージョン確認と基本実行

まずはバージョンとコマンドの存在確認です。

claude -v
# → v2.1.71 以上であること

claude
# 起動後、/ を入力してコマンド一覧に /loop が表示されるか確認

claude_loop1.png

最小構成で試すなら、次のように打ちます。構文は /loop {間隔} {プロンプトまたは/コマンド} で、間隔は s(秒)m(分)h(時間)d(日)で指定します(デフォルトは 10 分)。/loop check the build every 2 hours のように自然言語で書いても解釈されます。

/loop 1m 現在時刻を表示して

1分間隔で現在時刻が表示されます。2〜3回発火を確認したら、新しいプロンプトを入力するか Ctrl+C で停止できます。指定した間隔で動くこと、アイドル時のみ発火すること(応答中に発火時刻を迎えても、アイドルになった時点で 1 回だけ実行され重複しない)、出力がターミナルに出ることを確認しておくとよいです。セッションスコープなので、ターミナルや Claude Code を閉じるとループはすべてキャンセルされます。有効期限は最大 3 日、セッションあたり最大 50 タスクまで。無効化したい場合は環境変数 CLAUDE_CODE_DISABLE_CRON=1 を設定します。

❯ /loop 1m 現在時刻を表示して

⏺ CronCreate(*/1 * * * *: 現在時刻を表示して)
  ⎿  Scheduled bf915151 (Every minute)

⏺ スケジュール設定完了です。

  - プロンプト: 現在時刻を表示して
  - cron式: */1 * * * *
  - 頻度: 毎分実行
  - ジョブID: bf915151

  繰り返しタスクは 3日後に自動失効 します。それより前に停止したい場合は CronDelete でジョブID bf915151
  を指定してください。

⏺ google-calendar - get-current-time (MCP)(timeZone: "Asia/Tokyo")
  ⎿  {
       "currentTime": "2026-03-11T17:18:11.293+09:00",
       "timezone": "Asia/Tokyo",
     … +4 lines (ctrl+o to expand)

⏺ 現在時刻: 2026年3月11日(水)17:18 JST

⏺ google-calendar - get-current-time (MCP)(timeZone: "Asia/Tokyo")
  ⎿  {
       "currentTime": "2026-03-11T17:19:07.975+09:00",
       "timezone": "Asia/Tokyo",
     … +4 lines (ctrl+o to expand)

⏺ 現在時刻: 2026年3月11日(水)17:19 JST

スラッシュコマンドをターゲットにする

/loop のターゲットには、通常のプロンプトだけでなくスラッシュコマンドも指定できます。

/loop 5m /stats

5分ごとに /stats が自動実行されます。

❯ /loop 5m /stats

⏺ CronCreate(*/5 * * * *: /stats)
  ⎿  Scheduled 78968345 (Every 5 minutes)

⏺ スケジュール設定完了:

  - プロンプト: /stats
  - 間隔: 5分ごと (*/5 * * * *)
  - 種別: 繰り返し(3日後に自動期限切れ)
  - ジョブID: 78968345

  キャンセルする場合は CronDelete でジョブID 78968345 を指定してください。

────────────────────────────────────────────────────────────────────────────────────────────────────────
    Overview   Models  (←/→ or tab to cycle)


      Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar
      ··············································█░▓░·░
  Mon ··············································█▓▒·▓·
      ·············································█░▓▒▒▒▓
  Wed ··············································█▒█▒▒▓
      ·············································▒██▓▓█
  Fri ·············································░▒░▓█▓
      ············································░█░░█░▒

      Less ░ ▒ ▓ █ More

  All time · Last 7 days · Last 30 days

  Favorite model: Opus 4.6        Total tokens: 4.0m

  Sessions: 605                   Longest session: 3d 21h 48m
  Active days: 42/49              Longest streak: 25 days
  Most active day: Feb 4          Current streak: 2 days

  Your longest session is ~28x longer than watching Titanic

実践:PR 監視

CLI ツールとの連携例です。

/loop 5m gh pr list --repo anthropics/claude-code --state open --limit 5 を確認して、新しいPRがあれば内容を要約して

5分ごとに GitHub の PR 一覧を取得し、新しい PR があれば要約してくれます。

実践:Slack 要約(MCP 連携)

セッション内の MCP はそのまま /loop のタスクでも使えます。

/loop 5m Slack MCPを使って #times-seino-tsuyoshi(XXXXXXXX)
チャンネルの最新メッセージを5件取得し、要約して

5分ごとに Slack の最新メッセージを取得・要約する動きになります。Slack MCP が正しく呼ばれるか、セッション内の MCP 設定が /loop でも有効かを確認するよい例です。

Slackに次のようなメッセージを用意しました。

claude_loop2.png

コマンドを実行した結果、このようなレスポンスが出ました。

❯ /loop 5m Slack MCPを使って #times-seino-tsuyoshi(CFGMENHQC)
チャンネルの最新メッセージを5件取得し、要約して

⏺ CronCreate(*/5 * * * *: Slack MCPを使って #times-seino-tsuyoshi(CFGMENHQC) チャンネ…)
  ⎿  Scheduled 2d538180 (Every 5 minutes)

⏺ スケジュール設定完了です。

  - ジョブID: 2d538180
  - cron式: */5 * * * *(5分ごと)
  - 内容: #times-seino-tsuyoshi (CFGMENHQC) の最新5件を取得・要約
  - 有効期限: 3日後に自動失効(セッション終了時にも停止)
  - キャンセル: CronDelete でジョブID 2d538180 を指定すれば停止できます

⏺ slack - slack_get_channel_history (MCP)(channel_id: "CFGMENHQC", limit: 5)
  ⎿  {
       "ok": true,
       "messages": [
     … +63 lines (ctrl+o to expand)

⏺ #times-seino-tsuyoshi の最新5件の要約です(すべて【テスト】メッセージ):

  1. おおお食品 - 監視設計レビュー完了 — CloudWatch
  Alarmの閾値チューニングが次のタスク。アラート疲れしない設計を目指している
  2. ブログネタ渋滞中 — Step Functions × Bedrockの組み合わせが面白いので、先にこのネタを書こうかと検討中
  3. えええ工業 - S3バケットポリシー見直し完了 — パブリックアクセスブロックが一部無効だったのを修正済み
  4. CloudFormation勉強会資料作成中 — ドリフト検出のハマりポイントが多く、社内勉強会の資料を準備中
  5. ううう商事 - Lambda移行案件 — テスト環境のパフォーマンスが想定以上で一安心。来週本番デプロイ予定

  全体的に、顧客案件の進捗報告とブログ・勉強会などのナレッジ共有活動の近況が投稿されています。

/loop の裏側:Cron Scheduling Tools

/loop の内部では、次の 3 つの Cron 系ツールが動いています。これらはプロンプトから直接呼び出せるので、/loop を使わずにスケジュールを組みたい場合にも使えます。

ツール 役割
CronCreate 標準 5 フィールドの cron 式(分・時・日・月・曜日)でタスクを登録。ジョブ ID(8 文字)が返る
CronList 現在アクティブなスケジュールタスク一覧を表示
CronDelete ジョブ ID を指定してタスクを削除

cron 式で使える構文: ワイルドカード(*)、ステップ(*/15=15分ごと)、範囲(1-5)、カンマ区切り(1,15,30)など、一般的な 5 フィールド cron と同様です。一方で、L(月末)や W(平日)、曜日エイリアス(MON)などは非対応です。

直接操作する例です。

# 現在のスケジュールタスク一覧
CronListを実行して、アクティブなスケジュールタスクを表示して

# 5分ごとに git status を実行する cron を作成
CronCreateで「*/5 * * * *」のcron式を使って、git statusを確認するタスクを作成して

# タスク一覧を再確認(ID が表示される)
CronListを実行して

# タスクを削除(表示された ID を指定)
CronDeleteで {表示されたID} のタスクを削除して

CronList でタスク ID が分かるので、CronDelete で削除する流れです。

❯ /loop 1m 現在時刻を教えて

⏺ CronCreate(*/1 * * * *: 現在時刻を教えて)
  ⎿  Scheduled 090c5513 (Every minute)

⏺ スケジュール設定完了です。

  - ジョブID: 090c5513
  - cron式: */1 * * * *(1分ごと)
  - 内容: 現在時刻を教えて
  - 有効期限: 3日後に自動失効(セッション終了時にも停止)
  - キャンセル: CronDelete でジョブID 090c5513 を指定すれば停止できます

❯ CronList

⏺ CronList
  ⎿  090c5513 Every minute

⏺ 現在スケジュールされているジョブ:

  ┌──────────┬─────────┬──────────────────┐
  │ ジョブID │  間隔   │       内容       │
  ├──────────┼─────────┼──────────────────┤
  │ 090c5513 │ 1分ごと │ 現在時刻を教えて │
  └──────────┴─────────┴──────────────────┘

Desktop Scheduled Tasks をやってみた

さあ、次はClaude Desktop 側の定期実行をやってみましょう。

タスク作成(GUI)

Claude Desktop を開き、サイドバーの「予定済み」→「+ 新しいタスク」で作成します。

claude_loop3.png

例として、次のように設定します。

  • タスク名: 「daily-news」(現在は英語のみセット可能)
  • プロンプト: 「今日のテック系ニュースを3件ピックアップして、それぞれ2〜3行で要約してください」
  • 頻度: Daily
  • モデル: Claude Sonnet 4(デフォルトのまま)

claude_loop4.png

頻度は マニュアル / 時間ごと / 毎日 / 平日 / 週次 から選べます。マニュアル にすると手動実行のみになります。

/loop との大きな違い永続性です。Desktop のタスクはアプリ再起動後も残り、PC を一度閉じてから開き直しても、設定したスケジュールでプロンプトが実行されます。発火のたびに独立したセッションが立ち上がるため、前回の会話コンテキストは引き継がれません。スリープ中は実行されず、スキップされた実行はアプリ再起動時にリカバリされる場合があります。

手動実行と履歴

タスク作成後は「今すぐ実行」で手動実行できます。実行結果は履歴に残るので、一時停止・再開とあわせて動作確認に使えます。

claude_loop5.png

比較実験:同一タスクを両方で実行

ということで、「現在の git status を確認し、未コミットの変更があれば一覧表示」という同じタスクを、/loop(2分間隔で3回発火)と Desktop(Scheduled Task を Run now で3回)の両方で実行してみました。どちらも同じように動作し、きちんと実行できました。

claude_loop6.png

比較表:/loop vs Desktop vs Cursor Automations

違いを整理すると、/loop は「セッション内のアドホックな定期実行」Desktop Scheduled Tasks は「永続的な定常タスク」、**Cursor Automations は「クラウドのイベント駆動」**というイメージです。

項目 /loop(CLI) Desktop Scheduled Tasks Cursor Automations
プラットフォーム ターミナル(CLI) デスクトップアプリ(GUI) クラウドサンドボックス
設定方法 コマンド1行 GUI(フォーム入力) GUI + Webhook 等
インターバル 秒〜日(自由) 毎時/毎日/毎週/平日 cron + イベントトリガー
永続性 セッションスコープ(最大3日) 永続(アプリ再起動後も保持) 永続(クラウド)
要アプリ起動 あり(ターミナル) あり(Desktop アプリ) なし(クラウド実行)
MCP 連携 あり(セッション内の MCP を利用) あり(Desktop の MCP 設定) あり(MCP 設定可)
イベントトリガー なし(インターバルのみ) なし(スケジュールのみ) GitHub PR / Slack / Linear / Webhook 等
適性: アドホック監視 ★★★ ★☆☆ ★★☆
適性: 定常業務 ★☆☆ ★★★ ★★★
適性: CI/CD 連携 ★☆☆ ★☆☆ ★★★

使い分けガイド

ユースケース 推奨 理由
今日だけ PR を監視したい /loop アドホックで、セッション内で完結
毎朝の Slack 要約 Desktop 永続的で毎日実行したい向き
PR マージ時の自動レビュー Cursor Automations イベントトリガーが使える
短期間のデプロイ監視 /loop 一時的な集中監視向き
週次レポート作成 Desktop 定期的・永続的なタスク
セッション中のタスク監視(後述の Ghost など) /loop セッション内のツールと組み合わせやすい

応用:Ghost 定期チェックの自動化

使い分けガイドで触れた「セッション中のタスク監視」の具体例です。CLAUDE.md などで定義した「並列タスク過多」のチェックを、/loop で定期実行します。

/loop 30m TaskListでin_progressタスクを確認して。4件以上あれば「⚠️ 並列タスク過多」と警告。各タスクの経過時間も表示して。8時間超のタスクがあれば「付けっぱなしの可能性あり」と追加警告して

30分ごとにタスク状況を確認し、条件に応じて警告を出します。同様に、Todoist MCP で期限切れタスクを検知したり、Backlog MCP で未対応チケットを定期通知する、といった使い方もできます。

運用の Tips

/loop と Desktop の「続く・続かない」

大事なのは、/loop はセッションが切れたら終わりで、Desktop のスケジュールは PC を閉じても、再び開いたときにプロンプトが実行される点です。/loop はターミナルや Claude Code を閉じるとループはすべてキャンセル。Desktop はアプリを開き直してもタスクが残り、設定時刻に実行されます(スキップ分は起動時にリカバリされる場合あり)。

スリープ中は実行されない — Mac で確実に動かすには

Desktop の Scheduled Tasks は、Mac がスリープ中だと発火しません。毎朝 5 時など、決まった時刻に確実に動かしたい場合は、スリープから起こす必要があります。

macOS の pmset で、指定時刻にハードウェアウェイクを予約できます(Apple Silicon の Always-On Processor がウェイクを担当するため、OS を立ち上げ直さずスリープから復帰できます)。

# 実行時刻の数分前にウェイク(例: 05:00 実行なら 04:55 に起床)
sudo pmset repeat wakeorpoweron MTWRFSU 04:55:00

# 設定確認
pmset -g sched

# 解除する場合
sudo pmset repeat cancel

注意: ノート PC で蓋(リッド)を閉じたままスリープしていると、ウェイクしてもすぐ再スリープに入ってしまうことがあります。スケジュール実行を確実にしたい場合は、蓋を開けたままスリープ(画面輝度を最低にする)、または外部ディスプレイ接続のクラムシェルモードで使うとよいです。

まとめ

Claude Code の /loop と Desktop の Scheduled Tasks を使ってみて感じたのは、次の 3 点です。

  • /loop は、ターミナルを開いている間の「ちょっとした定期実行」にぴったりで、MCP や CLI をそのまま使えるのが便利でした。
  • Desktop Scheduled Tasks は、毎朝・毎週など「永続的に回したいタスク」を GUI で管理でき、再起動後も残るので運用しやすいです。
  • Cursor Automations は、GitHub や Slack のイベントで動かしたい場合に役立ち、3者で「アドホック / 定常 / イベント駆動」と役割が分かれるイメージです。

定期実行のニーズ(今日だけ vs 毎日・毎週、CLI でさっと vs GUI で管理、イベント連携の要否)に合わせて選ぶとよさそうです。ぜひ試してみてはいかがでしょうか。

参考資料

この記事をシェアする

FacebookHatena blogX

関連記事