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トリガーには細かいフィルタが使える。
| フィルタ | 一致する内容 |
|---|---|
| Author | PRを開いたGitHubユーザー名 |
| Title | PRタイトル |
| Body | PR本文 |
| Base branch | マージ先ブランチ |
| Head branch | 変更元ブランチ |
| Labels | 付与されているラベル |
| Is draft | ドラフト状態かどうか |
| Is merged | マージ済みかどうか |
| From fork | フォークからのPRかどうか |
各フィルタには equals、contains、starts with、is one of、matches 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日のルーティン実行上限 |
|---|---|
| Pro | 5回 |
| Max | 15回 |
| Team / Enterprise | 25回 |
上限を超えた場合、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 Actions | CI/CDパイプライン | ビルド・テスト・デプロイの自動化 |
| Desktop Scheduled Tasks | ローカル定期実行 | ローカルファイル・非公開環境へのアクセス |
research previewという位置づけのため、API仕様・日次上限・トリガーの種類は変わる可能性がある。
正式ドキュメントは code.claude.com/docs/en/routines を参照。