VS Code⁠エージェントセッション一覧がチャットビューに統合⁠Gitワークツリーでの複数バックグラウンドエージェント動作⁠スキルを流用可能に

Visual Studio Codeは2025年12月10日、今月の更新版であるNovember 2025(バージョン1.107)をリリースした。エージェントセッション一覧がチャットビューに統合されて、バックグラウンドエージェントやクラウドエージェントとの引き継ぎが改善されるなど、VS CodeでのAgent HQの機能強化が行われたほか、様々な機能が改善されている。この記事では、主な変更点を紹介する。なお先月のリリースから本日までに、GitHub Copilotで使用できる新たなモデルとしてGPT-5.2GPT-5.1-Codex-MaxGemini 3 ProGemini 3 FlashClaude Opus 4.5が提供開始されている(プレビューでの提供を含む⁠⁠。

先月のリリースで、エージェントセッションビューをチャットビュー側のセカンダリサイドバーのタブで一覧表示できる機能(シングルビュー)を選択的に設定できるようになっていたが、今回のリリースでこの統合がより進み、チャットビューにエージェントセッションが直接統合され、それがデフォルトになった。この統合によって、チャットビューの横幅が狭いと、チャットビュー上部で最近のエージェントセッションが3つ表示されるようになった。

3つのセッションの下にある「Show All Sessions」⁠すべてのセッションを表示)を選択すると、表示されるエージェントセッションの数が増えた固定長さのスクロールボックスになり、全セッションを確認できるようになる。またこのとき検索とフィルターのオプションが利用できるようになる。⁠最近のセッションの表示」⁠すべてのセッションの表示」どちらの状態でも、右上のエージェントセッションサイドバーボタンを使って、チャットビューの隣にすべてのセッションを表示できる。もしチャットビューを開いたときに横幅が最初から広い場合には、チャットビューの隣にエージェントセッションの一覧も表示される(サイドバーボタンを押したときと同じ状態⁠⁠。なお表示されるセッションは、ワークスペースを開いていた場合には関連するもののみが表示され、ワークスペースを開いていない場合はすべてのセッションが表示される形になる(設定のchat.viewSessions.orientationでチャットビュー上部に固定するか(stacked⁠⁠、サイドバーを必ず表示するか(sideBySide)を調整できる。また自動で判断して表示するautoの設定がある(1.107.0ではautoがデフォルトだったが、1.107.1でsideBySideがデフォルトになった⁠⁠。

エージェントセッション一覧から特定のセッションを選択すると、ローカルセッションであればチャットビュー内にそのセッションを開くことができ、別のエージェントセッションであればエディタ上で開くことができる。なおセッションを選択するのではなく、右クリックしてコンテキストメニューを表示すると、セッションを開く場所の指定や後述のアーカイブ(Archive)に関する操作が可能になる。また各セッションをマウスホバーすると、アーカイブ/アンアーカイブ(Unarchive)ボタンも表示される。セッションをアーカイブすることで、デフォルト状態のエージェントセッションの一覧には表示されなくなる。上部のフィルターボタンでUnarchivedも表示させる選択をすることで、エージェントセッション一覧の下部にアーカイブ済みセッションを表示できる。

これまでは、ローカルチャットセッションを閉じると、実行中のエージェントリクエストがキャンセルされていたが、ローカルエージェントセッションを閉じてもバックグラウンドで実行を継続するようになった。各セッションの状態はセッション一覧で確認できる。

チャットの入力欄では、バックグラウンドエージェント(⁠⁠背景⁠⁠;旧称:CLIエージェント)またはクラウドエージェント(⁠⁠クラウド⁠⁠)にタスクを委任するための「次でチャットを実行」ボタンのメニューに「Continue in」が表示されるようになった。またローカルのプランエージェントを使ってタスクの計画ができたら、そのタスクをバックグラウンドエージェントまたはクラウドエージェントにハンドオフできる(=エージェントに委任できる)⁠Start Implementation」ボタンが表示されたときに、⁠Continue in」メニューを表示させてバックグラウンドエージェントまたはクラウドエージェントに委任できる。どちらかを選択すると、ローカルセッションのチャットコンテキストが引き継がれ、かつハンドオフ後はローカルセッションがアーカイブされる。

複数のバックグラウンドエージェントを実行すると、ワークスペース内の同じファイルを同時に変更する競合が発生する可能性がある。今回、Gitワークツリーでの実行に対応したことで、新しいバックグラウンドエージェントを作成する際、現在のワークスペースで実行するか、専用のGitワークツリーで実行するかを選択できるようになった。

Gitワークツリーでバックグラウンドエージェントを実行すると、エージェントは自動的にセッション用の新しい作業用のブランチでファイルを変更するようになる(別ブランチでの作業となるため、コミットを意識する必要が出てくる⁠⁠。この場合、バックグラウンドエージェントの作業開始時に現在のワークスペースのファイル変更がされているときには、これらのファイルをどうするかの確認も行われる(作業用のブランチに変更をコピーする/しないや、変更をスキップできる⁠⁠。

これにより、複数のバックグラウンドエージェントを同時に動作させたときに同じファイルを編集しても直接の競合は発生しなくなった。エージェントはタスクを完了させると、ワークツリー内でバックグラウンドエージェントによって行われた変更を簡単に確認し、メインのワークスペースにマージすることができる(もちろんマージの前にコミットが必要になるし、競合が起きていた場合にはコンフリクトを解決するためのエディタが表示される⁠⁠。マージのためにセッションを右クリックしたときに「ワークスペースに変更を適用します」アクションも表示されるようになった(ただし、その前にコミットしていないと煩雑な感じのようだった⁠⁠。

バックグラウンドエージェントへ複数のコンテキストを添付できるようにもなった。選択内容・問題(problem⁠⁠、シンボル・検索結果・Gitコミットなどを任意のプロンプトに添付できる。これにより、報告された問題を添付して、ファイルパスや行番号を手動で指定することなく、エージェントに修正を依頼できるという。

GitHubカスタムエージェントとの互換性を高めるため、エージェントツールの構造を再編成した。これにより(GitHubカスタムエージェントの保存場所も.github/agentsフォルダであるため⁠⁠、VS Code環境とGitHub環境の間でカスタムエージェントを共有できるようになった。この調整のために、既存のツール参照とそれらが属するツールセットの名前が変更された。エージェントファイル内の既存のツール参照は引き続き機能するが、推奨する名前に変更するためのコードアクションが表示される。

これまでカスタムエージェントはワークスペースレベルまたはユーザーレベルでのみ定義できるものだったが、今回実験的に、GitHubアカウントの組織レベルでカスタムエージェントを定義できるようになった(設定でgithub.copilot.chat.customAgents.showOrganizationAndEnterpriseAgentsを有効にする必要がある⁠⁠。有効にすると、組織で作成されたカスタムエージェントが「Agent」ドロップダウンメニューに表示されるようになる。詳しくはGitHubドキュメントを参照のこと。

実験的に、独自のカスタムエージェントをバックグラウンドエージェントにできるようになった。設定でgithub.copilot.chat.cli.customAgents.enabledを有効にすると、.github/agentsフォルダに定義されたカスタムエージェントがエージェントに表示されるようになった(カスタムエージェントを認識させるために一度再起動が必要なようだ⁠⁠。

エージェントが複雑な問題を解決する必要がある場合、タスクをサブエージェントに委任できる。サブエージェントはメインのチャットセッションとは独立して動作し、独自のコンテキストウィンドウを持つが、今回実験的にchat.customAgentInSubagent.enabledを有効にすることで、カスタムエージェントを使ったサブエージェントを利用できるようになった。なお、カスタムエージェントをサブエージェントとして使用しないようにするには、*.agent.mdファイルでフロントマターのinferをfalseに設定する。

サブエージェントはメインチャットセッションのエージェントを継承するのがデフォルトだが、チャットでモデルに「利用できるサブエージェントを箇条書きで書いて」といった質問すると、利用可能なサブエージェントのリストが表示される。そのあと、⁠カスタムエージェントをサブエージェントとして指定して)カスタムエージェントの要件を満たすプロンプトを入力すると、モデルは、カスタムエージェントの説明と引数を見て、指示に対して使用するかどうかを判断する。

たとえば、コードレビュー用のカスタムエージェントをサブエージェントとして動作させることで、コードのレビューに集中させることができる。

Claudeに導入された「スキル」⁠Agent Skills)は、エージェントが特定のタスクを行う際に、必要に応じて専門知識を与えて作業を効率化するための機能。ファイル名はSKILL.mdで、ファイルの中身に、そのスキルの名前と概要文、そして詳細な内容が書かれる。さらにスクリプトやテンプレートなどの補助ファイルも含められる。エージェントは、スキルの概要文をもとにそのスキルを使うかどうか判断し、スキルを使うことにした場合にその詳細な内容と補助ファイルを読み込み、チャットコンテキストの一部として利用できるようになる。

今回、このスキルがVS Codeでも実験的に利用できるようになった(設定のchat.useClaudeSkillsを有効にする必要がある⁠⁠。~/.claude/skills/skill-name/SKILL.mdにある個人スキルと、${workspaceFolder}/.claude/skills/skill-name/SKILL.mdにあるワークスペースフォルダにあるプロジェクトスキルに対応する。なおスキルの特性上、SKILL.mdのフロントマターに、スキルの概要文をdescription属性に記述している必要がある。ただしVS Codeではallowed-tools属性には対応していない。

エージェントモードでファイル読み取りツールが有効になっていれば、⁠どんなスキルを持っているか?」と尋ねるとスキルを見つけられ、スキルで回答できる質問を行うとそのスキルを使った回答が得られるという。

さらに12月18日、このスキルがオープン化された。早速VS Code Insidersで、設定のchat.useAgentSkillsを有効にすると、.github/skills/フォルダまたは.claude/skills/フォルダ(後者は後方互換のためにサポート)にあるスキルを読めるようになる。詳しい設定についてはAgent Skillsのドキュメントを参照のこと来月の安定版のVS Codeで利用できる予定⁠。以下の動画はVS Code InsidersでのAgent Skillsの動作例となる。

先月のインラインチャットから提供されているv2(プレビュー)は改善を続けており(設定のinlineChat.enableV2⁠⁠、これまでインラインチャットでは一般的な質問やディスカッションも可能だったが、現在はファイル内のコード変更に最適化されるようになった。インラインチャットで処理できないタスクについては、自動的にチャットビューにアップグレードされることになる。

個人向けのGitHub Copilotでは言語モデルエディターを使うことで、VS Codeでチャットに使用できる言語モデルを管理できる(Copilot Businessなどの組織プランを使っている場合はドキュメントを参照⁠。チャットのモデルピッカーから開くか、コマンドパレットから「チャット: 言語モデルの管理」を選択して開くことで、利用可能なすべてのモデルが一覧表示され、モデルの機能、コンテキストサイズ、課金情報、可視性ステータスなどの重要な情報が表示される。なおモデル名またはコンテキストサイズにマウスポインターを合わせると、モデル ID、バージョン、ステータス、トークンの内訳などの詳細情報が表示される。またモデルの検索とフィルタリングに、プロバイダー(@provider:"OpenAI"⁠⁠、機能(@capability:tools、@capability:vision、@capability:agent⁠⁠、可視性(@visible:true/false)といった属性を使用できる。

モデルピッカーに表示するかしないかを設定するモデルの可視性は、言語モデルエディター上で特定のモデルをマウスオーバーし、目のアイコンを選択して切り替える。言語モデルエディターでは「モデルの追加...」からモデルを追加できる。ドロップダウンリストに、インストールされているすべてのモデルプロバイダーが表示されるので、プロバイダーを選択して、そのモデルを追加できる。またプロバイダー行の歯車アイコンを選択すると、プロバイダー管理にアクセスできる。

フェッチツールのURL自動承認のセキュリティが強化された。ユーザーが明示的に示さなかったURLからコンテンツを取得することをモデルが決定した場合、新しい2段階承認フローが行われる。最初に、URL取得の最初のリクエストを承認する(特定ドメインへのリクエストは、1回限りの承認と、それ以降は自動的に承認するかを選択できる⁠⁠。次に、取得したコンテンツをチャットや他のツールの呼び出しで使用することを承認する。この手順により、取得したコンテンツがチャットに追加される前と、他のツールに渡される前に確認が行われ、プロンプトインジェクション攻撃の可能性を防止できるという。

たとえば、GitHub.comのようなよく知られたサイトからコンテンツを取得するリクエストを承認したとして、問題の説明やコメントなどのコンテンツはユーザーが生成したものなので、モデルの動作を操作する可能性のある有害なコンテンツが含まれている可能性があると指摘している。

ツールにも改善が加えられた。

  • #fetchツールでは、JavaScriptを使って表示される動的なWebコンテンツをより効率的に処理できるようになり、不完全な結果や空の結果が返されることがなくなったとのこと。#fetchに続けてURLを指定することで、ブラウザに表示される実際のコンテンツにアクセスできるようになる。

  • #textSearchツールは、files.exclude設定やsearch.exclude設定、.gitignoreファイルで指定された無視対象のファイル/フォルダ内の検索をサポートするようになった。通常の検索で見つからない場合、無視対象のファイル/フォルダに関するヒントをエージェントに返すという。

  • 特定のエージェントツールは、ユーザーの明示的な承認なしで使われると危険な場合がある。今回、設定のchat.tools.eligibleForAutoApprovalでfalseに設定されたツールには、常に確認が表示され、自動承認のオプションは提供されないようになる。

チャットビューにも改善が加えられている。

  • チャットセッションを開くと、上部にチャットの現状を表すタイトルが表示され、ここを選択すると空のチャットに素早く戻ることができる(この動作は設定のchat.viewTitle.enabledでオフにできる⁠⁠。VS Codeを再起動するか別のワークスペースを開いた後にチャットを開くと、デフォルトで以前のセッションを表示するようになった(この動作は設定のchat.restoreLastPanelSessionで変更でき、常に空のチャットを表示できる⁠⁠。

  • チャットコンテキストに変数・スコープ・式を入力できるようになった。変数ビューとウォッチビューでデータを右クリックするか、チャットの「コンテキストを追加」ボタンを使う。

  • エージェントが確認を求めてきた際に、Ctrl+Enterを押してキーボードから承認できるようになった。

  • チャットがsettings.jsonやpackage.jsonなどのセンシティブ(=特に扱いに注意が必要な)ファイルを編集しようとすると、変更を適用する前に承認を求めるようになった。センシティブファイルは、設定のchat.tools.edits.autoApproveで調整できる。また、これまではモデルが提案した編集内容の生データをチャット上で表示していたが、変更内容の差分が表示されるようになった。

  • 言語モデルの推論とエージェントツールの出力を使うと、チャットの会話がすぐに長くなるため、先月の更新で、チャットにおける思考トークンの表示方法を実験的に改善した(設定のchat.agent.thinkingStyle、chat.agent.thinking.collapsedToolsを有効にする用筆がある⁠⁠。さらに今回、連続したツール呼び出しはデフォルトで折りたたまれるようになった。折りたたまれた項目では、AIが生成したタイトルが表示されることになる。

  • ターミナルツールに新しい自動承認オプションを追加した。このオプションを使用すると、セッションで今後実行されるすべてのコマンドを許可できるようになった。新しいセッションを開始すると、ターミナルコマンドは既存の承認設定に従う。

  • 「ターミナルで実行」レスポンスで「Toggle Output」を使うと、チャット内で読み取り専用のxterm.jsターミナルに出力がレンダリングされるようになった。バックエンドのターミナルを終了させ後でもキャプチャされた出力を保持するため、あとで確認できる。

  • チャットターミナルのメッセージで、コマンドデコレーション(青い丸)にマウスオーバーすると、コマンドの開始時刻、実行時間、終了コードが表示されるようになった。

  • Azureモデルプロバイダーは、BYOK(Bring-Your-Own-Key)モデルへの接続時にデフォルトでEntra ID認証を使用するようになった。なおAPIキーを使用して認証する場合は、github.copilot.chat.azureAuthTypeをentraId(デフォルト)ではなくapiKeyに設定する。

MCPの仕様の最新バージョン2025-11-25に対応した。これまでドラフト時点で、WWW認証スコープの同意、クライアントIDメタデータドキュメント認証フロー、ツール・リソース・サーバーのアイコン設定に対応していたが、今回、MCPクライアントを経由しないやり取りのためのURLモードによる取得リクエスト、長時間実行するためのツール呼び出しとクライアント処理用のTasks、抽出(elicitation)における列挙型(Enum)への対応などが行われた。

GitHubリモートMCPサーバーが、GitHub Copilot Chat拡張機能にも組み込まれた。VS Codeではこの拡張機能のほうのGitHubリモートMCPサーバーに実験的に対応した(設定のgithub.copilot.chat.githubMcpServer.enabledを有効にする⁠⁠。この統合によって、すでにGitHub MCPサーバーを使っているCopilot CLIやCopilot Cloud Agentなどの他のCopilotエージェントハーネスとの連携、既存のGitHub認証状態を再利用することで追加の認証プロンプトが不要になること、GHE.comを含むさまざまなGitHub MCPエンドポイントを透過的にサポートできるようになる。カスタマイズも可能で、追加のツールセットを設定できるgithub.copilot.chat.githubMcpServer.toolsets、書き込み操作ツールを無効にするgithub.copilot.chat.githubMcpServer.readonly、追加のセキュリティ制御を設定するgithub.copilot.chat.githubMcpServer.lockdownといった設定を利用できる。なおこのGitHub MCPサーバーは現在実験的機能で手動で有効にする必要があるが、将来のリリースでは、必要なときに利用できるようにしたうえでデフォルトで有効化する予定とのこと。

VS Code全体でも改善が行われている。

  • コマンドパレットで「最近開いた項目を開く」を選択したときに表示されるピッカーで、現在アクティブなウィンドウは、他の開いているウィンドウとは少し異なる表示になった(チェックマークが付く⁠⁠。どのウィンドウにも開かれていない項目はアイコンが表示されない。
  • エディター内で自動ホバーポップアップを無効にできるようになった。設定のeditor.hover.enabledにはon、off、onKeyboardModifierの3つの値がある。onとoffは名前のとおりで、onKeyboardModifierは特定のキーを押したときにのみホバー情報を表示する(デフォルトはAlt/Optionキー⁠⁠。その特定のキーの設定はeditor.multiCursorModifierで行え、ctrlCmdに設定することでCtrl/Cmdキーに変更もできる。

  • ターミナルサジェストが有効化され、シェルコマンドの入力時にインライン補完とコンテキストヒントが表示されるようになった。

  • ソース管理リポジトリビューに表示されるリポジトリ内の項目にスタッシュ(Stashes)を追加した。ここでスタッシュ一覧が表示され、コンテキストメニューから表示・適用・ポップ・削除できる。スタッシュの表示は、実験的なシングルリポジトリエクスプローラーを有効にしたうえで(scm.repositories.selectionModeをtrueにするか、またはリポジトリエクスプローラーの設定で「単一のリポジトリの選択」を選ぶ⁠⁠、scm.repositories.explorerを有効にする必要がある。

コード編集の機能も改善されている。

  • TypeScriptの名前変更候補は、通常のテキスト候補ではなく、シンボルの名前を変更するタイミングを予測するようになった。予測された場合は、通常のテキスト編集に加えて追加のインジケーターが表示される。その後、Shift+Tabを押すことでシンボルの名前変更を適用できる。この機能は現在、試験的にユーザーベースに展開されており、現時点ではTypeScriptでのみ利用可能で、他のプログラミング言語への対応も計画されている。

  • よりスマートで、かつ最新の編集内容に適応する、次の編集候補の新しいモデルをリリースした。承認と却下のパフォーマンスが大幅に向上した。

  • 現在のビューポート外で次の編集候補が表示された場合、現在の位置からスクロールしないと候補の内容を把握するのが難しい場合があったため、カーソル位置の次の編集候補のプレビューが表示されるようになった。ただし現在のモデルは、まだビューポート外の候補が表示されない場合があり、より遠くの候補も表示できるように開発を系おzくしているという。

拡張機能についてもいくつか言及があった。

  • Go言語実装で高速化される、TypeScript 7プレビューはTypeScript (Native Preview)拡張機能を使うことでVS Code上で試せるようになっている。JavaScriptまたはTypeScriptファイルでTypeScript (Native Preview): Enable (Experimental)コマンドを実行すると、すべてのIntelliSenseがネイティブプレビューを使うように切り替わる。

  • Remote Development(リモート開発)拡張機能を使うと、SSH経由のリモートマシンやリモートTunnels、WSLを通して開発コンテナに接続できるようになる。今回、SSH再接続の猶予時間制御の機能が追加されたことが案内されている。

  • GitHub Pull Requests拡張機能を使用すると、プルリクエストとIssueを操作できるが、今回、それらをコンテキストとして明示的に扱えるようになったり、Copilotプルリクエストがボタン1つで「review」⁠approved」⁠auto-merge」の状態にマークできるようになったという。

そのほか、VS Codeのウェブサイトで、RustとWebAssemblyを利用したクライアントサイドの高速検索機能が導入されている(Ctrl+Shift+Pを押して検索できる⁠⁠。この機能の基盤となるライブラリをdocfindという名前でオープンソースとして提供したことを報告している。

おすすめ記事

記事・ニュース一覧