> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Code のクラウドセッションを実行する

> クラウドセッションごとに CoreWeave のサンドボックスを作成する Claude Code オーケストレーターをデプロイします。

Claude Code のクラウドセッションを CoreWeave のサンドボックス上で実行します。[Claude Code web app](https://claude.ai/code) (claude.ai/code) で Claude にタスクを指示すると、サンドボックス上でホストされたオーケストレーターが、そのセッション用のワーカーサンドボックスをプロビジョニングします。デプロイ後は、ローカルコンピューターの接続を切断してもかまいません。

このガイドでは、Anthropic の[セルフホスト環境](https://code.claude.com/docs/en/self-hosted-environments)と[実行可能なレシピ](https://github.com/coreweave/cwsandbox-recipes/tree/main/recipes/claude-code-cloud)を使用します。このレシピでは、Sandboxes のソフトウェア開発キット (SDK) を直接使用します。対話型ターミナルや Remote Control を使用する場合は、[Claude Code](/ja/products/sandboxes/agents/claude-code) を参照してください。API で管理するエージェントループについては、[Claude Managed Agents](/ja/products/sandboxes/agents/claude-managed-agents) を参照してください。

このレシピでは、Anthropic の*ランナー*が 1 つの Claude Code クラウドセッションを実行し、そのランナーをホストするサンドボックスを*ワーカー*と呼びます。Anthropic のランナーは、CoreWeave Kubernetes Service (CKS) クラスター内でサンドボックスを実行する [CoreWeave のマネージドランナー](/ja/products/sandboxes/operations/managed-runners)とは異なります。

<h2 id="prerequisites">
  前提条件
</h2>

開始する前に、以下が揃っていることを確認してください。

* Owner によってセルフホスト環境が有効化された Claude Team または Enterprise の組織。[Anthropic の前提条件](https://code.claude.com/docs/en/self-hosted-environments-quickstart#prerequisites)を参照してください。
* Claude に接続済みで、ご自身のアカウントからアクセスできる GitHub リポジトリ。まずはテスト用のリポジトリで試してください。GitHub の接続手順については、[Claude Code web アプリのドキュメント](https://code.claude.com/docs/en/claude-code-on-the-web)を参照してください。
* `SANDBOX_USER` アイデンティティとアクセス管理 (IAM) action が付与された [CoreWeave API アクセストークン](/ja/products/sandboxes/placement#coreweave-api-access-token)、およびこのセクションで説明するリソースをまかなえるサーバーレスキャパシティ。このレシピでは CoreWeave 認証を明示的に使用します。
* Git、Python 3.11 以降、および [`uv`](https://docs.astral.sh/uv/getting-started/installation/) がインストールされた Linux または macOS のコンピューター

このレシピに GPU は不要です。オーケストレーター用に 1 CPU と 2 GiB のメモリ、各ワーカー用に 2 CPU と 4 GiB をリクエストします。デフォルトでは、実行中のワーカーは最大 4 つまでです。

オーケストレーターはアイドル状態でも課金され、Claude の使用料は別途請求されます。予算の目安として、オーケストレーションだけで 24 時間あたり 24 CPU 時間と 48 GiB 時間を消費します。これに、リクエストしたリソース量に基づくワーカーの実行時間を加え、ご自身のアカウントの料金を適用して算出してください。

<h2 id="quick-start-with-the-recipe">
  レシピを使ったクイックスタート
</h2>

Claude 環境を作成してオーケストレーターをデプロイし、ワーカーの出力を確認してからデプロイメントを停止します。

<h3 id="create-the-claude-environment">
  Claude 環境を作成する
</h3>

[Anthropic の環境の設定](https://code.claude.com/docs/en/self-hosted-environments-quickstart)の手順に従います。**Cloud environments** 管理ページで、Owner が **Allow self-hosted environments** を有効にし、**Self-hosted environments** で環境を作成します。

この Claude Code クラウド環境は、Owner が claude.ai の管理設定で作成します。Claude Managed Agents では、Claude Console で作成した別の環境とキーを使用します。

環境キーとその `ccpool_...` ID を控えておいてください。管理ページにアクセスできない場合は、Owner にこれらを提供するよう依頼してください。ID は環境を識別するもので、キーはオーケストレーターの認証に使用されます。以降のステップでは、レシピによってオーケストレーターとワーカーのインフラストラクチャーがデプロイされます。

<h3 id="install-the-recipe">
  レシピをインストールする
</h3>

レシピをローカルにインストールし、オーケストレーターに必要な認証情報を設定します。

```bash theme={"system"}
git clone https://github.com/coreweave/cwsandbox-recipes.git
cd cwsandbox-recipes/recipes/claude-code-cloud
uv sync --locked
cp .env.example .env
chmod 600 .env
```

`.env` ファイルを編集し、両方の変数を設定します。

| 変数 | 値 |
| - | - |
| `CWSANDBOX_API_KEY` | お使いの CoreWeave API アクセストークン。 |
| `SELF_HOSTED_RUNNER_ENVIRONMENT_SECRET` | Claude から取得した環境キー。 |

`.env` ファイルは非公開にし、バージョン管理に含めないでください。代わりに、シークレットマネージャーからこれらの変数を注入することもできます。既存の環境変数は `.env` ファイルの設定より優先されます。

<h3 id="deploy-the-orchestrator">
  オーケストレーターをデプロイする
</h3>

`[ENVIRONMENT-ID]` をご自身の `ccpool_...` ID に置き換えます：

```bash theme={"system"}
uv run cloud.py deploy --environment '[ENVIRONMENT-ID]'
```

このコマンドはオーケストレーターのサンドボックス ID を出力し、セットアップの完了を待機します。Anthropic に接続すると `Connected` を出力します。セットアップには数分かかる場合があります。タイムアウトしても、クリーンアップが行われたとは限りません。再試行する前に `status` と `logs` を確認してください。

ローカルの `.deployment.json` ファイルは削除せずに保持してください。このファイルには、デプロイメントの管理に必要な ID と設定が記録されており、認証情報は含まれていません。以降のコマンドは、レシピのディレクトリから実行してください。

<h3 id="send-a-task">
  タスクを送信する
</h3>

Claude Code の Web アプリで、組織、接続済みのリポジトリ、セルフホスト環境を選択します。検証ステップで使用するファイルを作成するため、次のプロンプトを一字一句そのまま送信します。

```text theme={"system"}
Use Bash to write exactly CWS_CLOUD_OK followed by a newline to
/tmp/claude-cloud-proof.txt, then read it back and report the current
directory. Do not modify repository files, commit, or push.
```

タスクを送信すると、Session がキューに追加され、ワーカーの作成がトリガーされます。

<h3 id="verify-the-result">
  結果を検証する
</h3>

ターミナルで、デプロイメントの一覧を表示します。

```bash theme={"system"}
uv run cloud.py status
```

`Connected: True` と、サンドボックス ID を含む `Worker:` 行が出力されることを確認してください。Claude の処理が終了したら、次のコマンドの `[WORKER-ID]` をその ID に置き換えます。

```bash theme={"system"}
uv run cloud.py read --worker '[WORKER-ID]' --path /tmp/claude-cloud-proof.txt
```

期待される出力は `CWS_CLOUD_OK` です。この手順では、Claude の応答とは別に、Sandboxes SDK を使用してサンドボックス内のファイルを直接確認します。ワーカーがアイドル状態になって停止する前に読み取ってください。別のタスクを送信した場合は、そのタスクが作成したファイルを読み取ってください。

<h3 id="clean-up">
  クリーンアップ
</h3>

結果を保存したら、デプロイメントを停止します:

```bash theme={"system"}
uv run cloud.py stop
```

このコマンドはオーケストレーターとそのワーカーを停止し、実行中のワーカーが残っていないことを確認してから、`.deployment.json` ファイルを削除します。実行中のタスクは中断され、それらのサンドボックスにのみ保存されているファイルは破棄されます。Claude 環境は残るため、後のデプロイメントで引き続き利用できます。

<h2 id="how-the-integration-works">
  インテグレーションの仕組み
</h2>

```mermaid theme={"system"}
flowchart LR
    U[Claude Code ウェブアプリのセッション] --> A[Anthropic コントロールプレーン]
    O[オーケストレーターのサンドボックス] -->|作業指示をポーリング| A
    O -->|Sandbox SDK| W[セッションごとのワーカー用サンドボックス]
    W -->|セッションとモデルのリクエスト| A
```

このレシピは 2 つのロールをデプロイします。

| ロール | 役割 | レシピが提供する認証情報 |
| - | - | - |
| オーケストレーター | Anthropic をポーリングし、`spawn-runner` フックを介してワーカーを送信します。 | CoreWeave API アクセストークンと Claude 環境キー。 |
| ワーカー | 1 つの Claude Code セッションと、そのツールおよびリポジトリのチェックアウトを実行します。 | Anthropic ランナー向けに発行された使い捨てのワークオーダー。 |

ワーカーは、リポジトリへのアクセスに [Anthropic git プロキシ](https://code.claude.com/docs/en/self-hosted-environments-deploy#use-the-anthropic-git-proxy) を使用します。このレシピは、ローカルの Claude ログイン情報や GitHub トークンをワーカーにコピーしません。ただし、モデルへのリクエスト、プロンプト、応答、ツール結果は引き続き Anthropic を経由します。

フックは [Anthropic のオンデマンドランナー規約](https://code.claude.com/docs/en/self-hosted-environments-configuration#on-demand-runners) に従い、ワークロードを非同期で送信したうえで、使い捨てのワークオーダーを使用して登録します。オーケストレーターのプロセスが再起動した後に重複送信が発生しないよう、このレシピはオーダー ID をオーケストレーターのディスクに記録します。作成の成否が不明な場合はフェイルクローズとなり、再試行する前に状況を確認する必要があります。

ワーカーはプロセスラッパー配下で実行されます。このラッパーは終了コードを記録し、プロセスを再試行することなくサンドボックスを完了させます。起動に失敗した場合はログを確認してください。サンドボックスが完了しただけでは、タスクが成功したとは限りません。

このレシピでは、Claude Code のバージョンを `2.1.284`、Sandboxes SDK のバージョンを `1.14.2` に固定しています。各サンドボックスは `python:3.12-bookworm` から起動し、ブートストラップ時に Git と Claude をインストールします。ワーカーの起動処理には、スケジューリング、インストール、登録、リポジトリのチェックアウトが含まれます。

<h2 id="configure-the-deployment">
  デプロイメントを設定する
</h2>

`deploy` の実行時に、次のオプションを設定できます。

| オプション | デフォルト | 用途 |
| - | - | - |
| `--orchestrator-hours` | `24` | オーケストレーターの有効期間の上限です (セットアップ時間とアイドル時間を含みます) 。 |
| `--worker-hours` | `8` | 各ワーカーの有効期間の上限です。 |
| `--idle-minutes` | `15` | Anthropic ランナーがセッションをアイドル状態と判定した場合に、ユーザーの操作がないまま指定時間が経過するとセッションを解放します。 |
| `--max-workers` | `4` | このデプロイメントで作成される実行中のワーカー数の上限です。 |

どちらの有効期間オプションも 1～720 時間の範囲で指定できます。アイドルタイムアウトは 10,080 分 (7 日) 以下で、かつワーカーの有効期間から 5 分を引いた値より短くする必要があります。オーケストレーターを 30 日間稼働させるには、デプロイ時に `--orchestrator-hours 720` を追加します。有効期間は作成後に延長できません。

1 つの Claude 環境で実行するレシピのデプロイメントは 1 つだけにしてください。このレシピは、オーケストレーターのサンドボックスを自動で置き換えません。レシピのスーパーバイザーは同じサンドボックス内で Claude Code オーケストレーターのプロセスを再起動するため、ローカルの順序台帳は保持されます。ただし、サンドボックスが失敗したり期限切れになったりすると、その台帳は失われます。デプロイメントを監視し、セッションの結果を保存したうえで、有効期限が切れる前に置き換えを計画してください。計画的に置き換える場合は、実行中の作業を終了し、`stop` を実行してから再デプロイします。送信が成功したかどうか不明な場合やホスト障害から復旧する際は、事前に保留中のセッションと既存のリソースを確認してください。

ツールチェーンを追加するには、レシピの `bootstrap.sh` スクリプト内のワーカー用の分岐を編集し、お使いのリポジトリでテストします。ライフサイクルフックとセッションの設定については、[セルフホスト環境でセッションをカスタマイズする](https://code.claude.com/docs/en/self-hosted-environments-configuration)を参照してください。

<h2 id="monitor-sessions">
  セッションを監視する
</h2>

接続、ワーカー、直近のログを確認します：

```bash theme={"system"}
uv run cloud.py status
uv run cloud.py logs
uv run cloud.py logs --bootstrap
uv run cloud.py logs --worker '[WORKER-ID]'
```

`status` は、オーケストレーターの接続状態とおおよその有効期限を表示します。すべてのセッションがアイドル状態になり、アイドルタイムアウトが経過した後は、新しいセッションがキューに追加されていなければワーカー数は 0 になります。キャパシティが利用可能になると、新しいセッションによってワーカーが作成されます。フォローアップは、現在のワーカーが関連付けられている間、そのワーカー上で継続できます。

オーケストレーターの健全性リスナーは、そのサンドボックス内でのみ動作します。これらのコマンドは Sandboxes SDK を使用するため、パブリックエンドポイントは必要ありません。

ワーカーのインストール出力を確認するには、そのワーカーのログコマンドに `--bootstrap` を追加します。このログには、セットアップ完了後の Anthropic ランナーの出力も含まれます。

<h2 id="save-results-before-a-worker-stops">
  ワーカーが停止する前に結果を保存する
</h2>

Anthropic ランナーは、アイドル状態のセッションを解放して終了します。また、サンドボックスのライフタイムが終了する 5 分前から終了処理を開始します。ただし、実行時間の長いターンは、有効期間の上限に達して強制的に中断される可能性があります。

残しておきたい作業は Claude にコミットしてプッシュするよう依頼し、GitHub でブランチを検証してください。テキストのアーティファクトは、レシピの `read` コマンドを使用し、その出力をローカルファイルにリダイレクトして保存します。このレシピでは、自動プッシュやスナップショットは設定されていません。解放後のフォローアップは新しいワーカーで実行される場合があるため、プッシュしていないファイルが残っていることを前提にしないでください。

その他のワークフローで使用できる永続化のオプションについては、[ファイルシステムスナップショット](/ja/products/sandboxes/file-system-snapshots)を参照してください。Anthropic ランナーの解放時の動作については、[Anthropic のランナーリファレンス](https://code.claude.com/docs/en/self-hosted-environments-reference)を参照してください。

<h2 id="troubleshoot">
  トラブルシューティング
</h2>

| 症状 | 対処 |
| - | - |
| セルフホストの設定項目が表示されない | Team または Enterprise の組織を選択し、その組織の所有者に機能の有効化を依頼します。 |
| リポジトリが表示されない、またはチェックアウトが失敗する | 選択した Claude 組織で、GitHub 接続とリポジトリへのアクセス権を検証します。 |
| ランナーの待機状態が続く | タスクを送信したことを確認し、`status` を実行して、オーケストレーターのログを調べます。環境 ID とキーの組み合わせ、および[同時実行サンドボックスのクォータ](/ja/products/sandboxes/reference/limits-and-quotas#concurrent-sandbox-quota)を確認します。 |
| ワーカーの起動が遅い | ワーカーのブートストラップログを読み、スケジューリングやパッケージのインストールによる遅延なのか、Anthropic ランナーやチェックアウトの失敗なのかを切り分けます。 |
| ワーカーの上限に達した | 既存のセッションを終了またはリリースします。上限を変更するには、作業内容を保存し、デプロイメントを停止してから再デプロイします。 |
| ワーカーの送信状況が不明 | 実行中のリソースと、環境の **Activity** タブを確認します。リコンサイルの完了後、所有者は失敗したセッションを再試行できます。 |
| デプロイメントレコードがすでに存在する | `status` で記録済みのデプロイメントを確認します。再デプロイする前に結果を保存し、`stop` を実行します。 |
| ファイルを読み取れない | ワーカーの実行中に、ファイルのパスとワーカー ID を確認します。ワーカーの停止後はファイルを利用できません。 |

外向きのトラフィックを制限する場合は、Anthropic ランナーのトラフィックに加え、Debian、PyPI、Claude のダウンロードサービスからのブートストラップ時のダウンロードも考慮してください。このレシピでは外向き通信の許可リストは設定しません。ネットワーク要件とセキュリティ強化については、[Anthropic の本番デプロイメントに関するガイダンス](https://code.claude.com/docs/en/self-hosted-environments-deploy)を参照してください。

<h2 id="next-steps">
  次のステップ
</h2>

変更内容の検証や、他のインテグレーションの探索には、以下のリソースを使用してください。

* レシピを変更した後は、[オフラインチェックとライブチェック](https://github.com/coreweave/cwsandbox-recipes/tree/main/recipes/claude-code-cloud#validate-changes)を実行してください。
* より詳細な診断には、[Anthropic のエンドツーエンドテスト](https://code.claude.com/docs/en/self-hosted-environments-testing)を使用してください。
* [その他のエージェントインテグレーション](/ja/products/sandboxes/agents)もご覧ください。
