Microsoft Entra documentation update: chat: persist installed plugin identity でまず押さえるべき結論は、Microsoft Entra IDの認証方式や条件付きアクセスが直接変わる更新ではなく、VS Code/GitHub Copilot系のチャットプラグインを再読み込み後も正しく復元するための実装変更だという点です。
ただし、Microsoft Entraで認証する社内プラグイン、AzureやMicrosoft Graphにアクセスする開発者向けプラグイン、プラグイン配布を自動化している管理スクリプトには影響が出る可能性があります。管理者は「Entra側の権限・同意」と「クライアント側のinstalled.jsonを読む運用」の両方を確認するのが安全です。
Microsoft Entra documentation updateで確認すべき変更点
今回の「chat: persist installed plugin identity」は、2026年5月21日公開・更新情報として扱われる内容で、元の公式PRは2026年5月20日に microsoft/vscode の main ブランチへマージされています。PRでは、マーケットプレイス経由でインストールされたチャットプラグインが、VS Codeの再読み込みや再起動後も復元できるように、インストール済みプラグインの識別情報を保持する変更が説明されています。(GitHub)
重要なのは、保存する情報を増やしすぎない設計です。今回の変更では、installed.json にプラグインURIとマーケットプレイス情報だけでなく、プラグイン名も保存されます。一方で、説明文やソース記述子などの完全なプラグインメタデータは保存せず、必要時にマーケットプレイスデータを再読込して復元する方式です。(GitHub)
| 観点 | 変更内容 | 管理者・開発者が見るべきポイント |
|---|---|---|
installed.json | pluginUri、marketplace に加えて name を保持 | 外部ツールや棚卸しスクリプトが固定スキーマ前提になっていないか確認 |
| 復元処理 | 現行エントリはプラグイン名で照合し、古いエントリはインストールURIでフォールバック | プラグイン名の変更、重複、マーケットプレイス定義変更に注意 |
| メタデータ | 完全なソース記述子は永続化せず、マーケットプレイスから再取得 | installed.json を唯一の真実として扱う設計は避ける |
| GitHub由来プラグイン | awesome-copilot の azure のようなGitHubソースのマーケットプレイスプラグインもテスト対象 | 社内GitHubリポジトリ配布のプラグインでも再起動テストが必要 |
| インストールURI | package/git/相対パスの扱いを整理 | ローカルパス、Gitリポジトリ、マーケットプレイス配布を混在させる環境では検証が必要 |
Microsoft Entraへの影響は「認証基盤」ではなく「連携プラグイン運用」に出る
この更新をMicrosoft Entraのセキュリティ更新として見る場合、誤解しやすい点があります。今回の変更は、Microsoft Entra IDの条件付きアクセス、MFA、トークン発行、アプリ登録そのものを変更するものではありません。影響が出るのは、Microsoft Entraで保護されたAPIへアクセスするチャットプラグインを、VS CodeやCopilotのプラグイン機構で利用しているケースです。
たとえば、次のような環境では確認が必要です。
| 環境 | 影響の可能性 | 確認すべき内容 |
|---|---|---|
| Azure操作やMicrosoft Graph呼び出しを行うチャットプラグインを使っている | 高 | プラグイン復元後も同じアプリ登録・権限で動作するか |
installed.json を読んでプラグイン一覧を棚卸ししている | 高 | name 追加後もJSONパースや比較処理が壊れないか |
| 社内マーケットプレイスやGitHubリポジトリからプラグインを配布している | 中〜高 | プラグイン名、マーケットプレイス参照、URIの一貫性 |
| 一般的なMicrosoft Entra管理だけをしている | 低 | 直接のテナント設定変更は基本的に不要 |
| 条件付きアクセスやMFAポリシーのみを運用している | 低 | この更新単体でポリシー変更は不要 |
実務上は、「Entra側の設定が変わった」と考えるより、Entraで認証する開発者ツールやAIプラグインの識別・復元方法が変わると捉える方が正確です。
管理者が最初に確認すべき設定
エンタープライズアプリの権限と同意を棚卸しする
Microsoft Entraで最も優先すべき確認は、プラグインや関連アプリに過剰な権限が付与されていないかです。Microsoft Learnでは、エンタープライズアプリに付与済みの権限を確認し、必要に応じて管理者同意を取り消せる手順が案内されています。対象は、ユーザー同意または管理者同意によってテナントに追加されたアプリです。(Microsoft Learn)
確認手順の目安は次の通りです。
| 手順 | 操作 | 判断基準 |
|---|---|---|
| 1 | Microsoft Entra管理センターで「エンタープライズ アプリケーション」を開く | プラグイン、Copilot連携、Azure開発支援ツールに関連するアプリを抽出 |
| 2 | 対象アプリの「アクセス許可」を確認 | Microsoft GraphやAzure Resource Managerへの権限が必要最小限か確認 |
| 3 | Admin consent / User consent を分けて確認 | 全社同意が必要な理由を説明できない権限は見直し対象 |
| 4 | 不要な権限を取り消す | 業務影響があるため、先にテストユーザーで検証 |
| 5 | アプリ所有者と利用部門を記録 | 今後の更新時に問い合わせ先が不明になる状態を避ける |
特に、テナント全体の管理者同意は慎重に扱う必要があります。Microsoftは、テナント全体の管理者同意によって、アプリ発行元が組織データの大きな範囲へアクセスしたり、高権限操作を行えたりする可能性があるため、要求権限を慎重に確認するよう説明しています。(Microsoft Learn)
管理者同意ワークフローを使う
開発者が新しいチャットプラグインやAI連携ツールを試す組織では、ユーザーが自由に同意できる状態にしておくと、知らないうちに外部アプリがテナントへ追加されることがあります。
Microsoft Entraには、ユーザーが同意できないアプリについて管理者承認を依頼できる「管理者同意ワークフロー」があります。レビュワーがリクエストを確認し、承認・拒否できるため、開発スピードとガバナンスを両立しやすくなります。(Microsoft Learn)
運用では、次のように分けると判断しやすくなります。
| アプリの種類 | 推奨対応 |
|---|---|
| 社内開発プラグイン | 管理者同意ワークフローで申請、アプリ所有者を必ず設定 |
| 検証用プラグイン | テストテナントまたは限定グループで先行検証 |
| Microsoft Graphの高権限を要求するアプリ | セキュリティ担当者またはID管理者のレビュー必須 |
| 読み取り専用の低リスクアプリ | 権限分類や同意ポリシーに沿って承認 |
| 発行元や用途が不明なアプリ | 原則として承認しない |
アプリ登録のセキュリティ項目を見直す
Microsoft Entraアプリ登録は、設定ミスによって停止や侵害につながる可能性があります。Microsoft Learnでも、アプリ登録のセキュリティでは資格情報、リダイレクトURI、暗黙的フロー、アプリ所有者などを定期的に確認する重要性が説明されています。(Microsoft Learn)
プラグイン連携で特に見るべき項目は次の通りです。
| 項目 | 確認内容 | よくある失敗 |
|---|---|---|
| APIアクセス許可 | 必要なスコープだけに絞られているか | 開発時の広い権限を本番にも残す |
| 管理者同意 | 誰が、何のために同意したか記録があるか | 退職者や不明な管理者の同意が残る |
| リダイレクトURI | 実際のクライアント方式と一致しているか | 使っていないURIを放置する |
| クライアントシークレット | 期限、保管場所、ローテーション手順があるか | 長期シークレットを共有フォルダやコードに置く |
| 証明書 | 有効期限監視があるか | 期限切れ当日に障害化する |
| 所有者 | 複数名・運用チームが設定されているか | 個人1名だけが所有者になっている |
チャットプラグインは利用者から見ると「VS Codeの機能」に見えますが、裏側ではMicrosoft Entraのアプリ登録やサービスプリンシパルとして扱われる場合があります。Microsoft Entraでは、ワークロードIDはアプリケーション、サービスプリンシパル、マネージドIDを含む概念であり、サービスプリンシパルは特定テナント内でアプリが実際に何をできるかを表します。(Microsoft Learn)
開発者が確認すべき実装上の注意点
installed.json を固定スキーマで読まない
今回の変更で、installed.json にはオプションの name が追加されます。PRの実装では、pluginUri と marketplace に加え、name を読み書きする形に変更されています。古いエントリでは name が存在しない可能性があるため、外部ツールは「ある前提」でも「ない前提」でもなく、両方に耐える必要があります。(GitHub)
簡略化すると、今後は次のような形を想定しておくと安全です。
{
"version": 1,
"installed": [
{
"pluginUri": "file:///path/to/plugin",
"marketplace": "awesome-copilot",
"name": "azure"
}
]
}
外部ツールで避けたい実装は次の通りです。
| 避けたい実装 | 理由 | 推奨対応 |
|---|---|---|
installed の各要素が2項目だけだと仮定する | name 追加で比較・検証に失敗する | 未知のプロパティを許容する |
name が必ず存在すると仮定する | 旧形式のエントリでは存在しない場合がある | name がない場合はURIベースで扱う |
installed.json に完全なメタデータがある前提で処理する | 完全な記述子は保存されない設計 | マーケットプレイス定義やプラグインマニフェストを参照する |
| ファイル差分だけでプラグインの安全性を判断する | 権限や認証はEntra側にも存在する | Entraのアプリ権限・同意とセットで確認する |
プラグイン名の変更は移行扱いにする
今回の復元ロジックでは、現行エントリは保存されたプラグイン名でマーケットプレイスデータと照合し、古いエントリではインストールURIでフォールバックします。(GitHub)
そのため、プラグイン開発者は name を単なる表示名のように軽く扱わない方が安全です。名前を変更すると、再読み込み後に別物として扱われたり、復元できなかったりする可能性があります。
名前を変更する必要がある場合は、少なくとも次を確認してください。
| 確認項目 | 内容 |
|---|---|
| 既存ユーザーの復元 | 旧 installed.json を使った再起動テストを行う |
| マーケットプレイス定義 | 旧名と新名の扱いを明確にする |
| ドキュメント | 再インストールが必要か、移行可能かを明記する |
| 自動展開スクリプト | 旧名で検索・削除・更新していないか確認 |
| Entraアプリ登録 | プラグイン名変更とアプリ表示名変更を混同しない |
特に、社内マーケットプレイスで「azure」「security」「devops」のような一般的な名前を使っている場合、将来の重複リスクがあります。プラグイン名は、表示上の分かりやすさだけでなく、運用上の一意性も考えて決めるべきです。
再読み込み・再起動テストを必ず入れる
この変更の主目的は、マーケットプレイス経由のプラグインが再読み込み後も復元されることです。したがって、開発者のテストは「インストール直後に動くか」だけでは不十分です。
最低限、次のテストを入れると実運用に近づきます。
| テスト | 確認内容 |
|---|---|
| 新規インストール後の再読み込み | プラグインが一覧に残り、正しいメタデータで表示されるか |
| VS Code再起動後の復元 | installed.json から正しく復元されるか |
| 旧形式データの読み込み | name がないエントリでも壊れないか |
| GitHubソースのマーケットプレイス | GitHub参照からメタデータを再取得できるか |
| マーケットプレイス定義変更後 | name、source、repository 変更時の挙動 |
| オフライン・社内プロキシ環境 | メタデータ再取得が失敗した場合の表示やエラー |
| Entra認証後の利用 | 復元後もサインイン、同意、API呼び出しが期待通りか |
展開前に行うべき移行チェック
今回の更新で、Microsoft Entraテナント全体に対する一括移行作業が必ず必要になるわけではありません。むしろ、確認すべきなのは「どの端末・どのチームが、チャットプラグインとEntra認証を組み合わせて使っているか」です。
展開前のチェックは次の順序で進めると効率的です。
| フェーズ | 作業 | 完了条件 |
|---|---|---|
| 対象把握 | VS Code、Copilot、チャットプラグイン利用チームを洗い出す | 対象ユーザーとプラグイン一覧が分かる |
| ファイル確認 | installed.json を読む社内ツールやスクリプトを調べる | name 追加に耐えられる |
| Entra確認 | 関連アプリ登録、エンタープライズアプリ、同意済み権限を確認 | 不要・過剰な権限を整理済み |
| パイロット | 少人数で更新後の再起動・再ログイン・API実行を確認 | 主要業務が再現できる |
| ログ監視 | サインインログ、サービスプリンシパルの利用状況を確認 | 失敗増加や不審なアクセスがない |
| 段階展開 | 部門単位で展開 | 問い合わせ先とロールバック手順が共有済み |
Microsoft Entraのサインインログでは、ユーザー、利用アプリケーション、アクセス先リソースといった観点でサインイン活動を確認できます。また、サービスプリンシパルやマネージドIDのサインインも種類として扱われます。プラグイン更新後に認証エラーが増えた場合は、まず対象アプリでフィルターして失敗パターンを確認しましょう。(Microsoft Learn)
セキュリティ面で注意すべきポイント
installed.json に秘密情報を置かない
今回のPRは、installed.json を外部ツールから読みやすく保ちながら、必要最小限の識別情報を永続化する設計です。保存されるのはプラグインURI、マーケットプレイス、プラグイン名であり、完全なソース記述子は保存しない方針です。(GitHub)
そのため、開発者が独自に installed.json へアクセストークン、クライアントシークレット、個人用アクセストークン、社内APIキーを書き込む運用は避けてください。ファイル自体は認証情報の保管場所ではありません。
ただし、秘密情報が入らないからといって無制限に共有してよいわけでもありません。pluginUri や marketplace から、社内リポジトリ名、ローカルパス、利用中の開発ツール構成が分かる場合があります。サポート依頼やログ収集で共有する際は、パスやリポジトリ名の扱いを確認してください。
プラグインIDとEntraアプリIDを混同しない
今回永続化されるプラグイン名は、VS Code側でマーケットプレイスプラグインを識別・復元するための情報です。一方、Microsoft Entraで認証や認可に使うのは、アプリケーションID、サービスプリンシパル、スコープ、アプリロールなどです。
混同すると、次のような事故につながります。
| 誤解 | 起こり得る問題 | 正しい見方 |
|---|---|---|
| プラグイン名が同じならEntra権限も同じ | 別アプリ登録に接続している可能性を見落とす | EntraアプリIDで確認する |
installed.json にあるから承認済み | テナント同意の有無を確認しない | Enterprise appsの権限を見る |
| 再起動後に復元されたから安全 | 不要なGraph権限が残っている可能性 | 同意済み権限を棚卸しする |
| プラグイン削除でEntra権限も消える | エンタープライズアプリや同意が残る | Entra側で権限を取り消す |
よくあるトラブルと切り分け
更新後にプラグインが消えたように見える
まず、installed.json に対象プラグインの pluginUri、marketplace、name があるか確認します。name がない古いエントリでもフォールバック処理は考慮されていますが、マーケットプレイス定義が変わっている、GitHubリポジトリにアクセスできない、プロキシで取得に失敗している場合は復元できない可能性があります。
確認順は次の通りです。
installed.jsonが壊れたJSONになっていないか確認する- 対象エントリに
marketplaceがあるか確認する nameがある場合、マーケットプレイス側のプラグイン名と一致するか確認する- 社内プロキシやGitHubアクセス制限でメタデータ取得が失敗していないか確認する
- プラグイン名を最近変更した場合は、旧名データからの復元テストを行う
認証プロンプトが増えた
この更新自体はMicrosoft Entraのトークン発行仕様を変えるものではありません。認証プロンプトが増えた場合は、プラグイン復元ではなく、次を疑います。
| 原因候補 | 確認場所 |
|---|---|
| アプリ登録のリダイレクトURI変更 | App registrations |
| APIアクセス許可やスコープ変更 | API permissions |
| 管理者同意の取り消し・未実施 | Enterprise applications > Permissions |
| 条件付きアクセス変更 | Conditional Access |
| クライアントシークレットや証明書の期限切れ | Certificates & secrets |
| サインイン失敗 | Sign-in logs |
棚卸しスクリプトが失敗する
installed.json を処理するスクリプトが失敗する場合、最も多い原因はスキーマの固定化です。たとえば、JSONの各エントリを完全一致で比較していたり、未知のプロパティがあるとバリデーションエラーにしていたりすると、name 追加で壊れます。
修正方針は単純です。必要なプロパティだけを読む、未知のプロパティを無視する、name は任意として扱う。この3点を満たせば、今回の変更だけでなく今後の拡張にも強くなります。
管理者・開発者向けチェックリスト
公開・展開前に、次の項目を確認してください。
| チェック項目 | 管理者 | 開発者 |
|---|---|---|
| 関連するEntraアプリ登録を把握している | ○ | ○ |
| エンタープライズアプリの同意済み権限を確認した | ○ | |
| テナント全体の管理者同意が必要最小限である | ○ | |
| 管理者同意ワークフローまたは申請ルールがある | ○ | |
installed.json の name 追加にツールが対応している | ○ | |
旧形式の installed.json で再起動テストをした | ○ | |
| プラグイン名変更時の移行方針がある | ○ | |
| トークンやシークレットをローカル管理ファイルに保存していない | ○ | ○ |
| 更新後のサインインログを確認できる | ○ | |
| 問い合わせ先とロールバック方法を共有している | ○ | ○ |
まず取るべき行動
このMicrosoft Entra documentation updateを受けて、最初に行うべきことは大きく3つです。
まず、VS CodeやCopilotのチャットプラグインを業務で使っているチームを洗い出します。次に、installed.json を読む社内ツール、端末管理スクリプト、プラグイン棚卸し処理が name 追加に耐えられるか確認します。最後に、Microsoft Entra側で関連アプリの権限、管理者同意、サインインログを見直します。
今回の変更は、単体ではMicrosoft Entraの認証ポリシーを変えるものではありません。しかし、AIプラグインや開発者ツールがEntra認証と結び付く環境では、クライアント側の「プラグイン識別」とEntra側の「アプリ権限」を分けて管理することが、今後の安全な運用につながります。

コメント