技術 約9分で読めます

Claude Code Routinesでコーディング作業をクラウド自動化する

いけさん目次

Anthropicが2026年4月14日、Claude Code Routinesをリサーチプレビューとして公開した。
HackerNewsでは565pts・336コメントを集め、「Claude Codeのクラウド実行環境としての完成に近づいた」という反応が多かった。

Routinesを一言で言うと、「プロンプト・リポジトリ・コネクタをセットにして保存し、スケジュール、API呼び出し、GitHubイベントで自動起動できるClaude Codeの設定単位」だ。
Anthropicマネージドインフラ上で実行されるため、ラップトップが閉じていても、夜間にも動き続ける。

何が変わったか

従来のClaude Codeはローカルプロセスとして動く。
開いているターミナルセッションに紐づき、ユーザーが操作しているあいだしか動けなかった。

Claude Code Channelsのresearch previewでは「実行中のセッションへ外部からメッセージをプッシュする」仕組みが生まれたが、それでもClaude Codeセッション自体は起動し続けている必要があった。
Routinesはこの制約を取り払い、クラウドが起動・実行・終了をすべて管理する。

またClaude Codeはこれ以前からマルチエージェントPRレビューのような機能をresearch previewとして出してきた。
ただしそれらは依然として「ユーザーが手動でトリガーする」前提だった。
Routinesはトリガーをシステム側に委ね、繰り返し実行の管理をAnthropicのインフラに任せる設計になっている。

Clawsカテゴリとの関係

2月にAndrej Karpathyが「Claws」という名前をつけた概念がある。
LLMエージェントの上にオーケストレーション・スケジューリング・永続性のレイヤーをかぶせ、セッションをまたいで常駐する仕組みだ。
Karpathy自身はMac Mini上でローカルに動かす想定だったが、Routinesはこれをクラウドに持っていった形になる。
詳しくは「AIエージェントオーケストレーションClawsとCord」で整理した。

Clawsの文脈では「エージェントが自律的にタスクをキューイング・実行する」のが核だった。
Routinesは自律実行の部分をAnthropicマネージドインフラに乗せることで、ローカルマシンの電源やプロセス管理から解放している。
トレードオフとして、ローカルファイルへのアクセスやオフラインでの常駐はできない。

ルーティンの構造

要素説明
プロンプト毎回実行される指示。自律実行なので自己完結している必要がある
リポジトリ作業対象のGitHubリポジトリ(複数可)。毎回デフォルトブランチからクローン
環境ネットワークアクセス・環境変数・セットアップスクリプトを定義したクラウド環境
コネクタSlack、Linear、Google DriveなどのMCPコネクタ(全コネクタがデフォルト有効)
トリガースケジュール・API・GitHubの3種。1ルーティンに複数組み合わせ可

ルーティンはAnthropic側のクラウドで完全な「フルClaude Codeセッション」として動く。
パーミッションモードの選択はなく、承認プロンプトも出ない。
shellコマンドを実行でき、リポジトリにコミットされたスキルを呼べ、設定したコネクタを自由に使える。
スコープはリポジトリ設定・環境・コネクタの3点で制御する。

リポジトリへのプッシュはデフォルトで claude/ プレフィックスのブランチのみ許可される。
mainやdevelopなどの長命ブランチへの誤プッシュを防ぐ設計だ。
Allow unrestricted branch pushes を明示的に有効化すると制限が外れる。

3種類のトリガー

スケジュールトリガー

hourly、daily、weekdays、weeklyのプリセットから選ぶ。
タイムゾーンはローカルタイムで入力すると自動変換されるため、「毎朝9時(JST)」と設定すればクラウドインフラがどのリージョンにいても同じ壁時計時刻で動く。
実際の起動はスタッガー(分散)処理で数分遅れることがある。

カスタムcron間隔が必要な場合は、フォームでいちばん近いプリセットを選んだあと、CLIの /schedule update でcron式を直接指定する。
最小間隔は1時間で、それより短い式は拒否される。

APIトリガー

ルーティン専用のHTTPエンドポイントを生成する。bearerトークンを付けてPOSTすると新しいセッションが起動し、セッションURLが返ってくる。

curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_01ABCDEFGHJKLMNOPQRSTUVW/fire \
  -H "Authorization: Bearer sk-ant-oat01-xxxxx" \
  -H "anthropic-beta: experimental-cc-routine-2026-04-01" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

レスポンスのJSONにセッションIDとURLが含まれる。

{
  "type": "routine_fire",
  "claude_code_session_id": "session_01HJKLMNOPQRSTUVWXYZ",
  "claude_code_session_url": "https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ"
}

text フィールドでrun固有のコンテキストを渡せる。
アラート本文、スタックトレース、デプロイ結果といった動的な情報を毎回注入できる。
値はフリーテキストで構造的に解釈されないため、JSONやMarkdownを送るとそのまま文字列としてルーティンに届く。

エンドポイントは experimental-cc-routine-2026-04-01 というbetaヘッダーが必要で、APIシェイプは変更される可能性がある。
過去2バージョンのbetaヘッダーは後方互換を維持しながら移行猶予が設けられる。

GitHubトリガー

対象リポジトリにClaude GitHub Appをインストールすると、リポジトリイベントでルーティンを起動できる。現時点でサポートされているイベントカテゴリはPull RequestとReleaseの2種。

PRトリガーには細かいフィルタが使える。

フィルタ一致する内容
AuthorPRを開いたGitHubユーザー名
TitlePRタイトル
BodyPR本文
Base branchマージ先ブランチ
Head branch変更元ブランチ
Labels付与されているラベル
Is draftドラフト状態かどうか
Is mergedマージ済みかどうか
From forkフォークからのPRかどうか

各フィルタには equalscontainsstarts withis one ofmatches regex 等のオペレーターが使える。
matches regex はフィールド全体に対してマッチするため、部分一致には .*hotfix.* のように記述するか、素直に contains を使う。

各GitHubイベントは独立した新しいセッションを生成する。
セッションの再利用はないため、同じPRへの2回の更新は2セッションになる。

research preview中はルーティン単位・アカウント単位で時間あたりのイベント受信上限があり、上限を超えたイベントはウィンドウリセットまで破棄される。

実用的なユースケース

ドキュメントにある代表例。

ユースケーストリガーやること
バックログ整理スケジュール(weeknight)Issue trackerから前回以降のIssueを読み取り、ラベル付け・担当者割り当て。Slackに要約投稿
アラートトリアージAPI(監視ツールから)text にアラート本文を受け取り、スタックトレースを直近コミットと照合。修正提案入りドラフトPRを開く
PR自動レビューGitHub(pull_request.openedチームのレビューチェックリストを適用し、インライン・サマリーコメントを投稿。マルチエージェントPRレビューとは別で、プロンプトを自分で設計する汎用版
ライブラリ同期GitHub(pull_request.closedマージ済みフィルタでSDK Aの変更を検出し、別言語のSDK Bにポートして対応PRを開く

Stripeの自前インフラとの対比

似たことを自社インフラで実現しているのがStripeのMinionsだ。
Minionsは週1,300件超のPRをゼロ人力で生成しており、AWS EC2ベースの使い捨て開発環境「Devbox」とgooseフォークで自律実行を実現している。

RoutinesとMinionsの違いはインフラの所在だ。
Minionsは自社AWSアカウント内にDevboxプールを持ち、10秒起動のプリウォーミングやQA環境内でのネットワーク遮断といった制御を自前で実装している。
Routinesはこうしたインフラ構築・運用を全部Anthropicに任せる代わりに、日次実行上限やブランチ制限といったAnthropic側のガードレールに縛られる。

エンジニアリングチームが数十人以上いて、自社インフラの運用コストを吸収できるならMinions型。
個人や小規模チームで「夜間に回しておきたいタスクがある」程度ならRoutinesのほうが立ち上がりが早い。

管理と運用

ルーティンはCLI(/schedule)、Webの claude.ai/code/routines、Desktopアプリの3つから作成・管理できる。
3つのサーフェスは同じクラウドアカウントに書き込むため、CLIで作成したものがすぐWebに反映される。
Desktopアプリで「New remote task」を選ぶとRoutinesになり、「New local task」を選ぶとDesktop上のローカルスケジュールタスクになる。

ルーティンは個人の claude.ai アカウントに紐づく。
チームメンバーとの共有はできず、GitHubコミットやPR・Slackメッセージ・Linearチケットはすべてルーティン作成者のアカウントで実行される。

日次実行上限

プラン1日のルーティン実行上限
Pro5回
Max15回
Team / Enterprise25回

上限を超えた場合、extra usageを有効にしているorganizationはメータード課金で継続実行できる。
有効化していなければウィンドウリセットまで実行拒否される。

CLIからの操作

/schedule コマンドがRoutines操作の入口になる。

/schedule                         # 会話形式で新規ルーティン作成
/schedule daily PR review at 9am  # 内容をそのまま渡して作成
/schedule list                    # 一覧表示
/schedule update                  # 既存ルーティンの変更
/schedule run                     # 即時実行

APIトリガーとGitHubトリガーの追加・編集はWebのみで行える。
CLIでAPIトークンの生成やrevocationも現時点では不可。

GitHub ActionsとDesktop Scheduled Tasksとの使い分け

Anthropicは関連機能として GitHub Actions と Desktop Scheduled Tasks も提供している。
用途が重なるようで棲み分けがある。
GitHub ActionsはCI/CDパイプラインへの統合で、ワークフローYAMLとランナー環境はGitHubのエコシステムに乗る。
Desktop Scheduled Tasksはローカルマシン上で動くため、ローカルファイルや非公開環境へのアクセスが必要な場合に使う。
Routinesはマシンに依存しないクラウド実行で、GitHub Appとの統合がネイティブ、MCPコネクタで複数の外部サービスを横断できる。
夜間に繰り返し回すタスクに向いている。

ここにGitHub Copilot CLIの/fleetも加えると見通しが良くなる。
/fleetは1つのプロンプトをオーケストレータが分解し、複数サブエージェントに並列ディスパッチする機能だ。
Routinesが「いつ・何をきっかけに動くか」のスケジューリング層なら、/fleetは「1回の実行内でどう並列化するか」の実行層にあたる。
両者はレイヤーが違うので競合しない。

ツールレイヤー得意なこと
Routinesスケジューリング・トリガー定期実行、イベント駆動、クラウド常駐
/fleet実行時の並列化大きなタスクの分割・同時処理
GitHub ActionsCI/CDパイプラインビルド・テスト・デプロイの自動化
Desktop Scheduled Tasksローカル定期実行ローカルファイル・非公開環境へのアクセス

research previewという位置づけのため、API仕様・日次上限・トリガーの種類は変わる可能性がある。
正式ドキュメントは code.claude.com/docs/en/routines を参照。