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 Planner | API変更、設定変更、段階的移行計画の作成 |
セッション履歴を後から追う場合、「どのモデルを使ったか」だけでは不十分です。どのカスタムエージェント、どのツール権限、どのプロンプト方針で実行されたかが分かると、監査や再現性の面でも扱いやすくなります。
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 | 一意で短く、役割が分かる名前にする | agent1 | security-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 Agent | edit権限を与え、変更範囲を小さくする指示を入れる |
| セキュリティレビュー | 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追加として見ず、セッション管理・権限設計・監査性まで含めて対応方針を決めることが重要です。

コメント