GitHub Copilot のクラウド / ローカル サンドボックス — 安全なエージェント実行基盤(パブリックプレビュー)

7 minute read

0 つの隔離実行モード(ローカル / クラウド)
  • すべて8
  • ローカル3
  • クラウド3
  • 仕組み2

概要: GitHub Copilot は「エディタ内のアシスタント」から、ツールを実行しコマンドを走らせファイルを書き換える エージェント型のコーディングパートナー へと進化しています。Copilot が代わりに取るアクションが増えるほど、セキュリティ・隔離・制御の保証が必要になります。今回パブリックプレビューになった クラウド / ローカル サンドボックス は、その実行レイヤーを Copilot にネイティブで提供するものです。ローカル/sandbox enable)は自分のマシン上で Copilot のシェル実行をファイルシステム・ネットワーク・システム機能から隔離し、クラウドcopilot --cloud)は GitHub がホストする完全分離の使い捨て Linux 環境でタスクを走らせます。ローカルは標準シートに無料で含まれ、クラウドは従量課金です。

このブログで扱う範囲

ローカルサンドボックスの有効化と特徴 / クラウドサンドボックスのライフサイクルと課金 / 基盤技術(Microsoft MXC・OS 別バックエンド・macOS の Seatbelt)/ 認証。ハンズオン(実際に動かす手順)は次回以降の記事で扱う予定です。

機能ハイライト(エリアで絞り込み)

1 ローカル/sandbox enable

セッション内のシェル実行を隔離する

Copilot CLI セッションで /sandbox enable を実行すると、Copilot が起動するシェルコマンドが ファイルシステム・ネットワーク・システム機能への制限付き で実行されます。エージェントワークフローを試しながら、Copilot が自分のマシンで触れられる範囲を自分でコントロールできます。今回のリリースは「Copilot が起動するシェルコマンドの隔離」に焦点を当てており、今後の CLI レベル隔離の土台になります。標準の Copilot シートに 追加料金なし で含まれます。

2 ローカルMicrosoft MXC

macOS / Linux / Windows で一貫した隔離

ローカルサンドボックスは Microsoft MXC 技術の上に構築されており、OS を問わず一貫した隔離体験を提供します。チームは「どのプラットフォームでも同じサンドボックスの振る舞い」を前提に標準化できます。

3 ローカルIntune / MDM

エンタープライズポリシーを集中管理

組織・企業では、ローカルサンドボックスのポリシーを Microsoft Intune などの MDM(モバイルデバイス管理)プラットフォームで一元的に構成・適用できます。管理者は、管理対象デバイス全体で Copilot がローカルリソースとどう対話するかを制御できます。

4 クラウドcopilot –cloud

GitHub ホストの使い捨て Linux 環境

copilot --cloud で、GitHub がホストする 完全に隔離された一時的な Linux サンドボックス を Copilot から直接起動できます。各セッションはローカル環境や他のセッションから分離され、Azure Container Apps Sandboxes を基盤に、GitHub が ID・ポリシー・課金のレイヤーを提供します。

5 クラウドActive / Stopped / Deleted

デバイスをまたいでセッションを継続

クラウドセッションは アクティブ / 停止済み(状態をスナップショット保存)/ 削除済み(復旧不可) の 3 状態を持ちます。停止時にスナップショットが作られるため、ファイルのコピーや依存関係の再インストールなしに、別のデバイスからでも中断した地点を再開 できます。

6 クラウドusage-based

既存ポリシーを継承し、従量課金で並列実行

各クラウドセッションは既存の Copilot クラウドエージェントのポリシーをそのまま継承 するため、組織が既に信頼している制御が初日から追加設定なしで適用されます。ローカルリソースを消費せず複数タスクを並列実行でき、課金は Compute / Memory / Storage の 3 メーターによる従量制です。

7 仕組みSandboxPolicy → ContainerConfig

MXC:セキュリティ意図と OS 実装を分離

MXC(Microsoft eXecution Container) は、ユーザーのセキュリティ意図を表す SandboxPolicy を、OS 固有の強制機構を表す ContainerConfig(Rust 製エグゼキュータが解釈する JSON)から分離します。filesystem(readwrite / readonly / denied paths)、network(defaultPolicy・allowedHosts・proxy)、lifecycle(destroyOnExit など)を宣言すると、ホスト OS ごとに最適なバックエンドへ解決されます。

8 仕組みSeatbelt / SBPL

macOS バックエンドの中身

macOS では MXC は seatbelt バックエンドを使います。Apple Seatbelt はカーネルレベルの MAC(強制アクセス制御) 機構で、SBPL(Scheme 風の S 式)で「このディレクトリは書き込み許可、.env の読み込みは拒否」といった細かいルールを sandbox-exec 経由で適用します。コンテナや VM より起動オーバーヘッドが小さいのが特徴です。

ローカルサンドボックス

ローカルサンドボックスを使うと、Copilot を 自分のコンピュータ上のサンドボックス環境で直接 実行でき、ファイルシステム・ネットワーク接続・システム機能へのアクセスが制限されます。

Copilot CLI セッション内で有効化するには次を実行します。

/sandbox enable

有効化後、Copilot がユーザーに代わって実行するコマンドはサンドボックス内で走り、システムへのアクセスが制限されます。隔離体験は Microsoft MXC を基盤に macOS / Linux / Windows で一貫しており、組織・企業では Microsoft Intune などの MDM でポリシーを一元適用できます。ローカルサンドボックスは標準の GitHub Copilot シートに 追加料金なし で含まれます。

クラウドサンドボックス

クラウドサンドボックスでは、GitHub がホストする 完全に隔離された一時的な Linux 環境 内で Copilot CLI セッションを実行できます。

copilot --cloud

各セッションはローカル環境・他セッションから分離され、Azure Container Apps Sandboxes を基盤に、GitHub が ID・ポリシー・課金のレイヤーを提供します。主なメリットは次のとおりです。

  • デバイス間の継続 — セッションは GitHub ホスト型インフラで動くため、最初に開始した場所に関係なく任意のデバイスで再開できます。
  • コンピュート集約ワークロードのオフロード — ローカルリソースを使わずに複数の Copilot タスクを並列実行できます。
  • 統一されたガバナンス — 既存の Copilot クラウドエージェントポリシーと同じ構成を共有し、追加設定なしで既存のセキュリティ制御をクラウド実行へ拡張します。

セッションのライフサイクル

状態 説明
アクティブ セッションが実行中で、Copilot CLI から操作している
停止済み 実行中ではないが状態が保存される。再開するとファイル・環境変数・進行中の作業が復元される
削除済み セッションと保存状態が削除され、復旧できない

セッションを停止するとスナップショットが作成され、後で中断地点を取得できます。削除すると実行環境とスナップショットの両方が消えます。

課金(クラウドのみ)

ローカルは無料、クラウドは 従量課金 です。GitHub は次の 3 メーターで使用量を計測します(USD)。

メーター 内容 単位 価格
Compute セッションが実行されている時間 $0.000024
Memory 実行中に割り当てたメモリ GiB 秒 $0.000003
Storage 停止セッションのスナップショット GiB 月 $0.005

仕組み:MXC と OS ネイティブのサンドボックス

ローカル隔離の基盤である MXC(Microsoft eXecution Container) は、モデル出力・プラグイン・ツールといった信頼できないコードを安全に実行するためのクロスプラットフォーム実行システムです。設計の要は、ユーザーの「意図」と OS の「強制機構」を分離 することにあります。

  • SandboxPolicy — 「/etc は読み取り専用」のような、高レベルでクロスプラットフォームなセキュリティ意図。
  • ContainerConfig — Rust 製エグゼキュータが解釈する具体的な JSON。version / containment / process / filesystemreadwritePathsreadonlyPathsdeniedPaths)/ networkdefaultPolicy の allow・block、allowedHostsproxy)/ lifecycledestroyOnExit など)を持つ。

"process""vm" のような抽象的な意図は、エグゼキュータがホスト OS で利用可能な最良のバックエンドへ解決します。

OS 実行バイナリ 主なバックエンド
Windows wxc-exec.exe processcontainer(既定), windows_sandbox, wslc, microvm(NanVix), hyperlight, isolation_session
Linux lxc-exec bubblewrap(既定), lxc
macOS mxc-exec-mac seatbelt

MXC は「セットアップ → 実行 → 破棄」を一括で行う one-shot 実行に加え、provisionstartexecstopdeprovision という state-aware なライフサイクル(永続サンドボックス)もサポートし、TypeScript SDK(@microsoft/mxc-sdk)から扱えます。

macOS の Seatbelt を覗く

MXC の macOS バックである Apple Seatbelt は、macOS 標準のサンドボックス機構(カーネルレベルの MAC)です。プロファイルは SBPL(Sandbox Profile Language) という Scheme 風の S 式で記述し、sandbox-exec -f profile.sb <command> のように既存プログラムを変更せず実行時に隔離できます。DevContainer のような完全隔離より起動オーバーヘッドがほぼゼロなのが利点です。

(version 1)
;; デフォルトで全て拒否(ホワイトリスト方式)
(deny default)

;; プロジェクトディレクトリのみ書き込みを許可
(allow file-write* (subpath (param "PROJECT_DIR")))

;; シークレットの読み込みは拒否
(deny file-read*
  (require-any
    (regex #"\.env$")
    (regex #"\.pem$")))

;; 特定ホストへの外部通信だけ許可
(allow network-outbound
  (require-any
    (remote tcp "github.com:443")
    (remote tcp "registry.npmjs.org:443")))

ルールは「より具体的なものが優先」「denyallow に優先」で評価されます。sudo log stream --predicate 'sender == "Sandbox"' | grep deny で拒否された操作をリアルタイムに観察できるため、プロファイルを実環境に合わせて少しずつ詰めていけます。Claude Code や Gemini CLI など他の AI エージェントツールも macOS でこの仕組みを利用しています。

Seatbelt は MXC が macOS で内部的に使うバックエンドの一例です。MXC は OS ごとにこうしたネイティブ機構(Linux なら bubblewrap、Windows なら processcontainer など)を抽象化し、同じ SandboxPolicy から各 OS 最適の隔離を実現します。

認証

Copilot サンドボックスは 既存の Copilot CLI 認証 をそのまま使います。Copilot CLI にサインインできていれば利用でき、別のクラウドプロバイダーの構成や API キー管理、インフラ準備は不要です。組織・企業のオーナーは、メンバーが使う前に組織・企業設定で サンドボックスポリシーを有効化 する必要があります。

まとめ

Copilot がエージェントとして「実行する」割合が増えるほど、安全な実行環境は基盤インフラ になります。今回のサンドボックスはその層を Copilot にネイティブで与えるもので、整理すると次のとおりです。

  • ローカル/sandbox enable)— マシン上の Copilot シェル実行を隔離。Microsoft MXC 基盤で macOS / Linux / Windows 一貫、Intune で集中管理、標準シートに無料同梱
  • クラウドcopilot --cloud)— GitHub ホストの使い捨て Linux 環境。Azure Container Apps Sandboxes 基盤、デバイス間継続、既存ポリシー継承、従量課金
  • 仕組み — MXC が意図(SandboxPolicy)と OS 実装(ContainerConfig / 各種バックエンド)を分離。macOS では Seatbelt + SBPL が下支え。

どちらも パブリックプレビュー であり、仕様は変更される可能性があります。次回以降の記事では、実際に /sandbox enablecopilot --cloud を動かすハンズオン形式 で掘り下げる予定です。


出典 / 参考リンク