Skip to main content
Skip to content

クラウドサンドボックスとローカルサンドボックスについて GitHub Copilot

クラウドサンドボックスとローカルサンドボックスは分離された実行環境を提供し、 Copilot がローカル コンピューター上または完全に分離されたクラウド環境で安全にコード、ツール、ファイルシステム、およびネットワーク リソースと安全に対話できるようにします。

メモ

GitHub Copilot用のクラウドサンドボックスとローカル サンドボックスはパブリック プレビューであり、変更される可能性があります。

イントロダクション

Copilot クラウドサンドボックスとローカルサンドボックスは、 GitHub Copilot CLI と GitHub Copilot appのためのセキュリティで保護されたサンドボックスエクスペリエンスを強化する実行プラットフォームです。 Copilotは、ツールの実行、コマンドの実行、ファイルの変更など、ユーザーに代わってより多くのアクションを実行するため、サンドボックス化によって、エージェントワークフローを安全に導入するために必要な分離、移植性、ポリシー制御が提供されます。

サンドボックスは、 GitHub Copilot CLI と GitHub Copilot appの両方で使用できますが、2 つのサーフェスで公開される方法は異なります。

  • Copilot CLIでは、この記事で説明するコマンドと設定を使用して、ローカルサンドボックスとクラウドサンドボックスの両方を制御します。
  • GitHub Copilot appでは、コマンドを実行せずに、新しいセッションを開始するときにクラウド サンドボックスを選択します。 この機能は現在 パブリック プレビュー であり、変更される可能性があります。 詳細については、「GitHub Copilot アプリ でのエージェント セッションの操作」を参照してください。

サンドボックスを使用すると、 Copilot の実行場所を選択できます。

  • ローカル サンドボックス: Copilot を自分のコンピューターで安全に実行します。 Copilot実行されるコマンドは、ファイルシステム、ネットワーク、およびシステムの機能へのアクセスが制限されています。 ローカル サンドボックスは追加料金なしで使用できます。
  • クラウド サンドボックス: Copilotによってホストされる完全に分離された一時的な Linux 環境内で、GitHub セッション全体をリモートで実行します。 クラウド サンドボックスは使用量に基づいて課金されます。

ローカル サンドボックス

メモ

ローカル サンドボックスは現在、試験段階の機能です。 これを使用するには、Copilot CLI コマンド ライン オプションで‑‑experimentalを開始するか、セッション中に/experimental onを入力します。

ローカル サンドボックスを使用すると、 Copilot コンピューター上のサンドボックス環境で直接実行でき、ファイルシステム、ネットワーク接続、システム機能へのアクセスが制限されます。 次のセクションで説明するコマンドと設定を使用して、 Copilot CLIでローカル サンドボックスを構成します。

ローカル サンドボックスは既定でオフになっています。 これを有効にするまで、 Copilot 実行されるシェル コマンドは、ユーザー アカウントと同じアクセス権を持つコンピューター上で直接実行されます。ユーザー アカウントは、できる限り読み取り、書き込み、削除を行い、マシンが到達できる任意のネットワークに到達し、制限なく資格情報を使用できます。 ローカル サンドボックスを有効にすると、このアクセスは、ユーザーが制御するポリシーに制限されます。

ローカル サンドボックスのしくみ

ローカル サンドボックスは、Microsoft eXecution Container (MXC) を利用します。これは、各オペレーティング システムで使用可能な分離メカニズムに共通のインターフェイスを提供するクロスプラットフォーム テクノロジです。 Copilot CLI は、適用するサンドボックス ポリシー (読み取り可能または書き込み可能なパス、ネットワーク アクセスが許可されているかどうかなど) を宣言し、MXC はオペレーティング システムに適した分離バックエンドを使用してそのポリシーを適用します。

分離テクノロジは、完全なハイパーバイザーやコンテナーなどの強力な分離から、OS レベルのプロセスやファイルシステムの封じ込めなどの軽量な分離まで、さまざまな面で存在します。 ローカル サンドボックスは、現在、この範囲の軽量の端に位置しています。プロセスがネットワーク上で読み取り、書き込み、到達できる内容が制限されますが、別の仮想マシンまたはコンテナー内でコマンドは実行されません。 この分離レベルがセキュリティ要件を満たしているかどうかを評価する場合は、実装の詳細については microsoft/mxc リポジトリ を参照してください。

詳細については、「GitHub Copilot CLI のローカル サンドボックスに関するファイルシステム ポリシーを理解する」を参照してください。

ローカル サンドボックスの有効化

Copilot CLI セッション内でローカル サンドボックスを有効にするには、次を実行します。

Shell
/sandbox enable

ローカル サンドボックスを有効にすると、エージェントが代わりに実行するコマンドとツール (シェル コマンド、ファイル検索、および既定では、CLI が起動する MCP および言語 (LSP) サーバー) がオペレーティング システム レベルのサンドボックス内で実行され、システムへのアクセスが制限されます。 CLI は、今後 CLI を使用する際は常に、/sandbox disable を実行して無効にするまで、プログラムからの利用でも対話的な利用でもローカル サンドボックスを引き続き使用します。 エンタープライズ管理設定でサンドボックスが必要な場合、通常の設定、スタートアップ オプション、 /sandbox disable は無効にできません。 有効なポリシーでサンドボックスバイパスが許可されている場合でも、アクティブなバイパスアクセス許可プロンプトから現在のセッションの残りの部分のサンドボックスを明示的に無効にすることができます。

CLI の組み込みファイル ツール ( sed などのシェル コマンドではなく、CLI の一部であるファースト パーティコマンド) は、CLI でインプロセスで実行されます。 CLI 自体はサンドボックス化されていないため、オペレーティング システム サンドボックスでは、これらのツールが実行するファイル操作は表示されず、制約できません。 代わりに、組み込みのツールは、サンドボックス ポリシー自体を確認し、ベスト エフォートベースで構成された設定を尊重するようにコーディングされています。

詳細については、「ローカル サンドボックスの利用」を参照してください。

ローカル サンドボックスの構成

既定のローカル サンドボックス動作を使用することも、アクセスできる Copilot を変更することもできます。 ローカル サンドボックスを構成する場合は、いくつかのディメンションのアクセスを制御できます。

  • ファイルシステム: 特定のパスへの読み取り専用または読み取り/書き込みアクセス権、または拒否パスを付与します。
  • ネットワーク: 送信インターネット アクセスとローカル ネットワーク アクセスを個別に許可またはブロックします。
  • 資格情報: Git と GitHub CLI (gh) の資格情報をサンドボックス内で使用できるようにするかどうかを選択します。
  • サブプロセス: ローカル MCP サーバーと言語サーバーもサンドボックス内で実行するかどうかを選択します。 リモート MCP サーバーはサンドボックス化されません。
  • キーチェーン (macOS): サンドボックス内からシステム キーチェーンにアクセスできるかどうかを選択します。
  • コマンドごとの例外: より広範なアクセスが必要な場合に、個々のコマンドがサンドボックスの外部で実行されることを許可または禁止します。

詳細については、「ローカル サンドボックス設定の構成」を参照してください。

クロスプラットフォームのサポート

ローカル サンドボックスは、macOS、Linux、および最近のWindows 11 ビルドで使用できます。 オペレーティング システムごとに異なる分離バックエンドが使用されるため、要件は異なります。

  • macOS は Seatbelt バックエンドを使用します。 Copilot CLI は、プロセス スコープのプロファイルを各サンドボックス コマンドに適用します。 macOS 15 (Sequoia) 以降を使用します。 Copilot CLI は古い macOS をブロックしませんが、バックエンドはそこでテストされていません。
  • Linux では、バブルラップ バックエンドが使用されます。 bubblewrap 0.5.0 以降をインストールし、 bwrapPATHにあることを確認します。 bwrap が、/sandbox が古すぎると報告した場合は、パッケージをアップグレードしてください。
  • Windowsは、ProcessContainer バックエンドの BaseContainer レベルを使用します。 Copilot CLI は AppContainer フォールバック 層を使用しません。 Windows ビルドで BaseContainer を提供できない場合は、サンドボックスがサポートされていないことを報告Copilot CLI。 サポートされている Windows バージョンを確認するには、Copilot サンドボックスの Windows OS サポートを参照してください。

プロキシのサポート

サンドボックス プロキシは、オペレーティング システムごとに動作が異なります。

  • macOS: Copilot CLI は、Seatbelt にプロキシを提供しません。 代わりに、サンドボックス環境で HTTP_PROXYHTTPS_PROXY、および ALL_PROXY を設定します。 これらの変数に従うプログラムのみがプロキシを使用します。 それらを無視するプログラムは直接接続します。

  • Linux: bubblewrap によってプロキシが適用されます。 サンドボックスはプライベート ネットワーク名前空間を取得し、プロキシ エンドポイントのみが許可されます。 このモードには、より多くの要件があります。 以下のものが必要です:

    • slirp4netnsPATHに保存します。
    • util-linux 2.35 以降の unshare および nsenter--map-current-user--keep-caps をサポート)
    • iptablesip6tables. nf_tables バックエンドを使用します。 レガシ バックエンドも動作しますが、 /run/xtables.lockに書き込むことができる場合にのみ動作します。

    Linux では、さらに 2 つの制限が適用されます。 Copilot CLIは IPv6 のみに到達できるプロキシを拒否するため、プロキシには IPv4 アドレスが必要です。 プロキシ URL には資格情報を含めてはなりません。そのため、プロキシ自体に資格情報を指定します。

    また、Linux では、bubblewrap は送信アクセスとは別にローカル ネットワーク アクセスを制御できません。 そのため、ローカル ネットワーク設定には別の効果はありません。

  • Windows: プロキシは使用できません。 Windowsでも拒否されたパスを使用しないでください。 Copilot CLI ではこれらの設定を適用できず、サンドボックス コマンドはエラーで失敗します。

ホストがローカル サンドボックスをサポートしていない場合

Copilot CLI を実行すると、そのセッションではサンドボックスが無効になり、通知が表示されます。 その後、シェル コマンドとサンドボックス サービスはサンドボックスなしで実行され、 sandbox.enabled 設定は変更されません。 デバイスで管理された設定を使用して企業がサンドボックスを適用している場合、セッションは閉じられません。サンドボックス 化されたコマンドは実行されません。

エンタープライズ ポリシーの適用

企業は、ローカル サンドボックスを必要とし、サーバー管理、MDM で管理、またはファイル ベースの管理設定を使用してその構成を適用できます。 「エンタープライズ管理設定を使い始める」を参照してください。

クラウドサンドボックス

クラウド サンドボックスを使用すると、 GitHubによってホストされる完全に分離された一時的な Linux 環境内でセッションを実行できます。 Copilot CLIとGitHub Copilot appの両方からクラウド サンドボックスを使用できます。 各クラウド サンドボックス セッションは、ローカル環境と他のセッションから分離されます。

クラウド サンドボックスは Azure Container Apps Sandboxes を基盤として構築されており、GitHub が ID、ポリシー、および課金のレイヤーを提供します。

メモ

組織経由で Copilot を入手した場合、クラウド サンドボックスへのアクセスは、組織またはエンタープライズの設定でそれが有効になっているかどうかによって決まります。これらの設定では、既定で無効になっています。 詳細については、「組織または企業のクラウド サンドボックスの有効化または無効化」を参照してください。

クラウド サンドボックス セッションの開始

クラウドベースのセッションを開始するには、次のコマンドを実行します。

Shell
copilot ‑‑cloud ‑‑experimental

メモ

クラウド サンドボックスは現在、試験段階の機能です。 これを使用するには、 Copilot CLIに対して試験的な機能が有効になっている必要があります。たとえば、CLI セッションの開始時に ‑‑experimental コマンド ライン オプションを使用する場合などです。前述のようにします。

‑‑cloudコマンド ライン オプションは、クラウド サンドボックス内で対話型のCopilot CLI セッションを起動します。 ローカル セッションと同じように、 Copilot にタスクの実行、シェル コマンドの実行、コードの反復処理を求めることができます。 Copilot実行されるコマンドは、ローカル コンピューターではなくクラウド環境で実行されます。

copilot ‑‑cloudを実行すると、クラウド サンドボックスで 1 つのCopilot CLI セッションが開始されます。 将来の Copilot セッションには影響しません。 クラウド サンドボックスで新しいセッションを実行するたびに、 ‑‑cloud オプションを使用して CLI を開始する必要があります。

メモ

クラウド サンドボックスは、対話型の Copilot CLI セッションでのみ使用できます。 クラウド サンドボックスで CLI をプログラムで実行することはできません。つまり、 ‑‑cloud オプションを -p または -i オプションと組み合わせることはできません。

GitHub Copilot appでは、コマンドを使用してクラウド サンドボックス セッションを開始しません。 代わりに、新しいセッションを作成するときにクラウド サンドボックス オプションを選択します。 詳細については、「GitHub Copilot アプリ でのエージェント セッションの操作」を参照してください。

デバイス間でセッションを続行する

クラウド サンドボックス セッションは GitHubホスト型インフラストラクチャで実行されるため、セッションが最初に開始された場所に関係なく、任意のデバイスで Copilot セッションを取得できます。 これにより、ファイルのコピーや依存関係の再インストールを必要とせずに、より柔軟なワークフローが可能になります。

コンピューティング集中型ワークフローをオフロードする

ローカル リソースを使用することなく、クラウドで複数の Copilot タスクを並列で実行できます。 これにより、エージェント駆動型の作業をスケーリングしながら、ローカル環境の軽量で応答性が維持されます。

統一されたガバナンス

クラウド サンドボックス ポリシーは、 Copilot cloud agent ポリシーと同じ構成を共有し、追加のセットアップなしで既存のセキュリティ制御をクラウド サンドボックス実行に拡張します。

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

クラウド サンドボックス セッションには、主に次の 3 つの状態があります。

  • アクティブ: セッションが実行中であり、 Copilot CLI または GitHub Copilot appから操作します。
  • 停止済み: セッションは現在実行中ではありませんが、その状態が保存されます。 再開すると、ファイル、環境変数、進行中の作業が復元されます。
  • 削除済み: セッションとその保存された状態は削除され、復旧できません。

セッションを停止すると、クラウド サンドボックスによって状態のスナップショットが作成されるため、後で中断した場所を取得できます。 セッションを削除すると、実行中の環境とスナップショットの両方が削除されます。

認証とアクセス

サンドボックスでは、既存の Copilot 認証が使用されます。 Copilot CLIまたはGitHub Copilot appにサインインしてCopilotにアクセスできる場合は、その画面で使用できるサンドボックス オプションに対して個別の認証を構成する必要はありません。 別のクラウド プロバイダーを構成したり、API キーを管理したり、インフラストラクチャを設定したりする必要はありません。

組織またはエンタープライズ所有者は、メンバーが クラウド サンドボックス を使用する前に、組織またはエンタープライズ設定でクラウド サンドボックス アクセス ポリシーを有効にする必要があります。

組織のメンバーのクラウド サンドボックスを有効または無効にする方法については、「 組織または企業のクラウド サンドボックスの有効化または無効化」を参照してください。

Billing

ローカル サンドボックス機能は、標準の GitHub Copilot シートに含まれているため、追加費用は発生しません。

クラウド サンドボックスは使用量に基づいて課金されます。 GitHub は、3 メートルにわたるクラウド サンドボックスの使用状況を測定します。

MeterDescription単位価格 (米国ドル)
Computeクラウド サンドボックス セッションが実行されている時間。コンピューティング (秒)$0.000024
メモリ実行中にクラウド サンドボックス セッションに割り当てられたメモリ。GiB (秒)$0.000003
Storage停止したセッションのスナップショット ストレージ。GiB (月)$0.005

クラウド サンドボックスの使用状況の測定と課金方法の詳細については、「 クラウドサンドボックスとローカルサンドボックスの課金 GitHub Copilot」を参照してください。

詳細については、次を参照してください。