Visual Studio Code⁠Agent HQに対応へ⁠自動承認のサブコマンド検出を改善⁠エージェント編集ファイルを自動で開く動作をデフォルトでオフに⁠インライン差分表示で削除コードを選択可能に

Visual Studio Codeは2025年11月12日、今月の更新版であるOctober 2025(バージョン1.106)をリリースした。コーディングエージェントを管理するための新しい統合ビューである「エージェントセッションビュー」を導入したほか、様々な機能が改善されている。この記事では、主な変更点を紹介する。なお今回のリリースに前後して、GitHub Copilotで使用できる新たなモデルとしてGPT-5.1、GPT-5.1-Codex、GPT-5.1-Codex-Miniがプレビューで提供開始されている

VS Codeの左端のサイドバーからアクセスできる「エージェントセッションビュー」は、GitHubが先月発表したエージェントを指揮するビジョン「Agent HQ」の中核機能であるミッションコントロールを、VS Code上でもおこなうためのもので、アクティブなチャットセッションを一元的に管理できる。現在、ローカルチャットエージェント(VS Code上のローカルセッション)と、GitHub CopilotクラウドエージェントやGitHub Copilot CLIエージェント、OpenAI Codexといった他の環境でバックグラウンドエージェントによって作成されたセッションが表示される。

また、チャットビューの入力欄右下の「コーディングエージェントに委任する」ボタンから、各種エージェントを選択するウィザードが表示されるようになった。ここで登録したセッションは、エージェントセッションビューにも表示される。またチャット欄で/delegateコマンドを使うことで、CLIからCopilotクラウドエージェントに委任できる。

なお、OpenAI Codexをコーディングエージェントとして利用する場合は、GitHub Copilot Pro+サブスクリプションが必要となる。

エージェントセッションビューの初期設定では、アクティブなチャットセッションがエージェントの操作環境ごとに見出しを立てて表示されるが、エージェントセッションビュー右上の詳細メニューから「Enable New Single View」を有効にすると、VS Code右側のセカンダリサイドバーのチャットビューのタブの隣にエージェントセッションビューが移動し、操作環境は問わず時系列でセッションが一覧表示されるようになる(セッションの各項目で小さくエージェントの操作環境が表示される⁠⁠。これによってセッションを簡単に見つけるようになると説明している(ただし現在は初期設定のビューで使える機能すべてが利用できるわけではない。近い将来、この時系列での一覧表示をデフォルトにできるよう取り組んでいるとのこと⁠⁠。

エージェントセッションビューでは、セッションを検索できる(フィルターをかけられる)ようになった。初期設定のエージェントセッションビューでは、エージェント種別ごとの領域を選択した上でショートカットキー(Ctrl+Alt+F)を押すかたちになる。シングルビューでも同じように利用できるが、こちらは検索ボタンが上部にあり、ここからも検索できる。

詳細な実装計画を生成するPlan(プラン)エージェントが組み込まれた。チャット入力欄左下の「モードの選択」から「Plan」を選択する。チャットを繰り返して計画を練ることで、要件・スコープ・疑問点が整理されたものにできる。そうすることで初期の計画の見落としや足りない点をこの段階で発見でき、実装時に手戻りを減らせ、コード品質も向上できるという。計画を承認したあとは、VS Codeのローカルセッションまたはクラウドエージェント経由で実装していくことになる。

ノートモデルを使い分けてプレミアムアクセスを削減する

MicrosoftのBurke Holland氏はアプリ活溌においてPlanエージェントを活用する際に、モデルを使い分けることで、GitHub Copilotの有償トークンとなるプレミアムアクセスの削減を図るワークフローを試してみたことを紹介している。最初にClaudeで計画を作成し、その次にGPT-5でその計画を一連の「フェーズドキュメント」を用意したという(それぞれを一つのプルリクエストとしても扱えるようにしたとのこと⁠⁠。その後、プレミアムアクセスのかからないGPT-5 miniを使って各フェーズドキュメントに基づいてコードを生成していき、最後にClaudeを使ってアプリのUIを改善した。

ワークフローやツールにあわせて、独自のカスタムエージェントを作成できるようになった。モード選択の「Configure Custom Agents」などから「Create new custom agent」を選択するとウィザードが表示され、まず、ワークスペース上の.github/agents以下に作成するか、パソコンのローカルユーザー環境のCodeディレクトリ以下に「User Data」として作成するかを選択する。その後、カスタムエージェントの名前を確定すると、該当ディレクトリにカスタムエージェントファイルが作成される。作成されたカスタムエージェントファイルには簡易テンプレートが含まれており、作成時にはVS Code上に自動で開かれるので、スタイルやツール、プロンプトをここで記述していくかたちになる。一度作成したカスタムエージェントは「Configure Custom Agents」上で管理できる。

カスタムエージェントファイルのフロントマターに、エージェントの動作環境(における制限)を指定するためのtargetプロパティをに記述できるようになった。target: vscodeでローカルチャット用に、target: github-copilotでCopilotクラウドエージェントまたはGitHub CLI用に設定したものであることを示せるようになった(これによって使えるフロントマターのプロパティを限定できる⁠⁠。このフロントマターでは、ファイル名を変更せずにエージェントの表示名を上書きするname、チャット入力にガイダンスを表示するargument-hint、複数ステップのワークフローを連結できるためのガイドを設定するhandoffsといったものも利用でき、ファイル編集の際に補完やコードアクションが用意されている。

これまでVS Codeではコーディングエージェントをカスタマイズできる機能を「チャットモード」と呼んでいたが、カスタマイズしたエージェントが他環境でも利用できるようになったことから整合性も兼ねて「カスタムエージェント」という名称に変更したことをあわせて報告している。カスタムエージェントのファイルは.agents.mdという接尾辞がつくファイル名で保存されるが、このファイルは、クラウドエージェントやCLIエージェントをカスタムエージェントにして利用する際の設定ファイルとしても機能できるようになっている。なお、既存のチャットモードの定義ファイル(.chatmode.md)は自動的にカスタムエージェントとして動作する(このファイルを開くと、カスタムエージェントファイルに変更するための提案が表示される⁠⁠。

ノート先日のAgent HQの記事で、テスト駆動開発エージェントのカスタムエージェントについて触れているのでそちらも参照のこと。

これまでVS Code経由のCopilotクラウドエージェントの実装はGitHub Pull Request拡張機能にあったが、Copilot Chat拡張機能に移行した。これにより、VS CodeとGitHub上(のエージェントページ)の間のミッションコントロールをスムーズに移行することが可能になったという。たとえば、GitHub上のエージェントセッションページ右上にある[Code]ボタンから、ローカル上のVS Codeで該当のエージェントセッションを開けるようになっている。

GitHub Copilot CLIとの初期統合もおこなわれた。チャットビューの入力欄にある「コーディングエージェントに委任する」ボタンや、エージェントセッションビューのGITHUB COPILOT CLI AGENTの見出しにある[+]ボタンを通してCopilot CLIのエージェントセッションが利用できるようになった。またエージェントセッションのGITHUB COPILOT CLI AGENTの見出しにある詳細メニューから、VS Code内でターミナル上のCopilot CLIを表示・操作できるようになった。

エージェントがファイル編集する際に以下の大きな変更が加えられた。

これまではエージェントがファイルを編集すると自動的にそのファイルを開いていたが、今回から自動的に開かないように動作を変更した。これまでのようにファイルを自動的に開くには、設定のaccessibility.openChatEditedFilesを有効にする必要がある。

また今回、エージェントが編集した際にそのファイルを確認するとインラインの差分表示がおこなわれるが、今回、インラインの差分表示において削除された行のテキストを選択してコピーできるようになった。

チャットとその表示にも様々な改善が加えられている。大きなまとまりごとに紹介する。

  • VS Codeのヘッダーから新しいチャットを始める場合、アイコンをクリックするとドロップダウンメニューが表示されるようになり、チャットエディタや新しいウィンドウでチャットセッションを表示する選択をできるようになった。

    チャットビューのウェルカム表示で提案されるカスタムプロンプトがある場合、そのカスタムプロンプトを右クリック(またはShift+F10)すると「プロンプトファイルの編集」メニューが表示されるようになった。なおウェルカム表示でカスタムプロンプトを表示するにはchat.promptFilesRecommendationsで設定を行う必要がある。

    チャット入力欄の「ツールの構成」がモデルピッカーのすぐ隣に移動している。

    チャットビューで数式表示は右クリックでTeXソースをコピーできるようになった。たとえば、 e i π + 1 = 0 からはe^{i\pi} + 1 = 0がコピーできる。

  • 実験的機能として前回の更新でGPT-5-Codexの思考トークンが表示できるようになっていた。今回、GPT-5、GPT-5 mini、Gemini 2.5 Proでも思考トークンを表示できるようになった(設定のchat.agent.thinkingStyleを有効にする必要がある⁠⁠。また今回、設定のchat.agent.thinking.collapsedToolsによって、UIとして折りたたまれる思考トークン表示にツール呼び出しも含められるようになった。

  • ツールを100を超えて有効にしている場合のフィルタリングやグループ化が改善されて選択時間が短くなり、適切なツールを選択できるようになった。

    MCPサーバーと拡張機能のツールの許可ボタンのドロップダウンからはそのサーバー(拡張機能)が提供するツールすべてを一度に承認できるようになった。これらは「チャット:ツール承認を編集する」コマンドで管理できる。

    外部データを取得するエージェントツール(#fetchツールと、openWorldHintを使うMCPツール)では、チャット上で使用する前にデータを確認する事後承認に対応した。これによって潜在的なプロンプトインジェクション攻撃を抑止できるようになった。

  • これまでターミナルツールでのサブコマンド検出は、|&&などの特定の文字列で単純に分割するかたちだったこと、安全のために括弧や中括弧のペア、バッククォートを無視していた。そのため、⁠コマンドの引数に文字列があるときに)うまくサブコマンドを検出できない場合があった。今回新しいパーサーが導入され、PowerShellまたはbashの文法を解析し、サブコマンドを非常に正確に検出できるようになった(他のシェル、たとえばzshでの;のような分割についてはこれまでのように検出できないだろうとのこと⁠⁠。

    関連して、ターミナルツールにPowerShell、bash、zsh、fishのシェル固有の説明が追加されたことで、特にPowerShellの認識に失敗する可能性が低くなった。

    PowerShellの&&がPowerShellのバージョン5でサポートされていないため、;を使うかたちに書き換えるように調整したとのこと(現在PowerShell v7でもこの調整が一時的に適用されている状態になっている⁠⁠。

    一連の改善により、⁠Powershell環境において)コマンドの自動実行時に間違った検出で停止せずに作業が進むようになった。

    設定のchat.tools.terminal.ignoreDefaultAutoApproveRulesを使うと、VS Codeが初期設定しているターミナルのコマンドの許可ルールと拒否ルールを無効にできるようになった。

    実験的な機能として、リダイレクト等でのファイル書き込みの自動承認を禁止できるようになった(設定はchat.tools.terminal.blockDetectedFileWrites。デフォルトで、ワークスペース外への書き込みは禁止できる⁠⁠。

  • チャットセッションの履歴を利用して、チャットでカスタムプロンプトを作成できる/savePromptコマンドが新たに提供された(これまでの/saveコマンドにかわる形になる⁠⁠。生成されたカスタムプロンプトはエディタ上で表示され、右下に保存するためのボタンが表示される。

チャットのコマンド表示とターミナルの関係にも手が加えられている。

実験的にチャット内にコマンド出力を表示できるようになった(設定でchat.tools.terminal.outputLocationを一度指定する必要があるかもしれない⁠⁠。出力は通常は折りたたまれたままになるが、エラーが発生したりすると自動的に展開されて表示されるとのこと。

この設定でチャットでコマンド出力を表示するよう設定するとnoneを指定すると⁠⁠、該当の組み込みのターミナルが開かれていない場合には「1 hidden terminal」として保持されるようになる(複数ある場合にはカウントが増える⁠⁠。ターミナルに表示されるこの文字列をクリックすると、保持されているどのターミナルを表示するかをピッカーで選択できる。

また、ターミナル上のコマンド実行時の行頭部分から「Attach To Chat」を選択することで、コマンドとその結果をコンテキストとしてチャットに添付できるようになった。

エディタ上のインラインチャット機能(Ctrl+I)もまだプレビューだがバージョン2となった。単一のプロンプト、単一のファイル、コード変更にのみ対応するようになり、UIがシンプルになり、体験も改善されているという。なお、インラインチャットで処理できないタスクについては自動的にチャットビューに移される。

GitHub Copilot機能で提供していたインラインサジェスト機能(NES)はGitHub Copilot Chat拡張機能に統合されることになり、今回インラインサジェスト時に行番号のガターアイコンから表示できるインラインサジェストのコントロールメニューで、インラインサジェストを一時停止(スヌーズ)できるようになった。

なお1年以上にわたってこれまでプレビュー機能だったターミナルのIntelliSense(補完機能などが提供される)を、今回からデフォルトとして展開していくとのこと。設定でterminal.integrated.suggest.enabledが有効になっていることを確認する必要がある。PowerShell、bash、zsh、fishにおいてIntelliSenseが起動できるようになる。開発するにあたり、万能な方法はなかったということで様々なオプションが提供されている

MCP関連では、MCPサーバーをインストールする際に、グローバルにインストールするだけでなく、ワークスペース構成にインストールできるようになった。拡張機能ビューでMCPサーバーを右クリックして「Install in Workspace」を選択するか、MCPサーバーの紹介タブ上でこの操作をおこなう。ワークスペース構成にインストールすると、その設定が.vscode/mcp.jsonファイルに追加されるかたちになる。

GitHub Enterprise内で使うMCPサーバーを限定できるようにもなった。また、リモートMCPサーバーの認証形式としてClient ID Metadata Document (CIMD) 認証フローに対応したり、リモートMCPサーバーのツール呼び出しにおいてWWW-Authenticateヘッダーを通してそのツールが必要とする権限を動的に(必要最小限に)MCPサーバーに与えることができるようになった。

エディター全体の改善点もいくつかある。上述したインラインの差分表示で削除コードの選択が可能になったことに加えて、以下のような改善が加えられた。

  • VS CodeのUIで使われるアイコンセットのcodiconが更新されている

  • インラインコード等の診断マーカーにマウスオーバーしたときに表示される、エラーやヒントのテキストをコピーできるボタンが追加された。

  • 指定行へ移動する機能が改善されて、範囲外の値をファイル先頭や末尾への移動として判断するようになったほか、::でのファイル先頭または末尾からの文字数を使った位置への移動が可能になった。また列指定に-1を指定すると、その行の末尾を意味できる:12:-1で12行目の末尾)ようになっている。

  • Linuxのマシン上のすべてのユーザーに対して、VS Codeに対するポリシーを/etc/vscode/policy.jsonを使って設定・管理できるようになった。各リリースのresources/app/policiesにサンプルがあるとのこと。

  • 単一ファイルのdiffエディタで次の変更内容または前の変更内容に移動できるのと同じように、複数ファイルのdiffエディタ表示でもファイル間での変更内容の移動が可能になった。キーバインドまたは[↑]⁠↓]ボタンを使って、ファイル間の変更内容を確認できるとのこと。

またソース管理においうてもいくつかの改善が加えられている。

Gitコミットメッセージの折りたたみサポート

  • Gitコミットメッセージをエディタで書く場合に(コミットメッセージを空のままコミットするとエディタが開く⁠⁠、各項目ごとに折りたたんで見ることができるようになった。設定のgit.verboseCommitとgit.useEditorAsCommitInputを有効にする必要がある。
  • ソース管理ビューの「グラフ」で、ローカルでコミットするとOutgoing Changesノードが、リモートの同一ブランチをフェッチした際にIncoming Changesノードが表示されるようになった。
  • ソース管理ビューの「グラフ」で、特定コミットのコンテキストメニューに「Compare with...」が加わり、任意のブランチまたはタグと比較できるようになった。なお、⁠Compare with Remote」⁠Compare with Merge Base」というショートカットも用意されていて、それぞれ履歴項目をリモートブランチおよびマージベースと比較できる。
  • ワークスペース内で管理しているリポジトリが複数ある場合、ソース管理ビューの「リポジトリ」にそのリポジトリの一覧が表示されるが、これは「変更」⁠グラフ」において表示されるリポジトリを制御するために使われる。今後このあたりの見せ方が拡張される予定であり、それに向けて、排他的にリポジトリを確認する「Select Single Repository」が導入された。⁠リポジトリ」の詳細メニューから選択できる。
  • また実験的機能として「リポジトリ」において、該当のリポジトリの情報の表示を検討しているとのことで、設定のscm.repositories.explorerを有効にした上で、上記「Select Single Repository」を選択した場合に、リポジトリエクスプローラーが表示されるようになった。このリポジトリエクスプローラーから、ブランチとタグを作成したり、ブランチとタグの一覧を表示でき、各ブランチ/タグに対してさまざまなアクション(チェックアウトなど)を実行できるようになった。今後さらに昨日を追加する予定とのこと。


このほか、Python関連の改善点やアカウント管理の改善点、アクセシビリティの改善点などがある。詳細は公式のリリースノートを参照のこと。

おすすめ記事

記事・ニュース一覧