Microsoft developer platform更新解説:Agent Host Sessionsのカスタムエージェント選択で確認すべき変更点

Microsoft developer platformの2026年5月5日付け更新「feat: Add custom agent selection functionality to agent host sessions」は、Agent Host Sessionsでカスタムエージェントを明示的に選択・切り替えできるようにするための変更です。新しいAgentSelection型、changeAgentメソッド、セッションメタデータへのエージェント情報保存、チャット上のエージェント選択UIが主なポイントです。特に、VS CodeやGitHub Copilot系のエージェント機能を拡張している開発者、セッションプロバイダーを実装しているチーム、.agent.mdでカスタムエージェントを運用している組織は、早めに影響範囲を確認しておくべき更新です。(GitHub)

目次

Microsoft developer platformの更新で何が変わったか

今回のMicrosoft developer platform documentation updateは、単に「エージェントを増やせる」という話ではありません。重要なのは、セッション単位でどのカスタムエージェントを使うかを保持し、開始後のセッションでも切り替えられるようにする設計変更です。PRでは、AgentSelection型の追加、CopilotAgentへのchangeAgentメソッド実装、CopilotAgentSessionでのカスタムエージェント設定・解除、セッションメタデータへのエージェント情報保存、AgentHostAgentPickerによるUI追加が示されています。(GitHub)

これまでの運用では、モデル選択やセッション作成時の設定は比較的分かりやすい一方で、「このセッションではセキュリティレビュー用エージェントを使う」「実装フェーズに入ったら編集権限を持つエージェントに切り替える」といった流れを、セッション状態として一貫して扱いにくい場面がありました。今回の変更は、そのギャップを埋めるものです。

変更点の要点

変更点内容実務上の意味
AgentSelection型の追加選択中のカスタムエージェントを表す型を追加セッション状態に「どのエージェントを使っているか」を明示的に持てる
changeAgentメソッドの追加既存セッションのアクティブなカスタムエージェントを変更・解除セッション開始後のエージェント切り替えに対応しやすくなる
SessionAgentChangedアクションの追加エージェント変更を状態管理・dispatch対象に追加UI、プロバイダー、バックエンド側で変更イベントを追跡できる
セッションメタデータの拡張agent情報をセッションサマリーやメタデータに保存再表示・復元・履歴管理で選択済みエージェントを扱える
AgentHostAgentPickerの追加チャットセッション上でエージェントを選ぶUIを追加新規セッション・実行中セッションで選択操作がしやすくなる
provider APIの拡張setAgentなど、セッションプロバイダー側の対応を追加独自プロバイダー実装者は互換性確認が必要

PRの差分では、agentService.ts、state.ts、actions.ts、reducers.ts、sessionsProvider.ts、baseAgentHostSessionsProvider.ts、copilotAgent.ts、copilotAgentSession.ts、agentHostAgentPicker.tsなど、状態管理・プロトコル・UI・Copilot連携の複数レイヤーに変更が入っています。(GitHub)

対応が必要な人

今回の変更は、すべての一般ユーザーがすぐに移行作業をする種類の更新ではありません。優先して確認すべきなのは、Agent Host SessionsやCopilot系セッションを拡張・統合している開発者です。

対象者対応優先度確認すべきこと
VS Code拡張機能やエージェントセッションプロバイダーの開発者高agent、agentId、setAgent、changeAgentへの対応有無
Copilot SDKや独自UIでカスタムエージェントを扱う開発者高セッション作成時のエージェント指定と、実行中の変更処理
.agent.mdをチームで管理している開発チーム中エージェント名、説明、ツール権限、ファイル配置の整理
社内のAI開発基盤・開発者ポータル担当者中どのエージェントが選択されたかをログ・監査・UIで扱えるか
VS Code/Copilotの一般利用者低〜中利用中のInsiders版や更新後ビルドでUI表示・挙動を確認

VS Codeのカスタムエージェントは、特定の役割・ツール・指示を持つAIのペルソナとして作成でき、.agent.mdファイルとしてワークスペースやユーザープロファイルに保存できます。公式ドキュメントでも、計画用エージェント、実装用エージェント、レビュー用エージェントのように役割を分ける使い方が説明されています。(Visual Studio Code)

AgentSelectionは何を解決するのか

今回の中心はAgentSelectionです。PR上では、AgentSelectionはカスタムエージェントのソースである.agent.mdファイルのURIを保持する設計として説明されています。これは、同じnameを持つエージェントが複数のプラグインや場所から提供される場合でも、URIを使えば選択対象を一意に扱いやすいためです。(GitHub)

実務では、エージェント名だけに依存すると次のような問題が起きやすくなります。

よくある問題例AgentSelectionで改善できる点
名前の衝突複数リポジトリにreviewer.agent.mdがあるURIでどのファイル由来か識別できる
表示名変更による不整合Security ReviewerをAppSec Reviewerに変更内部IDとしてURIを使えば表示名変更の影響を抑えやすい
セッション復元時の曖昧さ以前のセッションがどのエージェントで動いていたか分からないメタデータに選択情報を保存できる
バックエンド連携の変換Copilot SDK側は名前で扱うが、VS Code側はURIで管理provider境界でURIから名前へ変換できる

ここで注意したいのは、公開されているCopilot SDKドキュメントでは、セッション作成時にagentとしてカスタムエージェント名を指定する説明がある点です。一方、今回のVS Code側のプロトコルでは、選択をURIベースで扱い、Copilot provider側でSDKが扱う名前へ変換する設計が示されています。(GitHub Docs)

changeAgentで既存セッションの切り替えが扱いやすくなる

changeAgentは、既存セッションでアクティブなカスタムエージェントを変更するためのメソッドです。PRでは、agentに値を渡すと選択、undefinedを渡すと選択解除として扱う形が示されています。また、カスタムエージェントという概念を持たないproviderはこのメソッドを省略でき、side-effect dispatcher側ではno-opとして扱える設計になっています。(GitHub)

これは拡張機能やプロバイダー実装者にとって重要です。すべてのエージェント実装が同じ機能を持つとは限らないため、changeAgentを必須にしてしまうと互換性の問題が出ます。任意実装にしていることで、対応済みproviderでは切り替えを有効化し、未対応providerでは壊さずに無視できる構造になります。

実装確認では、次の観点を見てください。

確認項目見るべきポイント
changeAgentの有無providerがカスタムエージェント切り替えに対応しているか
解除処理undefined指定時に前回の選択が残らないか
エラー処理agent変更失敗時にセッション全体が停止しないか
UI反映選択後、チャット入力欄やセッション一覧に正しいエージェントが表示されるか
永続化セッション復元後に選択エージェントが再現されるか

セッションメタデータと状態管理の変更

今回の更新では、セッションサマリーやメタデータにagent情報が追加されています。SessionAgentChangedアクションが追加され、reducerでは選択中のエージェントをsummary.agentに反映し、modifiedAtも更新する流れが示されています。(GitHub)

この変更により、UIやセッション一覧で「どのエージェントを使っているセッションか」を表示しやすくなります。たとえば、同じリポジトリで次のような複数セッションを並行して走らせる場合、エージェント選択の可視化は実務上かなり重要です。

セッション選択エージェント目的
調査セッションResearch Agent既存コードの構造調査、影響範囲の確認
実装セッションImplementer Agent小さな修正、テスト追加、リファクタリング
レビューセッションSecurity Reviewer権限、入力検証、依存関係の確認
移行セッションMigration PlannerAPI変更、設定変更、段階的移行計画の作成

セッション履歴を後から追う場合、「どのモデルを使ったか」だけでは不十分です。どのカスタムエージェント、どのツール権限、どのプロンプト方針で実行されたかが分かると、監査や再現性の面でも扱いやすくなります。

UI面では新規セッションと実行中セッションの両方を確認する

PRでは、AgentHostAgentPickerが追加され、チャットセッションでカスタムエージェントを選択するUIが導入されています。Copilotのレビュー要約では、新規セッションと実行中セッションのチャットサーフェスにエージェントピッカーを追加する変更として整理されています。(GitHub)

VS Code Agentsアプリケーションの公式ドキュメントでも、新規エージェントセッション開始時にカスタムエージェントとモデルを選択でき、セッション中に変更できる旨が説明されています。利用環境によって表示や提供時期は変わる可能性があるため、実際の確認は利用中のVS CodeまたはVS Code Insidersのビルドで行うのが安全です。(Visual Studio Code)

確認すべきUIは、主に次の2つです。

場面確認内容
新規セッション作成時エージェント選択欄が表示されるか、選択したエージェントでセッションが開始されるか
実行中セッション途中で別のエージェントに切り替えられるか、切り替え後の表示・実行権限が正しいか

なお、PR上のレビューでは、モバイル表示やアクセシビリティヘルプに関する懸念も指摘されています。UIを独自に拡張している場合は、デスクトップで動くだけでなく、キーボード操作、スクリーンリーダー向け説明、狭い画面での表示崩れも確認してください。(GitHub)

カスタムエージェント運用で見直すべき設定

今回の変更を受けて、.agent.mdを使っているチームはエージェント定義そのものも見直す価値があります。VS Codeの公式ドキュメントでは、カスタムエージェントは.agent.mdファイルで定義され、ワークスペースの.github/agents、Claude形式の.claude/agents、ユーザープロファイルの~/.copilot/agentsなどに配置できると説明されています。(Visual Studio Code)

特に見直したいのは、descriptionとtoolsです。Copilot SDKのドキュメントでは、カスタムエージェントにnameとpromptが最低限必要で、descriptionはランタイムがユーザー意図に合うエージェントを選ぶ助けになると説明されています。(GitHub Docs)

設定項目見直しポイント悪い例良い例
name一意で短く、役割が分かる名前にするagent1security-reviewer
description何に強いエージェントか具体化するコードを助けます認証・認可・入力検証の観点でTypeScriptコードをレビューする
tools必要なツールだけ許可するすべてのツールを無条件に許可調査用はread/search系、実装用はedit系を追加
prompt判断基準や禁止事項を明記するレビューして重大度、再現手順、修正案を分けて出力する
配置場所チーム共有か個人利用かを分ける個人用をリポジトリに混在チーム標準は.github/agents、個人用はプロファイル

セキュリティ面では、エージェントごとに利用できるツールを絞ることが重要です。公式ドキュメントでも、カスタムエージェントはツールを制限できるため、セキュリティに敏感なワークフローでは読み取り専用ツールのエージェントを作ることが推奨されています。(Visual Studio Code)

移行・設定確認のチェックリスト

今回の更新に対応する際は、いきなりコードを直すよりも、まず「どのレイヤーでエージェント選択を扱っているか」を棚卸ししてください。

チェック項目対応の目安
セッション作成パラメータにagentを受け取れるか新規セッションで選択済みエージェントを渡せるようにする
既存セッションのエージェント変更を扱えるかchangeAgentまたは同等の処理を実装する
エージェント解除を扱えるかundefinedや空選択時に古い値が残らないようにする
セッションメタデータに保存しているか再読み込み後も選択状態が復元されるか確認する
provider未対応時の挙動が安全か未対応providerではエラーにせずno-opにする
エージェントIDの扱いが一貫しているか表示名ではなくURIや内部IDを基準にする
UIに選択状態が反映されるか新規セッション、実行中セッション、セッション一覧で確認する
権限設計が適切かread-only、edit可能、bash可能などを役割ごとに分ける
ログ・監査で追跡できるかどのセッションでどのエージェントが使われたか残す
旧セッションとの互換性があるかagent未設定の既存データで例外が出ないようにする

特に失敗しやすいのは、エージェントのnameをそのまま永続IDとして扱うケースです。今回のPRでは、AgentSelectionが.agent.mdソースURIを保持し、provider側でSDKの名前表現へ変換する考え方が示されています。複数の場所から同名エージェントが読み込まれる可能性がある環境では、表示名やファイル名だけで判定しないほうが安全です。(GitHub)

実務での活用シーン

この機能が活きるのは、単発のチャットではなく、複数の役割を切り替えながら開発を進める場面です。

たとえば、バグ修正の流れでは、最初に「調査エージェント」でログ、関連コード、既存テストを読み取らせます。次に「実装エージェント」へ切り替えて最小限の修正を行い、最後に「レビューエージェント」でセキュリティや回帰リスクを確認します。このとき、セッション内でエージェント選択が明示的に管理されていれば、どの段階でどの権限を持つエージェントが動いたかを追跡しやすくなります。

活用シーン推奨エージェント構成ポイント
仕様調査Research Agent読み取り専用ツールに限定し、誤編集を防ぐ
小規模修正Implementer Agentedit権限を与え、変更範囲を小さくする指示を入れる
セキュリティレビューSecurity Reviewer認証、認可、入力検証、秘密情報の観点を明記する
移行計画Migration Planner影響範囲、手順、ロールバック条件を出力させる
PRレビューCode Reviewer指摘、根拠、修正例を分けて出力させる

Copilot SDKのドキュメントでも、読み取り専用のresearcherと編集可能なeditorを分けるような設計例が示されています。ツールを明示的に絞ることで、エージェントの役割を明確にし、不要な操作権限を与えない運用にできます。(GitHub Docs)

導入時の注意点

今回の変更は便利ですが、エージェントを増やせば開発が自動的に良くなるわけではありません。むしろ、役割が曖昧なエージェントを多数作ると、選択ミスや運用の混乱が起きます。

注意すべきポイントは次の通りです。

注意点具体的な対策
エージェント名が似すぎるreviewerではなくsecurity-reviewer、accessibility-reviewerのように役割を分ける
descriptionが曖昧対象技術、判断観点、できること・できないことを書く
ツール権限が広すぎる調査用と実装用を分け、読み取り専用エージェントを用意する
切り替え履歴が残らないセッションメタデータやログに選択エージェントを記録する
既存セッションでエラーが出るagent未設定を正常系として扱う
UIだけ対応してproviderが未対応setAgentやchangeAgentの実装状況を確認する
SDKとVS Code側のID表現を混同するUI・プロトコル・SDK境界でID変換方針を決める

また、PRは2026年5月5日に作成・クローズされた情報として確認できますが、利用している製品版・Insiders版・拡張機能のバージョンによって、実際に使えるUIやAPIの状態は異なる可能性があります。公開環境へ組み込む前に、対象バージョンのリリースノート、ドキュメント、実機での挙動確認を行ってください。(GitHub)

まず何をすべきか

開発チームが最初にやるべきことは、既存のエージェント運用を「役割」「権限」「セッション状態」の3つに分けて確認することです。

まず、.agent.mdの一覧を作り、各エージェントの目的とツール権限を整理します。次に、セッション作成時にエージェントを指定している箇所、セッション中に変更できるUIやAPI、履歴・メタデータ保存の有無を確認します。最後に、AgentSelectionのような内部IDを使って、表示名変更や同名エージェントに強い設計になっているかを見直してください。

今回のMicrosoft developer platform documentation updateは、カスタムエージェントを「作る」段階から、セッションの中で安全に選び、切り替え、記録する段階へ進めるための更新です。CopilotやVS Codeのエージェント機能を開発ワークフローに組み込んでいるなら、単なるUI追加として見ず、セッション管理・権限設計・監査性まで含めて対応方針を決めることが重要です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次