Skip to main content
Skip to content

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

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

Introduction

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

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

  • Copilot CLIでは、この記事で説明するコマンドと設定を使用してローカル サンドボックスを制御します。
  • GitHub Copilot app では、ローカル リポジトリと作業ツリー セッションにローカル サンドボックスを使用できます。 Project設定では、新しいローカル セッションの既定値が定義され、アクティブなローカル セッションのサンドボックスを変更できます。 詳細については、「GitHub Copilot アプリ でのエージェント セッションの操作」を参照してください。

ローカル サンドボックス設定は、 Copilot CLI と GitHub Copilot appで個別に構成されます。 一方のサーフェスでローカル サンドボックスを有効または構成しても、もう一方のサーフェスでは変更されません。

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

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

ローカル サンドボックス

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

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

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

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

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

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

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

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

Shell
/sandbox enable

ローカル サンドボックスを有効にすると、エージェントが代わりに実行するコマンドとツールは、システムへのアクセスを制限するオペレーティング システム レベルのサンドボックス内で実行されます。 これには、シェル コマンド、ファイル検索、および既定で含まれるローカル MCP および言語 (LSP) サーバーが含まれます。 Copilot は、 /sandbox disable を実行して無効にするまで、今後のセッションを含め、ローカル サンドボックスを引き続き使用します。

エンタープライズ管理設定でサンドボックスが必要な場合、通常の設定とスタートアップ オプションでは無効にできません。 有効なポリシーでサンドボックスのバイパスが許可されている場合でも、現在のセッションの残りの部分で、バイパスアクセス許可プロンプトから、または /sandbox disableを実行してサンドボックスを無効にすることができます。 保存されたポリシーは変更されません。

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

GitHub Copilot app では、リポジトリ設定で、新しいローカル リポジトリと作業ツリー セッションのローカル サンドボックスの既定値が定義されます。 リポジトリの既定値を変更せずに、アクティブなローカル セッションのサンドボックス設定を変更することもできます。

Copilot CLIとCopilot appでローカル サンドボックスを有効にする方法の詳細については、ローカル サンドボックスの利用 を参照してください。

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

既定のローカル サンドボックス動作を使用したり、アクセスできる Copilot を変更したりできます。 使用可能なコントロールは、使用するサーフェスによって異なります。

Copilot CLIでは、アクセスの複数のディメンションを制御できます。

  • ファイルシステム: 特定のパスへの読み取り専用または読み取り/書き込みアクセス権、または拒否パスを付与します。
  • ネットワーク: 外向きのインターネット アクセスとローカル ネットワーク アクセスを制御するか、特定のホストを許可および拒否します。 使用できる制限は、オペレーティング システムによって異なります。
  • 資格情報: Git と GitHub CLI (gh) の認証を有効にするか、追加の環境変数をマスクする。 サンドボックス ツールはプレースホルダーを受け取り、ローカル プロキシは承認された HTTPS 宛先にのみ実際の資格情報を提供します。
  • サブプロセス: ローカル MCP サーバーと言語サーバーもサンドボックス内で実行するかどうかを選択します。 リモート MCP サーバーはサンドボックス化されません。
  • キーチェーン (macOS): サンドボックス内からシステム キーチェーンにアクセスできるかどうかを選択します。
  • コマンドごとの例外: より広範なアクセスが必要な場合に、個々のコマンドがサンドボックスの外部で実行されることを許可または禁止します。

GitHub Copilot appでは、リポジトリ設定によって次のコントロールのサブセットが公開されます。

  • ファイルシステム: 特定のパスへの追加の読み取り専用または読み取り/書き込みアクセス権を付与するか、パスを拒否します。
  • ネットワーク: 送信インターネットとローカル ネットワーク アクセスを許可またはブロックします。
  • 資格情報: Git と GitHub CLI の資格情報をサンドボックス内で使用できるかどうかを選択します。

アプリでは、サンドボックスの外部で実行する個々のコマンドを承認するように求めることもできます。 リポジトリ設定でバイパス要求を許可するかどうかを構成することはできません。 アプリまたは CLI でのローカル サンドボックスの構成の詳細については、「 ローカル サンドボックス設定の構成」を参照してください。

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

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

  • macOS は Seatbelt バックエンドを使用します。 Copilot CLI は、プロセス スコープのプロファイルを各サンドボックス コマンドに適用します。 macOS 15 (Sequoia) 以降を使用します。 Copilot CLI は古い macOS をブロックしませんが、バックエンドはそこでテストされていません。
  • Linux では、バブルラップ バックエンドが使用されます。 bubblewrap 0.5.0 以降をインストールし、 bwrap が PATHにあることを確認します。 bwrap が、/sandbox が古すぎると報告した場合は、パッケージをアップグレードしてください。 サンドボックス ポリシーで送信トラフィックが許可されている場合は、次の項目も必要です。
    • PATH 上の slirp4netns
    • util-linux 2.35 以降の unshare および nsenter(--map-current-user と --keep-caps をサポート)
    • iptables、 ip6tables、およびそれらの復元バイナリ。 nf_tables バックエンドを使用します。 レガシ バックエンドも動作しますが、 /run/xtables.lockに書き込むことができる場合にのみ動作します。
    • /dev/net/tunへのアクセス。
  • Windowsには、サンドボックスをサポートする最新のWindows 11更新プログラムが必要です。 拒否されたパス、localhost 接続、プロキシなどの機能のサポートも、Windowsのバージョンによって異なります。 ホストが要求された機能をサポートできない場合、Copilot CLI は、制限の弱いコマンドを実行するのではなく、必要条件を通知します。 Copilot のサンドボックス化に関する Windows 更新情報を参照してください。

プロキシのサポート

Copilot CLIでは、ホスト ルールと HTTP プロキシ設定では、組み込みのローカル プロキシが使用されます。 それらの適用は、オペレーティング システムによって異なります。

  • macOS と Linux: サンドボックスは、ローカル プロキシへの送信接続を制限します。 プロキシ設定を無視するプログラムは、代わりに直接接続できません。 クロスプラットフォーム サポートに記載されている送信トラフィックの Linux 要件は、プロキシを構成するときにも適用されます。
  • Windows: プロキシとホストの規則には、サポートされているWindowsバージョンとローカル ネットワークを許可がオンになっていることが必要です。 Windowsでは、サンドボックスはプロキシ設定に従うプログラムに依存します。 その結果、これらのコントロールは、macOS や Linux の場合と同等の、直接接続に対する保護を提供しません。

GitHub Copilot appで、リポジトリ設定で拒否されたパスを保存できます。 現在有効な BaseContainer の機能で拒否対象のパスに対する制限を適用できない場合、サンドボックス化されたコマンドは、より弱いポリシーまたはサンドボックスなしで実行されるのではなく、失敗します。

Linux では、bubblewrap は、シェル コマンドやローカル MCP または LSP サーバーなど、生成されたプロセスに対してローカル ネットワーク アクセスを個別に制御することはできません。 ローカル ネットワーク設定は、CLI とアプリの両方で、Web 要求やリモート MCP 接続などのインプロセス操作に引き続き適用されます。

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

Copilot CLIでは、ホストがサンドボックスをサポートしていない場合、サンドボックスを有効にするための保存されたユーザー設定は現在のセッションでは無効になります。 シェル コマンドとサービスがサンドボックスなしで実行されることを示す通知が表示されます。 保存した sandbox.enabled の設定は変更されません。 サポートされていないホストでの /sandbox enable の実行は拒否されます。

エンタープライズ設定によって、この動作が変わることがあります。 サポートされていないホストでは、有効なマネージド設定も sandbox.failIfUnavailable を true に設定しない限り、サンドボックスを有効にするサーバー管理の要求は拒否されます。 デバイスで管理される設定では、サポートされていないホストでもサンドボックス化が必要になる場合があります。 サンドボックスを必要とするコマンドとサービスは、それなしで実行されるのではなく失敗します。 有効なマネージド設定で sandbox.enabled と sandbox.failIfUnavailable の両方が trueに設定されている場合、CLI は、サンドボックスを適用できない場合、セッションのモデル要求とツールの実行をブロックします。 これらの要件は、サーバーで管理される設定、デバイスで管理される設定、またはその両方の組み合わせから取得できます。

GitHub Copilot appでは、ローカル サンドボックスをサポートしていないホストでは、ローカル サンドボックスを使用するように構成されたセッションが正常に開始されることがありますが、シェル コマンドやその他のサンドボックス化されたプロセスは、Copilotがそれらを起動しようとすると失敗します。 GitHub Copilot appは保存された設定を保持し、操作が失敗した場合、サンドボックスはこのプラットフォームではサポートされていないと報告されます。 デバイスで管理される設定では、このフェールクローズ動作が必要になる場合があり、モデルとツールの実行をブロックすることがあります。

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

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

認証とアクセス

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

課金

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

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