GitHub Copilotアプリにローカルサンドボックスが入った。OSが守れないなら、シェルは動かない
9月23日、GitHub Changelogに Local sandboxing in the GitHub Copilot app が載った。パブリックプレビューで、既定はオフ。エージェントが自分のマシンで叩くシェルコマンドの届く範囲を、プロジェクトごとに絞れるようになる。
私が目を引かれたのは機能の存在そのものより、失敗時の挙動だった。
絞れるのはファイル、ネットワーク、認証情報の三つ
設定はプロジェクト単位で、対象はローカルリポジトリとワーキングツリーのセッションになる。項目は三系統に分かれている。
ファイルシステムでは、追加の読み書き許可フォルダ、追加の読み取り専用フォルダ、拒否フォルダの三つのリストを持てる。ネットワークでは、外向きのインターネット接続とローカルネットワークへの接続を別々に切り替える。認証情報では、HTTPS経由のGit操作で使うGit認証情報と、GitHub CLIの認証情報を個別に渡すか渡さないか決める。
エージェントにコードを書かせるだけなら、この三つはどれも必要ない場面が多い。git push だけ通したい、社内ネットワークには触らせたくない、~/.ssh 周りは見せたくない。こういう線引きを、シェルに任せる前に宣言しておける。
要求したポリシーが守れないとき、サンドボックスは黙って外れない
ここが本題になる。プロジェクト設定が表すのは、セッション開始時にアプリが要求するポリシーだ。エンタープライズの管理設定が効いている環境では、実際に適用されるポリシーが要求より厳しくなることがある。
そして、OSが要求されたポリシーを強制できない場合、サンドボックス化されたシェルはエラーで失敗する。サンドボックスなしで実行を続けることはしない。
隔離の機能で一番怖いのは、効いていると思い込んだまま素の環境でコマンドが走ることだ。設定画面ではオンになっているのに、裏で無効化されて何も起きない。今回の仕様はその経路を塞いでいる。動かないなら動かないと分かる。エラーは面倒だが、エージェントに任せた作業が知らないうちに無防備になるよりずっと良い。
適用されない範囲は先に把握しておく
ローカルサンドボックスは、クラウドサンドボックスのセッションにも、リモートホスト上で動くセッションにも適用されない。Copilotアプリの設定とCopilot CLIのサンドボックス設定も別管理で、片方を絞っても、もう片方には反映されない。
アプリで厳しく絞ったつもりでCLIを普通に使っていれば、CLI側は素のままだ。両方を使う人は、設定を二か所でそろえる必要がある。
CLI側の既定値と操作コマンド
CLIでのローカルサンドボックスは、6月2日に発表されたクラウドおよびローカルサンドボックスのパブリックプレビューの流れにある。ドキュメントによると、現時点では実験的機能の扱いで、--experimental を付けて起動するか、セッション中に /experimental on を打つ必要がある。Windowsでは Windows Insiders ビルドが要る。
有効化はセッション内でこう打つ。
/sandbox enable
有効にすると、Copilot CLIが代行して実行するコマンドやツールの大半がOSのサンドボックス内で動く。既定では、カレントディレクトリと一時フォルダに書き込める。ホームディレクトリ、システム領域、ツールの置き場は読み取り専用で、それ以外のディスク領域はブロックされる。ローカルネットワークと外向きのインターネットは通る。GitやGitHub CLIの認証情報はサンドボックス内のコマンドにも渡されるので、git push や gh pr create はそのまま成功する。認証情報の受け渡しは、サンドボックス設定で切れる。
サブコマンドは五つある。
/sandbox status # このセッションでサンドボックスが使われているか
/sandbox policy # 現在のディレクトリで有効なファイルとネットワークのポリシー
/sandbox config # 対話式の設定画面(/sandbox 単体でも開く)
/sandbox enable # オン
/sandbox disable # オフ
/sandbox policy は、今いる場所で何が読めて何が書けて何が塞がれているかを実効値で表示する。エージェントに作業を渡す前に一度見ておくと、思っていた範囲とのずれに気づける。設定画面には General、Filesystem、Network の三つのタブがあり、Tab で切り替え、Esc で保存して閉じる。設定は Copilot CLI の設定ディレクトリにある settings.json の sandbox キーに保存される。
企業の管理設定でサンドボックスが必須になっている場合、通常の設定、--no-sandbox オプション、/sandbox disable のいずれでも無効化できない。
手元で試すなら
プレビュー段階なので仕様は変わりうると、GitHub自身が明記している。それでも、エージェントに自動でシェルを触らせる運用を始めるなら、最初に確認したいのはこの機能のオンオフではなく、自分の使う入口がどれかだ。アプリ、CLI、クラウド、リモートホスト。入口ごとに設定の置き場所が違い、サンドボックスの効く範囲も違う。
私は、まず /sandbox policy の出力を眺めるところから始める。拒否フォルダに何を入れるかは、その次に決める。
参考
- Local sandboxing in the GitHub Copilot app, GitHub Changelog, 2026年9月23日
- GitHub Copilot weekly releases, September 21, GitHub Changelog, 2026年9月25日
- Cloud and local sandboxes for GitHub Copilot now in public preview, GitHub Changelog, 2026年6月2日
- Using local sandboxing, Configuring local sandbox settings, GitHub Docs