GitHub Copilot CLIがアップデート、プランモードでのファイル編集をシステムレベルでブロック

2026年7月16日 16:28

印刷

記事提供元:Tech Times

Octocat (Roman Synkevych/Unsplash)

Octocat (Roman Synkevych/Unsplash)[写真拡大]

GitHubは7月14日、Copilot CLIのアップデートをリリースし、プランモードにおけるファイル編集の抜け穴を塞いだ。これまでプロンプトの指示に依存していた読み取り専用の制約が、ツール呼び出し層で強制的にブロックされるようになった。ただし、外部ツールを接続するMCP(Model Context Protocol)経由の操作は引き続きブロックの対象外となっており、利用環境によっては注意が必要だ。

■プランモードの安全性強化

GitHubは7月14日、Copilot CLIのアップデートを配信し、プランモードにおける読み取り専用の制約を適用する具体的な抜け穴を塞いだ。以前は、計画段階にあるAIエージェントがファイル編集やシェルを変更するツールを自由に呼び出すことができた。これは、ランタイム上でそれを阻止する仕組みがなかったためである。今回のアップデートにより、ワークスペースを変更する組み込みツールの呼び出しは、プランモード中にツール呼び出し層でハードブロックされるようになった。言語モデルの要求内容に関わらず、呼び出しは実行エンジンに到達する前に拒否される。7月14日から15日にかけてリリースされたv1.0.71シリーズの公式リリースノートによると、これら両方の変更が文書化されている。

システムプロンプトによる非推奨ではなく、ランタイムで拒否されるという構造上の違いが、これを単なるドキュメントの更新ではなく、意味のあるセキュリティ上の変更にしている。このアップデートは、アラン・チューリング研究所の研究者らが、直接的なチャットではなく通常のコーディング手順を経由してリクエストをルーティングすることで、Copilotの安全性の拒否をすべてのモデルバックエンドで100%の成功率で回避できるワークフローレベルのジェイルブレイクを実証したとTechTimesが報じた翌日に提供された。

Copilot CLIには3つの動作モード(プラン、スタンダード、オートパイロット)がある。GitHubのドキュメントによると、プランモードでは、Copilotがリクエストを分析し、明確にするための質問を行い、コードが記述される前に開発者がレビューするための構造化された実装の設計図を作成することになっている。安全性の約束は、エージェントがまず思考し、開発者が計画を承認した後にのみ行動するというものだった。

問題は、「まず思考する」というルールがメカニズムではなく、慣例によって適用されていたことだ。エージェントのシステムプロンプトは、計画段階でファイルを変更しないよう指示していたが、モデルが逸脱したり、プロンプトインジェクションによって操作されたりした場合、ツールディスパッチ層でファイル編集の呼び出しの実行を止めるものは何もなかった。ランタイムはそれを受け入れ、実行してしまっていた。

リリースノートによると、7月14日のアップデートでは、ツールディスパッチ層にハードブロックを追加することでこのギャップを埋めている。プランモードが有効な場合、ファイルエディタ、変更を伴うシェルコマンド、プルリクエストの作成など、ワークスペースを変更するものとして分類された組み込みツールは、実行前に拒否される。呼び出しが進行しないため、LLM(大規模言語モデル)は呼び出しが成功したという確認を受け取ることはない。これは、開発者が計画セッションを開始して席を外すようなエージェント的なワークフローにおいて最も重要である。古い設計では、混乱したり、操作されたり、あるいは行動モードに逸脱したりした計画エージェントが、計画のみのフェーズが破られたことを開発者に知らせることなくファイルを変更する可能性があった。

■サンドボックスポリシーがLSPのファイル読み取りと名前変更にも適用

リリースノートによると、同じアップデートにより、Copilot CLIのサンドボックスファイルシステムポリシーが拡張され、LSP(Language Server Protocol)によるファイルの読み取りと名前変更の編集も対象となった。

LSPは、2015年にMicrosoftによって開発され、現在ではエディタやIDEで広く採用されているオープンなJSON-RPCベースの標準であり、言語インテリジェンスツール(コード補完、定義への移動、診断、名前変更のリファクタリング)を、それらを利用するエディタから分離するものである。Copilot CLIのコンテキストにおいてこれが意味するのは、LSPの操作が、CLIの直接的なファイルAPI呼び出しとは別の経路を通じてファイルシステムにアクセスするということだ。LSPサーバープロセスは、CLI独自のツール層を通じてではなく、JSON-RPCチャネルを介して通信することで、ファイルを読み取り、名前変更のリファクタリングの場合はファイルを書き込む。

Copilot CLIのサンドボックスは、プロセスがプロジェクトディレクトリ外のどのファイルを読み書きできるかを制限する。7月14日以前は、その制限は直接的なファイルAPI呼び出しとシェルコマンドの実行を対象としていたが、LSPを介したアクセスはその範囲外であり、サンドボックスモードが管理しないファイルシステムへの完全な読み書きの経路が残されていた。これは、セキュリティ研究者がAIコーディングツールのサンドボックスについて繰り返し指摘してきたのと同じ構造的な問題である。保護すべきリソースへのすべてのアクセス経路を網羅していないサンドボックスは、定義上、不完全である。7月14日のアップデートでは、LSPのファイル読み取りと名前変更の編集を、直接呼び出しを管理するのと同じサンドボックスポリシーを経由させることで、この問題を修正している。

■MCPツールはプランモードでのブロック対象外

リリースノートには明記されているものの説明されていない、プランモードのハードブロックにおける重要な制約がある。それは「MCPおよび外部ツールは引き続き許可される」という点だ。

これは些細な注意点ではない。MCP(Model Context Protocol)は、2024年11月にAnthropicによって導入され、現在はLinux Foundationの管理下にあるオープンスタンダードであり、Copilot CLIが外部ツールやデータソースに接続するために使用している。多くの開発環境では、Copilot CLIをMCPサーバー(GitHub独自のネイティブMCPサーバー、コミュニティが構築したデータベースサーバー、ブラウザ自動化サーバー、内部プラットフォームAPIなど)に接続している。これらのMCPツールのいずれもワークスペースを変更する可能性がある。そしてプランモードでは、それらの変更はブロックされない。

構造上の理由は単純だ。Copilot CLIは、組み込みツールのディスパッチ層を所有しているため、それらをハードブロックできる。一方、MCPツールは、ローカルのJSON-RPCチャネルを介してCLIと通信する個別のサーバープロセスとして実行される。CLIはツール呼び出しをMCPサーバーに転送し、結果を受け取るだけであり、組み込みの呼び出しに対して持っているのと同じ傍受ポイントを持っていない。プランモードでMCPツールの呼び出しをブロックするには、GitHubが計画セッション中にMCPツールの呼び出しの転送を拒否するか(これには意図的な設計上の選択が必要)、MCPサーバーに独自のプランモード認識を実装させる必要がある(これは現在のMCPの機能ではない)。

実用的な影響として、Copilot CLIセッションをサードパーティのMCPサーバーに接続している開発者にとって、プランモードの読み取り専用の保証は絶対的なものではなく、条件付きとなる。LLMがMCP接続ツールを使用してワークスペースを変更することを決定した場合、計画セッションでもワークスペースが変更される可能性がある。2025年4月にセキュリティ研究者が文書化したところによると、MCPにはプロンプトインジェクションやツールポイズニング攻撃などの脆弱性が文書化されており、接続されたツールを通じてデータの持ち出しを許す可能性がある。これらの脆弱性は、プランモードのハードブロックでは対処されていない。

■段階的なセキュリティ強化の軌跡

プランモードの変更とLSPサンドボックスの拡張は、7月14日のリリースにおいて構造的に最も重要な2つの項目であるが、これらは孤立したものではない。これらは、Copilot CLIが2026年2月にすべての有料Copilotサブスクライバー向けに一般提供されて以来始まった、セキュリティ強化の軌跡における最新のステップである。

以前のリリースでは、ファイルシステム制限をセッションごとに制御するための--sandboxおよび--no-sandboxフラグが導入され、シェルコマンドがキャンセルされた際のプロセスツリーの強制終了が適用され、組み込みのファイル編集にサンドボックスポリシーのバッジが表示されるようになった。リリースノートによると、7月14日のアップデートでは、デフォルトの最大サブエージェントネスト深度が6から4に引き下げられた。これは、サブエージェントがループ内でさらにサブエージェントを生成するという、本番環境のエージェントワークフローで文書化された障害モードである、暴走した再帰的サブエージェント委譲の被害範囲を縮小する変更である。

このタイムラインは背景を理解する上で重要だ。GitHubがCopilot CLIの実行境界を厳格化しているのと同じ時期に、外部のセキュリティ研究者たちは、Copilotを含むエージェント型コーディングツールが、プロンプトレベルの防御では対処できない広範な攻撃対象領域を持っていることを文書化してきた。PromptArmorは2026年2月に、確認ダイアログなしで外部ペイロードをダウンロードして実行するCLI許可リストのバイパスを実証した。Adversa AIは5月にTrustFallの開示情報を公開し、Copilot CLIを含む4つの主要なエージェント型CLIすべてが、フォルダの信頼プロンプトの直後にプロジェクト定義のMCPサーバーを実行し、悪意のあるリポジトリから1回のキー入力でリモートコード実行を可能にすることを示した。そして、7月4日に公開されたアラン・チューリング研究所のワークフロージェイルブレイクに関する論文では、有害なリクエストをコーディングセッションの通常の手順を経由してルーティングすることで、テストされたすべてのモデルバックエンドにおいてCopilotのチャットレベルの安全性拒否を回避できることが判明した。

プランモードのハードブロックは、この種の攻撃に最も直接的に対応する適用上のギャップ、すなわち、読み取り専用であるはずのフェーズにあるエージェントがファイルシステムに書き込みを行えるという問題に対処するものである。しかし、プロンプトインジェクション、MCPサーバーの信頼性、あるいはチャット層の安全性チェックが実行層の制限を適用する適切な場所であるかどうかというより広範な問題には対処しておらず、これらの問題はエージェント型コーディングツールのエコシステム全体で未解決のままである。

■音声モードでのマイク選択の永続化

リリースノートによると、ユーザビリティの面では、7月14日のアップデートで/voice devicesコマンドが導入され、ユーザーがCopilot CLIの音声入力モードで使用する好みのマイクを選択して保存できるようになった。

音声入力は、6月上旬のMicrosoft Build 2026でCopilot CLIに導入された。これはローカルで実行され(録音された音声は開発者のマシンから外部に出ることはない)、初回セットアップ時に音声認識ランタイムのダウンロードとモデルの選択が必要となる。7月14日以前は、マイクの選択はその初回セットアップ時に固定され、セッションをまたいで別の選択を変更したり保持したりするメカニズムはなかった。作業環境に応じてノートパソコンのマイク、USBヘッドセット、外部インターフェースを切り替えるなど、複数のオーディオ環境で作業する開発者にとって、これは切り替えのたびにデバイスの選択を繰り返すことを意味していた。/voice devicesにより、選択が永続化され、セットアップを再実行することなくセッション間で保持されるようになる。

■ターミナルでのCanvasサポートと拡張機能の連携

リリースノートによると、同じリリースでCopilot CLIにCanvasサポートが追加され、Canvas APIを通じた拡張機能主導のインタラクションが可能になった。

Canvasは双方向の作業スペースであり、エージェントが作業を進めるにつれて構造化されたインタラクティブなコンテンツを更新し、開発者はそのコンテンツを直接編集、承認、リダイレクト、または並べ替えることができる。GitHubはCanvasモデルを、同社が「エージェントエクスペリエンス」と呼ぶものの基盤であると説明している。これは、人が単独で使用するためだけでなく、人とエージェントが同時に作業するために構築されたインターフェースである。この機能は2026年の初めにCopilotデスクトップアプリケーションで利用可能になっていたが、7月14日のアップデートによりCanvas APIがCLIコンテキストに導入された。つまり、拡張機能の作成者は、GUIアプリだけでなくターミナルでも構造化されたインタラクティブな作業オブジェクトを表示できるようになった。Canvasプロバイダーは、ローカルファイルのプレビュー用に結果としてfile:// URLを返すことができ、拡張機能がローカルで生成されたコンテンツをCanvasインタラクション内に表示する方法を提供する。

■コスト可視化の向上と16進数カラーコードのプレビュー

リリースノートによると、2つの小規模な追加機能がリリースを締めくくっている。セッション間のコスト概要と予算ガイダンスを提供する/chronicleコマンドは、より詳細なコストプロファイルに裏付けられた、より充実したコストヒントの推奨事項を生成するようになった。Copilot CLIのセッションが長くなり、ビルドの実行、サブエージェントの生成、複数ステップのタスクにわたる反復など、よりエージェント的になるにつれて、消費されるAIクレジットは、開発者が個別に追跡していない可能性のあるツール呼び出し全体で蓄積される。GitHubは6月1日にCopilotを従量課金制のAIクレジット請求に移行しており、1クレジットは$0.01(約1.6円、1ドル=162円換算)に相当する。/chronicleのより充実したコストプロファイルは、開発者がワークフローのどの部分が最もコストを押し上げているかを特定するのに役立つことを目的としている。

また、リリースノートによると、Markdown出力内の単独の16進数カラー値が、インラインのカラースウォッチとともにレンダリングされるようになった。デザイントークン、CSS変数、またはカラーパレットを扱う開発者は、16進数値を外部のカラーピッカーにコピーすることなく、ターミナルで一目で色を確認できるようになった。

■注目ポイントQ&A

●プランモードにおける「ツール呼び出しレベルでのハードブロック」とは何を意味しますか

以前の設計では、プランモードの読み取り専用の動作は、言語モデルがファイル編集ツールを呼び出さないように指示されることに依存していました。これは、モデルが逸脱したり、プロンプトインジェクションによって操作されたりする可能性のある慣例でした。7月14日のアップデートにより適用ポイントが変更され、ワークスペースを変更すると分類された組み込みツールは、プランモードが有効な場合、呼び出しが実行エンジンに到達する前にCLIのツールディスパッチ層によって拒否されるようになりました。ランタイムがモデルの指示だけでなく呼び出し自体を拒否するため、LLMがプランモードでファイルを書き込もうとしても書き込むことはできません。

●Copilot CLIのプランモードセッション中に、MCPツールは引き続きワークスペースを変更できますか

はい。プランモードのハードブロックは、GitHubの組み込みツールにのみ適用されます。MCP(Model Context Protocol)を介して接続されたサードパーティのツールは免除されます。これは、CLIが独自の組み込みツールに対して持っているのと同じ傍受ポイントを、MCPツールの呼び出しに対して持っていないためです。MCPサーバーをCopilot CLIに接続している開発者にとって、プランモードの読み取り専用の保証は絶対的なものではなく条件付きであり、モデルがワークスペースの変更を実行するMCP接続ツールを呼び出した場合、計画セッションでも変更が発生する可能性があります。

●サンドボックスポリシーをLSPのファイル読み取りに拡張するとは、実際にはどういうことですか

LSP(Language Server Protocol)は、Copilot CLIが定義への移動、診断、名前変更のリファクタリングなどの言語インテリジェンス機能にアクセスするための手段です。LSPの操作は、CLIの直接的なファイルAPIではなく、別のJSON-RPCチャネルを介して通信するLSPサーバープロセスを通じてファイルシステムに到達します。7月14日以前は、サンドボックスファイルシステムポリシーはCLIの直接的なファイルAPI呼び出しのみを管理し、LSPの経路は管理していませんでした。現在は両方をカバーしているため、サンドボックス化されたセッションが言語サーバーを介したファイルアクセスによるバイパスルートを持つことはなくなりました。

●本番環境のコードベースでGitHub Copilot CLIをオートパイロットモードで使用しても安全ですか

オートパイロットモードは、手を触れずに実行できるように設計されています。つまり、各ステップで承認のために停止することなく、Copilotがファイルを読み取り、ファイルを書き込み、シェルコマンドを実行できるようにします。7月14日の強化により、プランモードの抜け穴が塞がれ、サンドボックスの適用範囲がLSPに拡張されましたが、オートパイロットモードの実行モデルは変更されていません。セキュリティ研究者は、リポジトリコンテンツを介したプロンプトインジェクション、MCPの信頼性エスカレーション、許可リストのバイパスなど、エージェント型CLIの使用に関連する複数の攻撃対象領域を文書化しており、これらは今回のアップデートに関係なくアクティブなままです。出力をレビューし、適切なサンドボックスとツールの制限を適用せずに、本番環境のコードベースでオートパイロットを使用することは推奨されません。

元記事: GitHub Copilot CLI Closes Agentic Loophole: Plan Mode Can No Longer Edit Your Files

※この記事はTech Timesから提供を受けた記事を日本向けに翻訳・編集したものです。

関連キーワード

関連記事