Digital Appendix
『AIエージェントが見つけたサーバーレス』のデジタル付録
エージェントサンドボックスの実行粒度
エージェントサンドボックスの実行粒度
対象本文
第4章4.3〜4.6が扱う「隔離技術の共有面」「何を一回の実行と数えるか」「持続する作業空間と交換可能な実行面の分離」を、2026年時点の製品へ重ねた比較です。製品の機能を排他的に分類する表ではありません。 同じ基盤が短命コマンドと長命セッションの両方を扱うため、「設計の重心」は公式APIとライフサイクルから読んだ本書の解釈です。
収集方法
2026年7月12日にCloud Run Sandboxesの発表、リリースノート、公式ガイド、CLIリファレンスと、既存四社の検証台帳A-22〜A-25を照合しました。Cloudflare Sandbox SDKはGA記事、Architecture、Lifecycle、Sessions、Outbound traffic、Container runtime、directory backup/restoreも再確認しました。2026年8月5日に@cloudflare/computerの公式ブログ(2026-08-03)と公式リポジトリREADMEを照合しました(検証台帳A-37)。2026年8月9日にCloud Runの発表ブログとリリースノートを再照合し、2026年8月5日の全リソース対応を追記しました。発表ブログの日付は2026年7月9日と10日が併存するため、一方を正しい発表日として固定しません(検証台帳A-28)。提供者ごとに条件の違う性能値は横並びにせず、公式APIとライフサイクルから実行粒度を比較します。
現在の答え
六つの実装を、実行粒度で読む
| 基盤 | APIで前に出る単位 | 既定のライフサイクルと状態 | 隔離の土台 | 本書から見た重心 |
|---|---|---|---|---|
| Google Cloud Run Sandboxes(Public Preview) | 既存Cloud Runサービス内から呼ぶコマンド。sandbox doのほか、名前付きサンドボックスへのrun/execもある | doは作成→実行→削除。一時overlayは削除時に失われ、tarの入出力やbind mountで必要なファイルだけ渡せる。切り離した長時間プロセスも可能 | Cloud Run第2世代環境が前提。内側のサンドボックス実装方式は公開資料で特定されていない | Command/Task寄り。親アプリケーションから見ると、隔離境界を持つサブプロセスに近い |
| AWS Lambda MicroVMs | 専用エンドポイントを持つマイクロVM環境 | スナップショットから起動し、セッションをsuspend/resumeできる | FirecrackerマイクロVM | セッション/実行環境。ライフサイクルを持つ環境そのものを借りる |
| Google GKE Agent Sandbox | Kubernetes上のSandboxオブジェクト | Pod Snapshotsと組み合わせて状態を保存・再開できる | gVisorをネイティブ対応、ほかのランタイムも差し替え可能 | セッション/クラスタ上の実行環境。配置と運用の制御をKubernetes側に残す |
| Azure Container Apps dynamic sessions | プールから割り当てられるセッション | クールダウン後に破棄し、次回はプールから別環境を割り当てる | Hyper-V隔離 | セッション。暖めた環境のプールで割り当てを速くする |
| Cloudflare Sandboxes(GA) | Durable Objectの識別子に結びついた名前付きsandbox。exec()、per-task、per-sessionの使い分けがある | 稼働中はファイル・プロセス・実行文脈を保持。アイドル停止後のコンテナ状態は失われるため、必要なディレクトリはbackup/restoreや外部ストレージへ出す | 専用Linuxコンテナ。現行Architecture文書は各sandboxをVMベースで隔離すると説明 | Command〜Workspace。一回のコマンドから端末、開発サーバ、ファイル監視まで同じAPI面で扱う |
| Cloudflare Computer(Early Preview) | Workspace——Durable Object内のSQLiteを正本とする仮想ファイルシステム。実行は共通のexecから | Workspaceが正本として持続し、実行バックエンドは最初の利用時に遅延接続。containerにはFUSEでWorkspaceを投影し、変更を正本へ同期 | Dynamic Worker上のisolate(shell/JavaScript)と、Linuxコンテナの併用。独自バックエンドも登録可能 | Workspace/Computer。作業空間を正本に置き、実行面を仕事に応じて交換する |
上の「重心」は能力の上限ではありません。Cloud Runは名前付きの長時間sandboxを動かせますし、Cloudflareは一回きりのコマンドを実行後すぐ破棄できます。違いがよく出るのは、最短のサンプルと、状態を持たせたいときに追加で何を指定するかです。
2026年8月5日の更新: Cloud Runのリリースノートは、ジョブとワーカープールを含むすべてのリソースでサンドボックスを使えるようになったことをPreviewとして案内しています。上の表の「APIで前に出る単位」と「隔離の土台」は、この更新の前、サービスの内側から呼ぶ形を前提にした記述です。紙面(初版第1刷、2026年8月7日入稿)も同じ前提で書いています。
Cloudflare Computer——Workspaceと交換可能な実行面
2026年8月3日にEarly Previewとして公開された@cloudflare/computerは、Sandbox SDKとは抽象化の主語が異なります。「論理的に何が残るか」「状態の正本はどこか」「実行面をどう選ぶか」で並べると、次のようになります。
| 基盤/抽象化 | 論理的に残る単位 | 実行面 | 状態の正本 | バックエンド選択 | 提供状態 |
|---|---|---|---|---|---|
| Cloudflare Sandbox SDK | Sandbox ID(Durable Object) | Cloudflare Container | 稼働中のcontainer。必要な永続状態はbackup/restoreや外部ストレージへ出す | sandbox作成時の構成 | GA |
| Cloudflare Computer | Workspace(仮想ファイルシステム) | isolate shell、isolate JavaScript、container。独自バックエンドも登録可能 | Durable Object内のSQLite | 共通execのbackend指定。エージェント利用ではツール説明を通じてモデルが選ぶ | Early Preview。API不安定・本番利用非推奨 |
| Cloud Run Sandboxes | コマンド、または名前付きsandbox | 既存Cloud Runインスタンス内のsandbox | コマンドの入出力、または名前付きsandboxの稼働中状態 | 呼び出し側がAPI経路を選ぶ | Public Preview |
安定して読める構造
- WorkspaceはDurable Object内のSQLiteを正本とする仮想ファイルシステム。
- 実行面はWorkspaceから分離され、共通の
execインターフェース(workspace.runtime.exec)で利用する。 - バックエンドは安定IDで複数登録でき、最初の利用時に遅延接続される。
- containerではFUSEマウント(サンドボックス内の
computerd)を通じてWorkspaceを見せ、変更を正本へ同期する。 - isolate shellはDynamic Worker上の
just-bash、isolate JavaScriptはDynamic Worker上のECMAScript moduleとして動く。 - Workspaceは実行バックエンドなしでも、ファイルシステム単体として構成できる。
揮発情報として管理するもの
- Early Previewであり、API、バックエンド、設計は変更され得る(公式リポジトリが本番利用に適さないと明記)。
- リポジトリ同梱の仕様文書(
docs/)は将来意図を含み、現行実装の説明とは限らないと公式READMEが明記する。 - 「containerが必要な仕事を10%未満へ」という値は提供者の目標であり、現在の保証値や実績ではない。
- isolateが水平スケールに適するという説明や、FUSEマウントの性能比較は提供者の自己申告であり、横並びの根拠に使わない。
- 公開時のブログは標準バックエンドをisolateとcontainerの2系統で説明したが、公式リポジトリの現行READMEはcontainer、isolate shell、isolate JavaScriptの3種類を記載する。数は固定しない。
- 性能、課金、リージョン、制限、監査・認可の詳細はPreviewの更新に追従する。
Cloud Run SandboxesとCloudflare Sandbox SDK——host-firstとsandbox-first
Cloud Run Sandboxesは、すでに動いているCloud Runインスタンスをスケール・課金・資源割り当ての単位に保ち、その内側へ実行境界を差し込みます。本書ではこの向きをhost-firstと呼びます。親アプリケーションから見た「安全なfork/exec」は、実装方式ではなく、危険なsubprocess.run()を境界付きの実行へ置き換える利用感の比喩です。
Cloudflare Sandbox SDKは、IDを持つsandboxを取得し、その内側でコマンド、ファイル、プロセス、公開サービスを扱います。本書では、境界そのものをシステムの主語にするこの向きをsandbox-firstと呼びます。Durable Objectの論理IDが残ることと、稼働中コンテナのファイル・プロセス・shell状態が残ることは別の実行モデルです。
| 軸 | Cloud Run Sandboxes | Cloudflare Sandboxes |
|---|---|---|
| 呼び出し関係 | host-first。同じCloud Runインスタンス内の親アプリケーションがCLIをローカルに呼ぶ。sandboxは親に割り当てられたCPUとメモリを共有する | sandbox-first。WorkerがDurable Objectを介して、名前付きの専用コンテナを操作する。sandboxの識別子とライフサイクルが第一級に見える |
| 最短経路 | sandbox doが一時sandboxの作成、コマンド実行、削除をまとめる | getSandbox(id)で環境を得てexec()する。初回参照で起動し、同じIDへの後続呼び出しは同じ稼働中環境へ届く |
| 長時間実行 | --detachで名前付きsandboxを残し、sandbox execで追加コマンドを送れる | startProcess()、PTY、公開URL、ファイル監視、永続コード文脈を同じsandboxで扱う |
| ファイル | 親コンテナのrootfsは既定で読み取り専用。書き込みは一時tmpfs overlayで、削除時に失われる。tarまたはbind mountで明示的に橋を架ける | 稼働中のLinuxファイルシステムは読み書き可能。コンテナ停止時には失われるため、backup/restoreやbucket mountを使う |
| 出口と資格 | 親の環境変数・Secret・メタデータサーバへは既定で到達できず、外向き通信も既定拒否。必要なコマンドだけ明示的に開く | internet accessは既定で許可。enableInternet = false、host allowlist/denylist、出口proxyによる資格注入を組み合わせられる |
| 保存対象 | 現行のtar/snapshot操作が保存するのは変更されたファイルシステム。メモリや実行中プロセスの復元ではない | 2026年4月のGA記事はVMレベルsnapshotを「今後数週間で展開」とし、将来のメモリ状態保存も予告した。確定済みとして扱えるのはディレクトリのbackup/restoreまでで、現行提供状況は再確認が必要 |
| 課金の見え方 | sandboxは親Cloud Runインスタンスの割当資源上で動き、機能利用の追加premiumはないと発表ブログが説明 | Active CPU Pricingを採り、アイドルCPUを課金対象から外すとGA記事が説明。単価と各資源の扱いは入稿直前に再確認する |
ここから「Cloud Runは安全なfork/exec、CloudflareはAPIで操作する一時的なLinuxホスト」という対比が導けます。ただし、これは公式の製品定義ではなく、境界の置き場所と設計の重心をつかむための比喩です。Cloud Runにも長命モードがあり、Cloudflareにも一回のexec()、per-task sandbox、明示的な破棄があるという但し書きを外すと、比較はすぐ不正確になります。
ネットワークの違いも、この主語から読めます。Cloud Runが先に問うのは「この一回の命令に通信が必要か」です。Cloudflareが先に問うのは「このLinux環境の通信を、外側のWorkerがどのポリシーで仲介するか」です。前者は単純なdeny-by-default、後者は既定では開きながら、宛先制御と資格注入をプログラムできる境界です。
状態の寿命——statefulかstatelessかで分けない
Cloud Runは、親rootfsの読み取り専用参照、一時overlay、tar入出力、mountを使い、次の実行へ渡す状態を明示します。Cloudflareは、コンテナがactiveな間はファイル、プロセス、shell session、環境変数を保持します。しかし、既定では10分の非活動後にコンテナが停止し、次の要求ではfresh containerが起動するため、実行時状態は失われます。keepAlive、directory backup/restore、bucket mountは、この既定へ別の寿命を足す機能です。
したがって比較軸は、状態があるかどうかではありません。状態の寿命をコマンドの入出力へ結びつけるか、sandboxの稼働期間へ結びつけるかです。Cloudflareの論理IDを、メモリ・プロセス・ファイルシステムの永続性と読み替えません。
実行粒度——CommandからWorkspaceまでの連続体
| 粒度 | 境界と状態の単位 | Cloud Run Sandboxes | Cloudflare Sandbox SDK |
|---|---|---|---|
| Command | 一つのコマンドが終われば破棄 | sandbox doが最短経路 | exec()後にdestroy()する短命利用 |
| Task | ビルドや検証など一つの仕事 | 名前付きsandboxへ複数のexecを送り、完了後に破棄 | per-task IDでbuild、pipeline、background jobを対応付ける |
| Session | 一人または一会話の対話期間 | detachしたsandboxを親インスタンスの寿命内で再利用 | per-session IDや明示sessionでshell状態を整理する |
| Workspace | 長時間の作業場と外部状態 | 長命processは可能だが、親Cloud Runインスタンスの資源・寿命から独立しない | keepAlive、公開port、file watch、外部storageを組み合わせる |
この表も能力の排他分類ではありません。どちらのサービスを選ぶかより先に、あなたの仕事がどの粒度で境界、状態、資格、ネットワークを共有してよいかを決めます。
既知の未知
- Cloud Runの発表ブログは、1,000個のsandboxを作成・実行・停止した例で平均500msと報告しています。測定条件を横並びにできない製品自己申告値なので、本文や図4-1の座標には使いません。
- Cloud Run発表ブログは、構造化データに2026年7月9日、表示日と公開時刻メタデータに7月10日を持ちます。本付録では単一の発表日を固定しません。
- Cloud Run SandboxesはPublic Previewです。CLI、既定値、対応リージョン、料金上の扱いはGAまでに変わり得ます。
- Cloudflareの2026年4月GA記事と、その後のLifecycle文書では、snapshotの表現と現行状態に時間差があります。ファイルbackupとVM/メモリsnapshotを同じものとして扱いません。
- 上限、単価、対応リージョンは本エントリへも固定せず、公開時に別表を生成するか、各社の料金・上限ページへ誘導します。
- Cloudflare ComputerはEarly Previewのオープンソース実験で、GA時期、マネージドサービスとしての提供形態、課金は未発表です。バックエンドの顔ぶれと
execの契約はPreviewの更新で変わり得ます。
一次資料
- Cloud Run発表ブログ(日付フィールドは2026-07-09と2026-07-10が併存): https://cloud.google.com/blog/topics/developers-practitioners/google-cloud-run-sandboxes-are-in-public-preview
- Cloud Runリリースノート(2026-07-08掲載、2026-08-05に全リソース対応を追加): https://docs.cloud.google.com/run/docs/release-notes
- Cloud Run code executionガイド: https://docs.cloud.google.com/run/docs/code-execution
- Cloud Run sandbox CLI: https://docs.cloud.google.com/run/docs/reference/sandbox-cli
- Cloudflare Sandboxes GA(2026-04-13): https://blog.cloudflare.com/sandbox-ga/
- Cloudflare Architecture: https://developers.cloudflare.com/sandbox/concepts/architecture/
- Cloudflare Lifecycle: https://developers.cloudflare.com/sandbox/concepts/sandboxes/
- Cloudflare Sessions: https://developers.cloudflare.com/sandbox/concepts/sessions/
- Cloudflare Outbound traffic: https://developers.cloudflare.com/sandbox/guides/outbound-traffic/
- Cloudflare Container runtime: https://developers.cloudflare.com/sandbox/concepts/containers/
- Cloudflare directory backup/restore: https://developers.cloudflare.com/sandbox/guides/backup-restore/
- Cloudflare Computer発表ブログ(2026-08-03): https://blog.cloudflare.com/cloudflare-computer/
- Cloudflare Computer公式リポジトリ: https://github.com/cloudflare/computer
- AWS/GKE/Azureおよび既存Cloudflareの照合: 四社のエージェントサンドボックスの一次資料
変更履歴
- 0.12.1 (2026-08-09): 発表ブログ内に2026年7月9日と10日が併存することを確認し、0.12.0で行った9日への訂正を撤回。単一の発表日を固定しない扱いへ変更。
- 0.12.0 (2026-08-09): 2026年8月5日のCloud Run全リソース対応を追記し、発表日を7月9日へ訂正。この日付訂正は0.12.1で撤回。
- 0.11.1 (2026-08-06): 第4章の章順変更に合わせ、対象本文の参照範囲を4.3〜4.7から4.3〜4.6へ更新。
- 0.11.0 (2026-08-05): Cloudflare Computer(Early Preview)を追加。Sandbox ID中心の比較から、Workspaceと交換可能な実行面を分ける比較へ拡張し、参照章へch00を追加。
- 0.10.0 (2026-07-12): Cloud Run/Cloudflare比較をhost-first/sandbox-first、状態の寿命、ネットワーク境界、Command/Task/Session/Workspaceの連続した実行粒度で再構成。Cloudflareの論理IDとアイドル停止後に失われる実行時状態を分離し、単純なCommand対Workspace分類を撤回。
- 0.9.0 (2026-07-11): mainのv24.1追補をv31.0-rc6の安定ID体系へ移植し、Cloud Run Sandboxesと既存四社を実行粒度で比較する初版ドラフトを作成。