2026年4月、CloudflareはAIエージェント向けサンドボックス実行環境「Cloudflare Sandboxes」のGA(General Availability:一般提供開始)を公式ブログで発表した。同時に基盤インフラとなるCloudflare ContainersもGAを迎えた。
Cloudflare Sandboxesは、AIエージェントが人間の開発者と同様のワークフローを実行できる「永続的・孤立した環境」を提供するサービスだ。シェル、ファイルシステム、バックグラウンドプロセスを備えた本物のLinux実行環境として設計されており、エージェントはリポジトリのクローン、複数言語でのコードビルド、開発サーバーの起動、リアルタイムのファイルシステム監視まで行える。
Cloudflareは公式ブログの中でSandboxesを「AIエージェントに永続的・孤立した環境:シェル、ファイルシステム、バックグラウンドプロセスを備えた本物のコンピュータ」と説明している。
最大の特徴はオンデマンドの起動と永続性の組み合わせだ。エージェントはサンドボックスを名前で要求でき、すでに起動していればそのまま接続、停止中であれば自動起動する。アイドル状態になるとサンドボックスは自動的にスリープし、次のリクエスト時に再起動する。
この「必要なときだけ動く」設計がポイントだ。AIエージェントのワークロードは「LLMで推論している間はCPUを使っていない」という特性を持つ。スリープとオンデマンド起動の組み合わせにより、常時起動型のコンテナと比較してリソース効率が大幅に向上する。

このフローにより、AIエージェントはコードを書いてビルドし、エラーをサンドボックス内で確認して修正するという人間の開発者に近いフィードバックループを実行できる。Claude Code Auto Modeのような自律型エージェントと組み合わせることで、完全自動の開発パイプラインが現実的になる。
プレビュー期間を経てGA版では以下の機能が正式提供となった。すべて公式ブログで発表された情報に基づく。
プログラマブルなエグレスプロキシを通じて認証情報を安全に注入する仕組みが追加された。エージェントは認証情報の生の値に直接アクセスせず、プロキシ経由で認証済みのリクエストを送信する。Gitトークンや外部APIキーをサンドボックス内のコードに直接書かずに済む設計は、セキュリティ上の重大な改善だ。
PTY(擬似端末)のサポートが追加され、WebSocket経由で本物のターミナルセッションが利用可能になった。xterm.jsとの互換性があるため、ブラウザ上でのターミナルUIをそのまま構築できる。ターミナルセッションをエージェントが使う場合も、人間がブラウザから操作する場合も、同一のインターフェースを共有できる。
Python・JavaScript・TypeScript向けの永続的なコードインタープリターが追加された。Jupyterノートブックと同様に、変数とimportが実行間でリセットされず状態が維持される。データ分析エージェントがデータフレームを読み込んで変換し、その結果を次のステップに引き継ぐという操作がそのまま実現できる。
開発サーバーをバックグラウンドで起動し、外部からアクセス可能なプレビューURLを自動生成できる。Reactアプリや FastAPIサーバーをビルドして、リアルタイムで動作確認する用途に対応する。エージェントがフロントエンドをビルドし、生成されたURLで結果を確認してフィードバックする構成が可能になる。
Linuxのネイティブ機能 inotify を使ったファイルシステム監視が追加された。ファイルの変更イベントをエージェントがリアルタイムで受け取れるため、ホットリロードやテスト自動実行のような開発フローを構築できる。エージェントがコードを修正するたびに自動でテストが走り、結果をフィードバックするループが実現できる。
状態のスナップショット機能が近日公開予定。R2ストレージを使ったティアドキャッシュで、グローバルに高速な状態復元を実現する。公式ブログによると、ゼロからのクローン&インストールが約30秒かかるのに対し、スナップショットからの復元は約2秒と大幅に短縮できる。繰り返し利用するサンドボックス環境の準備時間を劇的に削減できる。
SDKは npm で公開されている。Workers Paidプランが必要。
npm i @cloudflare/sandbox@latest
現時点のSDKバージョンは0.8.9。Workers Paidプランのアカウントでのみ利用可能。
import { getSandbox } from '@cloudflare/sandbox';
export { Sandbox } from '@cloudflare/sandbox';
// サンドボックスを取得(起動済みなら接続、停止中なら自動起動)
const sandbox = getSandbox(env.Sandbox, 'user-123');
// コマンド実行
const result = await sandbox.exec('python --version');
// Returns: { stdout, exitCode, success }
// リポジトリのクローン
await sandbox.exec('git clone https://github.com/example/repo /workspace/repo');
getSandbox(env.Sandbox, 'user-123') の第2引数が「名前」にあたる。同じ名前でリクエストすれば、既存のサンドボックスに再接続できる。エージェントが複数セッションに渡って同じ作業環境を維持したい場合に活用する。
// コンテキストを作成(変数・importが実行間で保持される)
const ctx = await sandbox.createCodeContext({ language: 'python' });
const result = await sandbox.runCode(`
import pandas as pd
data = {'product': ['A', 'B', 'C'], 'sales': [100, 200, 150]}
df = pd.DataFrame(data)
df['sales'].sum()
`, { context: ctx });
// Returns: { results, logs }
// 次の呼び出しでも df や pd は保持されている
const watcher = await sandbox.watch('/workspace/src', {
include: ['*.js', '*.ts'],
onEvent: (event) => console.log(`${event.type}: ${event.path}`),
onError: (error) => console.error(error)
});
// 変更が検知されたらテストを自動実行するなどのロジックを onEvent に記述
// 監視停止
watcher.stop();
// Workers のリクエストハンドラーで WebSocket を受け付ける
if (url.pathname === '/ws/terminal') {
const sandbox = getSandbox(env.Sandbox, 'user-123');
// xterm.js 互換のターミナルセッションを返す
return sandbox.terminal(request, { cols: 80, rows: 24 });
}
このコードにより、ブラウザの xterm.js インスタンスとサンドボックス内のシェルが双方向に通信できる。エージェントと人間が同一のシェル環境を共有することも技術的には可能になる。
GA版で導入されたアクティブCPU課金は、LLMのレスポンスを待つアイドル時間を課金対象外にするモデルだ。AIエージェントのワークロードは「LLMに推論させている間はCPUを使っていない」という特性を持つため、このモデルは実際のコスト削減につながる。
GAリリース時点での同時実行数の上限は以下の通り(公式ブログより)。
| ティア | 同時実行数 | 用途目安 |
|---|---|---|
| Lite | 最大15,000インスタンス | 軽量なコマンド実行 |
| Basic | 最大6,000インスタンス | 標準的な開発タスク |
| 大規模インスタンス | 1,000以上 | 高負荷なビルド・テスト |
上記を超えるキャパシティが必要な場合は Cloudflare への申請で対応可能とされている。Figma Makeのような大規模サービスでの利用実績があることからも、エンタープライズ向けの拡張性は確保されていると言える。
Cloudflareには類似した実行環境が複数あるが、それぞれ設計目標と用途が異なる。混同しやすいので整理する。
| サービス | 実行環境 | 永続性 | 主なユースケース |
|---|---|---|---|
| Cloudflare Workers | V8 isolate | ステートレス | APIエンドポイント、エッジロジック |
| Dynamic Workers | V8 isolate | 限定的 | プラグインサンドボックス(EmDashなど) |
| Cloudflare Containers | Dockerコンテナ | あり | 汎用コンテナワークロード |
| Cloudflare Sandboxes | Containers上のOSレベル | あり(スリープ対応) | AIエージェントの作業環境 |
| Durable Objects | V8 isolate | あり(KVストア) | 分散状態管理、リアルタイム同期 |
WorkersはV8 isolateベースで起動が高速だが、Linuxシステムコールやバイナリ実行が制限される。SandboxesはContainersの上に構築されており、本物のLinux環境をフルで使える。コードインタープリター・PTY・inotifyといった機能が使えるのはこのためだ。
Durable Objectsとの比較では「何を永続化するか」が異なる。Durable Objectsはイベント駆動の状態管理に特化しており、KVストア的な使い方に向いている。Sandboxesはファイルシステム・プロセス・依存関係インストール済みの環境そのものを永続化する。
Cloudflare EmDashのプラグインサンドボックスはDynamic Workersを使っているが、AIエージェントの複雑な開発タスク(npm install・ビルド・PTYターミナル等)にはSandboxesのフルLinux環境が必要になる場面が多い。
Claude Code Auto Modeのような自律コーディングエージェントは、コードを書くだけでなく「ビルド・テスト・デバッグ」のループも自動化する必要がある。Cloudflare Sandboxesはこのループを安全かつ永続的に実行できる環境を提供する。
エージェントがコードを書いてサンドボックス内でビルドし、エラーが出れば修正、テストが通ればプレビューURLで結果を確認、というサイクルを人間の介入なしに完結できる。従来はローカルマシンか専用のCI環境が必要だったこのフローが、Cloudflare Workers上のコードから呼び出せるAPIになった。
Jupyterライクな永続コードインタープリターにより、データ分析エージェントが変数の状態を保ちながらコードを繰り返し実行できる。pandas でデータを読み込んで変換・可視化する流れを、エージェントが対話的に進めることが可能だ。各ステップでの変数の状態が維持されるため、長い処理を小さなステップに分けながら進めることができる。
MCPサーバーを介してサンドボックスをAIエージェントのツールとして公開することで、Claude DesktopやClaude Code等のMCP対応クライアントから直接サンドボックスを操作できる構成が可能になる。MCP経由で「コードを実行する」ツールとしてサンドボックスを提供するサーバーを実装し、エージェントに渡すというアーキテクチャだ。
Figmaは「Figma Make」においてCloudflare Containersを採用し、信頼されていないエージェントコードおよびユーザーコードをスケールで実行していることが公式ブログで言及されている。SandboxesはContainersの上に構築されているため、同様のユースケースでの採用が見込まれる。
ビルドとテストの実行環境としてSandboxesを組み込む使い方も考えられる。PRが作成されるたびにサンドボックスを起動してビルド・テストを実行し、結果をGitHub PRのコメントに書き戻すというワークフローを、Workers上で完結させることができる。スナップショット機能(近日公開)が使えるようになれば、依存関係のインストール済みイメージを2秒で復元してテストを実行できるようになる。
AIエージェントを使った開発の自動化に取り組む日本の開発者にとって、Cloudflare Sandboxes GAは実用投入へのハードルを大幅に下げる節目だ。
本番環境として使える理由:
開発ツールとしての具体的な活用シナリオ:
注意点: Workers Paidプランが必要であり、無料枠での利用はできない。スナップショット機能はGA時点では「近日公開」のステータスであり、利用前に最新ドキュメントで確認が必要だ。
npm i @cloudflare/sandbox@latest でSDKをインストールして試せる。GitHub リポジトリ(cloudflare/sandbox-sdk)にもサンプルコードが公開されている。