コンテンツにスキップ

2025 年 5 月 (バージョン 1.101)

リリース日: 2025 年 6 月 12 日


Visual Studio Code の 2025 年 5 月リリースへようこそ。このバージョンには多くの更新プログラムが含まれており、気に入っていただけることを願っています。主なハイライトは次のとおりです:

  • MCP
    • プロンプト、リソース、サンプリングのサポートにより、エージェントコーディングフローを拡張します (詳細)。
    • 認証が必要な MCP サーバーにアクセスします (詳細)。
    • 開発モードで MCP サーバーをデバッグします (詳細)。
    • 拡張機能から MCP サーバーを公開します (詳細)。
  • チャット
    • ツールセットにツールを組み合わせることで、関連ツールをグループ化して管理します (詳細)。
  • ソース管理
    • ソース管理グラフビューでファイルを表示します (詳細)。
    • VS Code 内から GitHub Copilot Coding Agent の作業を割り当てて追跡します (詳細)。

これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.comUpdates にアクセスしてください。 Insiders: 新機能をできるだけ早く試したいですか? 夜間の Insiders ビルドをダウンロードして、利用可能になり次第、最新の更新プログラムを試すことができます。

チャット

チャットツールセット

VS Code では、提案された API または UI を介してツールセットを定義できるようになりました。ツールセットは、個々のツールと同じように使用できるさまざまなツールのコレクションです。ツールセットを使用すると、関連するツールを簡単にグループ化し、エージェントモードですばやく有効または無効にすることができます。たとえば、以下のツールセットは GitHub 通知を管理するためのものです (GitHub MCP サーバー を使用)。

{
  "gh-news": {
    "tools": [
      "list_notifications",
      "dismiss_notification",
      "get_notification_details",
    ],
    "description": "GH 通知を管理",
    "icon": "github-project"
  }
}

ツールセットを作成するには、コマンドパレットから Configure Tool Sets > Create new tool sets file コマンドを実行します。次に、ツールセットに含めるツールを選択し、説明とアイコンを指定できます。

チャットクエリでツールセットを使用するには、#gh-news のように名前を #-メンションして参照します。チャット入力ボックスのツールピッカーから選択することもできます。

チャットビューのスクリーンショット。未読通知に関するクエリが表示されており、チャットインターフェイスとこのツールセットを定義する JSON 設定ファイルの両方で 'gh-news' ツールセットが強調表示されています。

ドキュメントで ツールセット の詳細をご覧ください。

プロンプトの MCP サポート

VS Code のモデルコンテキストプロトコルサポートにプロンプトサポートが含まれるようになりました。プロンプトは MCP サーバーによって定義でき、言語モデル用の再利用可能なスニペットやタスクを生成できます。プロンプトは、チャットでスラッシュ / コマンドとして /mcp.servername.promptname の形式でアクセスできます。プレーンテキストを入力したり、プロンプト変数にコマンド出力を含めたりすることができ、サーバーが提供する場合は補完もサポートします。

次の例は、AI を使用してプロンプトを生成し、Gistpad MCP サーバー を使用して保存し、それを使用して変更ログエントリを生成する方法を示しています:

リソースの MCP サポート

VS Code のモデルコンテキストプロトコルサポートにリソースサポートが含まれるようになりました。これにはリソーステンプレートのサポートも含まれます。いくつかの場所で利用できます:

  1. MCP ツール呼び出しから返されたリソースはモデルで利用でき、保存 ボタンを使用するか、リソースをエクスプローラービューにドラッグすることでチャットに保存できます。
  2. リソースは、チャットの コンテキストを追加... ボタンをクリックし、MCP リソース... を選択することでコンテキストとして添付できます。
  3. MCP: リソースの参照 コマンドを使用するか、MCP: サーバーの一覧表示 コマンドのエントリからサーバーを選択することで、サーバー間でリソースを参照および表示できます。

これは、Gistpad MCP サーバー からチャットにリソースを添付する例です:

サンプリングの MCP サポート (実験的)

VS Code のモデルコンテキストプロトコルサポートにサンプリングが含まれるようになりました。これにより、MCP サーバーはモデルにリクエストを返すことができます。MCP サーバーが初めてサンプリングリクエストを行う際に確認を求められ、MCP: サーバーの一覧表示 でサーバーを選択することで、MCP サーバーがアクセスできるモデルを設定したり、リクエストログを確認したりできます。

サンプリングサポートはまだ準備段階であり、今後のイテレーションで拡張および改善する予定です。

認証の MCP サポート

VS Code は認証が必要な MCP サーバーをサポートするようになり、そのサービスのユーザーアカウントに代わって動作する MCP サーバーと対話できるようになりました。

この機能は、クライアント向けの MCP 認証仕様を実装しており、次の両方をサポートしています:

  • 2025-3-26 仕様。MCP サーバーは認証サーバーとして動作します。
  • ドラフト仕様。MCP サーバーはリソースサーバーとして動作します (これは間もなく最終決定される予定です)。

MCP サーバーがドラフト仕様を実装し、GitHub または Entra を認証サーバーとして利用している場合、どのアカウントにどの MCP サーバーがアクセスできるかを管理できます:

アカウントメニューの「信頼できる MCP サーバーの管理」オプションのスクリーンショット。

「信頼できる MCP サーバーの管理」クイックピックのスクリーンショット。

また、そのサーバーがどのアカウントを使用するかを管理することもできます (前のクイックピックの歯車ボタン経由):

「アカウント設定」クイックピックのスクリーンショット。

動的クライアント登録に依存する他の MCP サーバーについては、認証状態を他のすべてと同じ場所に含めます。たとえば Linear の場合:

アカウントメニューに Linear が表示されているスクリーンショット。

そこからサインアウトすることもできます。これらについては、コード認証フローだけでなく、認証サーバーがサポートしていればデバイスコードフローもサポートします。

また、これらの動的クライアント登録をクリーンアップできる Authentication: Remove Dynamic Authentication Providers コマンドも導入しました。これにより、VS Code に発行されたクライアント ID と、この認証プロバイダーに関連付けられたすべてのデータが破棄されます。

MCP: サーバーの追加... コマンドを使用して MCP サーバーを追加できることを覚えておいてください。これは認証付きサーバーの同じエントリポイントです。

MCP 開発モード

サーバー設定に dev キーを追加することで、MCP サーバーの 開発モード を有効にできます。これは 2 つのプロパティを持つオブジェクトです:

  • watch: MCP サーバーを再起動するファイル変更を監視するファイル glob パターン。
  • debug: MCP サーバーでデバッガーを設定できます。現在、nodepython でそれぞれ起動された Node.js と Python サーバーのデバッグのみをサポートしています。

.vscode/mcp.json

{
  "servers": {
    "gistpad": {
      "command": "node",
      "args": ["build/index.js"],
+     "dev": {
+       "watch": "build/**/*.js",
+       "debug": { "type": "node" }
+     },

チャット UX の改善

私たちは、皆様からのフィードバックに基づいて VS Code のチャットユーザーエクスペリエンスを継続的に改善しています。そのようなフィードバックの 1 つは、チャットでユーザーメッセージと AI 応答を区別するのが難しいということでした。これに対処するために、ユーザーメッセージの外観をより明確にしました。

以前のリクエストの取り消しもより見やすくなりました。リクエストにカーソルを合わせ、X ボタンを選択してそのリクエストとそれに続くリクエストを取り消します。または、さらに速く、kb(workbench.action.chat.undoEdits) キーボードショートカットを使用してください!

最後に、チャット入力ボックスからの添付ファイルがよりナビゲートしやすくなりました。

ドキュメントで VS Code でのチャットの使用 の詳細をご覧ください。

編集をより効率的に適用する

ファイルを編集する際、VS Code は 2 つの異なるアプローチを取ることができます。ファイルを最初から最後まで書き換えるか、複数の小さな編集を行うかです。どちらのアプローチも異なり、たとえば前者は大きなファイルでは遅くなる可能性があり、中間状態はしばしば正常にコンパイルされません。そのため、UI は適応し、必要に応じて自動保存と波線を条件付きで無効にします。

また、保持元に戻す コマンドのキーバインドも調整しました。個々の変更の保持と元に戻す操作は、kb(chatEditor.action.acceptHunk)kb(chatEditor.action.undoHunk) で行われるようになりました。同様に、ファイル内のすべての変更を保持および元に戻すためのキーバインドも調整し、現在は kb(chatEditor.action.accept)kb(chatEditor.action.reject) になっています。これは調整のためだけでなく、一般的な編集コマンド ( 左側をすべて削除 など) との以前の競合も解消します。

暗黙的なコンテキスト

チャットで現在のファイルをコンテキストとして追加する方法を合理化し、簡素化しました。以前の「目玉トグル」は少し扱いにくいと感じる人が多くいました。現在、現在のファイルは提案されたコンテキストアイテムとして提供されます。アイテムを選択するだけで、チャットコンテキストに追加したり削除したりできます。プロンプト入力フィールドから、Shift+Tab, Enter を押すと、キーボードですばやくこれを行うことができます。

さらに、エージェントモードでは、現在のエディターに関するヒントが含まれます。これにはファイルの内容は含まれず、ファイル名とカーソル位置のみが含まれます。エージェントは、クエリに関連性があると考えた場合、独自のツールを使用してファイルの内容を読み取ることができます。

ドキュメントで チャットでのコンテキストの追加 の詳細をご覧ください。

タスク設定エラーの修正

タスクと問題マッチャーの設定は難しい場合があります。タスク設定にエラーがある場合に提供される Github Copilot で修正 アクションを使用して、迅速かつ効率的に対処してください。

カスタムチャットモード (プレビュー)

デフォルトでは、チャットビューは 3 つの組み込みチャットモード (Ask、Edit、Agent) をサポートしています。各チャットモードには、LLM がリクエストをどのように処理すべきかを説明する一連の基本命令と、そのために使用できるツールのリストが付属しています。

チャットビューで使用できる独自のカスタムチャットモードを定義できるようになりました。カスタムチャットモードを使用すると、チャットの動作を調整し、そのモードで使用できるツールを指定できます。これは、特殊なワークフローや LLM に特定の指示を提供したい場合に特に便利です。たとえば、新しい機能を計画するためのカスタムチャットモードを作成できます。このモードでは、コードベースへの読み取り専用アクセスのみが許可されます。

カスタムチャットモードを定義して使用するには、次の手順に従います:

  1. コマンドパレットから Chat: Configure Chat Modes コマンドを使用してカスタムモードを定義します。
  2. 作成された *.chatprompt.md ファイルで、カスタムチャットモードの指示と利用可能なツールを提供します。
  3. チャットビューで、チャットモードのドロップダウンリストからチャットモードを選択します。
  4. チャットプロンプトを送信し、

チャットビューで選択されたカスタムチャットモードのスクリーンショット。

次の例は、カスタムの「計画」チャットモードを示しています:

---
description: 新機能の実装計画または既存コードのリファクタリング計画を生成します。
tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages']
---
# 計画モードの指示
あなたは計画モードです。あなたのタスクは、新機能または既存コードのリファクタリングのための実装計画を生成することです。
コード編集は行わず、計画のみを生成してください。

計画は、次のセクションを含む実装計画を記述した Markdown ドキュメントで構成されます:

* 概要: 機能またはリファクタリングタスクの簡単な説明。
* 要件: 機能またはリファクタリングタスクの要件のリスト。
* 実装手順: 機能またはリファクタリングタスクを実装するための詳細な手順のリスト。
* テスト: 機能またはリファクタリングタスクを検証するために実装する必要があるテストのリスト。

: この機能は開発中ですが、ぜひお試しください! VS Code Insiders での最新の進捗状況をフォローし、動作しない点や不足している点をお知らせください。

タスク診断の認識

チャットエージェントがタスクを実行すると、問題マッチャーによって特定されたエラーや警告を認識するようになりました。この診断コンテキストにより、チャットエージェントは発生した問題に対してよりインテリジェントに応答できます。

ターミナルの cwd コンテキスト

エージェントモードでターミナルが開き、シェル統合がアクティブな場合、チャットエージェントは現在の作業ディレクトリ (cwd) を認識します。これにより、より正確でコンテキストを意識したコマンドサポートが可能になります。

フローティングウィンドウの改善

チャットセッションをフローティングウィンドウに移動すると、タイトルバーに 2 つの新しいアクションが利用可能になります:

  • チャットを元の VS Code ウィンドウにドッキングする
  • フローティングウィンドウで新しいチャットセッションを開始する。

フローティングウィンドウ内のチャットビューのスクリーンショット。タイトルバーのドッキングボタンと新しいチャットボタンが強調表示されています。

フェッチツールの確認

フェッチツールを使用すると、Web ページから情報を取得できます。潜在的なプロンプトインジェクションについて通知するために、確認に警告メッセージを追加しました。

プロンプトインジェクションに関する警告が表示されたフェッチツールのスクリーンショット。

より多くの組み込みツールをカスタマイズする

エージェントモードまたはカスタムモードですべての組み込みツールを有効または無効にできるようになりました。たとえば、editFiles を無効にしてエージェントモードがファイルを直接編集できないようにしたり、ターミナルコマンドを実行するための runCommands を無効にしたりできます。

エージェントモードで、ツールの設定 ボタンを選択してツールピッカーを開き、目的のツールセットを選択します。

ツールピッカーのスクリーンショット。「editFiles」ツールセットアイテムがクリアされている状態を示しています。

このメニューの一部のエントリは、複数のツールをグループ化するツールセットを表します。たとえば、モデルにはテキストファイルやノートブックを編集または作成するための複数のツールが提供され、これらはモデルファミリーによって異なる場合があり、editFiles はこれらすべてをグループ化します。

要素をチャットに送信 (実験的)

前回のマイルストーンでは、シンプルブラウザーを開き、埋め込みブラウザーからチャットに追加する Web 要素を選択できる 新しい実験的機能 を追加しました。

Live Preview 拡張機能を示すスクリーンショット。Web ページから Web 要素を選択するためのオーバーレイコントロールが強調表示されています。

この機能の改善を続ける中で、Live Preview 拡張機能 でも Web 要素を選択できるようになりました。拡張機能をダウンロードし、任意の HTML ファイルからライブサーバーを起動して、これを確認してください。

アクセシビリティ

ユーザー操作が必要な場合のサウンド

チャットでユーザー操作が必要な場合に通知するアクセシビリティシグナルを追加しました。サウンドを微調整しているため、これはオプトインです。この動作は setting(accessibility.signals.chatUserActionRequired) で設定できます。

新しいコードアクションサウンド

次のための個別のサウンドを導入しました:

  • コードアクションがトリガーされたとき: setting(accessibility.signals.codeActionTriggered)
  • コードアクションが適用されたとき: setting(accessibility.signals.codeActionApplied)

エージェントモードのアクセシビリティ改善

アクセス可能なビューに確認ダイアログに関する豊富な情報が含まれるようになり、過去のツール実行、現在のツール実行、および保留中の確認を網羅します。これには、使用される入力も含まれます。

応答に確認ダイアログが表示されると、対応するコードブロックの ARIA ラベル、応答の ARIA ラベル、およびライブアラートにアクションのタイトルが含まれるようになり、スクリーンリーダーユーザーにより良いコンテキストを提供します。

エディターエクスペリエンス

入力時に検索

設定: setting(editor.find.findOnType:true)

入力時検索は検索コントロールのデフォルトの動作でしたが、これを維持するか、Enter キーを押した後にのみ検索を実行するように無効にするかを制御できるようになりました。

ネイティブウィンドウタイトルバーでのカスタムメニュー

設定: setting(window.menuStyle)

Windows と Linux のメニューバーとコンテキストメニュー、および macOS のコンテキストメニューに使用されるメニュースタイルを setting(window.menuStyle) 設定を使用して指定できるようになりました:

  • native: OS によってレンダリングされます
  • custom: VS Code によってレンダリングされます
  • inherit: setting(window.titleBarStyle) によって設定されたタイトルバーのスタイルに一致します (ネイティブのタイトルバーとカスタムのメニューバーおよびコンテキストメニューを使用できます)。

Linux ネイティブウィンドウコンテキストメニュー

カスタムタイトルバーのアプリケーションアイコンを右クリックしたときに、ネイティブウィンドウコンテキストメニューをサポートするようになりました。

カスタムタイトルバー上のネイティブウィンドウコンテキストメニューのスクリーンショット。

プロセスエクスプローラーの Web サポート

プロセスエクスプローラーは、エディターウィンドウ用にワークベンチにあるフローティングウィンドウインフラストラクチャを使用するように変換されました。その結果、リモートに接続されている場合 (たとえば Codespaces で)、Web でプロセスエクスプローラーをサポートするようになりました。

フローティングウィンドウ内の VS Code プロセスエクスプローラーのスクリーンショット。

Windows シェル環境の検出

Windows 上の PowerShell のシェル環境検出を実装しました。これにより、VS Code は PowerShell プロファイルで設定された環境 (Node.js がさまざまなバージョンマネージャーを介して設定する PATH 更新など) を継承します。

未公開の拡張機能の警告

インストール済みの拡張機能が Marketplace で利用できなくなった場合、警告インジケーターが表示されるようになり、未公開または削除された可能性のある問題のある拡張機能を特定するのに役立ちます。

警告インジケーターと Marketplace で利用できなくなったことを示すメッセージが表示された拡張機能のスクリーンショット。

設定検索の提案 (プレビュー)

設定: setting(workbench.settings.showAISearchToggle:true)

このマイルストーンでは、設定エディターにトグルを追加しました。これにより、文字列一致に基づく結果ではなく、意味的に類似した結果を見つけるための AI 検索が開始されます。たとえば、「テキストサイズを大きくする」と検索すると、AI 検索は editor.fontSize 設定を見つけます。

トグルを表示するには、設定を有効にして VS Code をリロードします。また、精度の低い設定検索結果の一部を特定して修正するプロセスを進めており、自然言語クエリで期待される設定が見つからなかった場合のフィードバックを歓迎します。

次のマイルストーンでは、トグルを削除し、実験的な設定を、低速な AI 検索結果をリストの末尾に直接追加するタイミングを制御するものに変更することも検討しています。

検索キーワードの提案 (プレビュー)

設定: setting(search.searchView.keywordSuggestions)

前回のマイルストーンでは、検索ビューに キーワード提案 を導入し、関連性の高い結果をより速く見つけられるようにしました。提案のパフォーマンスを大幅に改善したため、結果が以前より約 5 倍速く表示されるようになります。

また、設定をチャット拡張機能から VS Code コアに移動し、名前を github.copilot.chat.search.keywordSuggestions から setting(search.searchView.keywordSuggestions) に変更しました。

セマンティック検索の動作オプション (プレビュー)

設定: setting(search.searchView.semanticSearchBehavior)

検索ビューのセマンティック検索を使用すると、テキストの一致だけでなく、クエリの意味に基づいて結果を取得できます。これは、検索する正確な用語がわからない場合に特に便利です。

デフォルトでは、セマンティック検索は明示的に要求された場合にのみ実行されます。セマンティック検索をトリガーするタイミングを制御する設定を追加しました:

  • manual (デフォルト): UI から手動でトリガーされた場合にのみセマンティック検索を実行します (kb(search.action.searchWithAI))
  • runOnEmpty: テキスト検索で結果が返されなかった場合に自動的にセマンティック検索を実行します
  • auto: すべての検索クエリに対してテキスト検索と並行して常にセマンティック検索を実行します

編集コンテキスト

設定: setting(editor.experimentalEditContextEnabled)

Stable で setting(editor.experimentalEditContextEnabled) 設定をデフォルトで有効にしました。これは、エディターの入力が EditContext API によって提供されるようになったことを意味します。これにより、特に IME エクスペリエンスに関連する多数のバグが修正され、将来的にはエディター内でより多用途で堅牢な入力エクスペリエンスへの道が開かれます。

EditContext API の詳細については、MDN ドキュメント を参照してください。

コード編集

NES インポートの提案

設定: setting(github.copilot.nextEditSuggestions.fixes)

先月、TypeScript と JavaScript の欠落しているインポートステートメントの追加を自動的に提案する、次の編集提案のサポートを導入しました。このリリースでは、これらの提案の精度と信頼性を向上させ、Python ファイルにもサポートを拡張しました。

NES がインポートステートメントを提案しているスクリーンショット。

NES はすべての VS Code Insiders ユーザーに対して有効になっており、6 月中に Stable ユーザーに対して段階的にデフォルトで有効になります。いつでも設定から NES を自分で有効にできます。

NES 受け入れフロー

次の編集提案の受け入れが、キーボードナビゲーションの改善により、よりシームレスになりました。提案を受け入れると、再度入力を開始するまでは、単一の kbstyle(Tab) キーを押すだけで後続の提案を引き続き受け入れることができます。入力を開始すると、kbstyle(Tab) を押してまずカーソルを次の提案に移動してから受け入れることができます。

ノートブック

エージェントセル実行のフォローモード

設定: setting(github.copilot.chat.notebook.followCellExecution.enabled)

フォローモードでは、ノートブックビューはエージェントによって現在実行されているセルに自動的にスクロールします。Jupyter Notebooks でのエージェントセル実行のフォローモードを有効または無効にするには、setting(github.copilot.chat.notebook.followCellExecution.enabled) 設定を使用します。

エージェントがセル実行ツールを使用すると、ノートブックツールバーがピンアイコンで更新され、フォローモードの状態が示されます。基本設定値を変更せずにエージェントの応答の途中で動作を切り替えることができ、エージェントの作業をリアルタイムでフォローし、エージェントが反復を続けている間に特定のコード部分を確認したい場合はオフに切り替えることができます。再度フォローしたい場合は、モードを切り替えるだけで、次の実行時に参加できます。

エージェントモード用のノートブックツール

ノートブックの設定

Jupyter 拡張機能 は、Jupyter Notebook のカーネルを設定するためのツールを提供します。このツールは、カーネルが選択され、ノートブックで使用できる状態であることを保証します。これには、必要に応じて仮想環境を作成するプロセス (推奨されるアプローチ) を案内したり、既存の Python 環境を選択するように促したりすることが含まれます。

このツールにより、LLM は最小限のユーザー操作でセルの実行などの操作をノートブックで実行できるようになり、エージェントモードでの全体的なユーザーエクスペリエンスが向上します。

長時間実行されるエージェントワークフロー

エージェントは、正確なコンテキストで軌道に乗せるのに役立つ内部ノートブックサマリーツールにアクセスできます。そのサマリーは、コンテキストが大きくなりすぎてエージェントが複雑な操作を続行できなくなった場合に、会話履歴を要約する際にも含まれます。

実行確認でのセルプレビュー

エージェントがそのセルの実行確認を要求すると、ノートブックセルからコードのスニペットが表示されます。チャットビューのセルリンクにより、ノートブック内のセルに直接移動できるようになりました。

ソース管理

Copilot コーディングエージェントの統合

Copilot コーディングエージェントを使用すると、GitHub Copilot は人間の開発者のようにバックグラウンドで独立してタスクを完了できます。GitHub Pull Requests 拡張機能を拡張し、VS Code 内からエージェントのタスクを簡単に割り当てて追跡できるようにしました。

拡張機能に次の機能を追加しました:

  • Copilot に割り当て: VS Code の issue または PR ビューからプルリクエストまたは issue を Copilot に割り当てます
  • Copilot on My Behalf PR クエリ: Copilot があなたのために作業しているすべてのプルリクエストをすばやく確認できます。
  • PR ビュー: Copilot コーディングエージェントのステータスを確認し、ブラウザーでセッションの詳細を開きます。

GitHub Pull Requests ビューを示すスクリーンショット。Copilot への割り当てアクションと、Copilot に割り当てられた作業の PR クエリが強調表示されています。

ソース管理履歴アイテムの詳細

多くのご要望にお応えして、ソース管理グラフビューでアイテムを選択すると、その履歴アイテムのリソースが表示されるようになりました。... メニューからツリービューまたはリストビューの表現を選択できます。

履歴アイテムのすべてのリソースを複数ファイル差分エディターで開くには、ホバー時の 変更を開く アクションを使用します。グラフビューから特定のリソースを選択すると、そのリソースのみの差分エディターが開きます。特定のバージョンのファイルを開くには、ファイルを開く アクションを選択します。

履歴アイテムをチャットコンテキストに追加

ソース管理履歴アイテムをチャットリクエストのコンテキストとして追加できるようになりました。これは、特定のコミットまたはプルリクエストの内容をチャットプロンプトのコンテキストとして提供したい場合に便利です。

履歴アイテムがコンテキストとして追加されたチャットビュー入力ボックスのスクリーンショット。

履歴アイテムをチャットに追加するには、チャットビューから コンテキストを追加 > ソース管理 を使用し、特定の履歴アイテムを選択します。または、ソース管理グラフで履歴アイテムを右クリックし、コンテキストメニューから Copilot > 履歴アイテムをチャットに追加 を選択します。

タスク

インスタンスポリシー

タスクの runOptionsinstancePolicy プロパティが追加されました。これは、タスクが instanceLimit に達したときに何が起こるかを決定します。

オプションには、prompt (デフォルト)、silentterminateNewestterminateOldestwarn が含まれます。

tasks.json ファイルで instancePolicy が設定され、デフォルト値として prompt を含むオプションが表示されているスクリーンショット。

ターミナル

言語サーバーベースのターミナル提案

対話型 Python REPL セッションのターミナルで言語サーバー補完が利用できるようになりました。これにより、エディターで受け取るのと同じ言語補完がターミナル内で利用できます。Pylance を介した Python のサポートから開始し、将来的にはより多くの言語に拡張する予定です。

試すには、次の設定が有効になっていることを確認してください:

  • setting(terminal.integrated.shellIntegration.enabled:true)
  • setting(python.terminal.shellIntegration.enabled:true)
  • setting(terminal.integrated.suggest.enabled:true)
  • setting(python.analysis.supportAllPythonDocuments:true)

リモート開発

リモート開発拡張機能 を使用すると、開発コンテナー、SSH または リモートトンネル を介したリモートマシン、または Linux 用 Windows サブシステム (WSL) をフル機能の開発環境として使用できます。

ハイライトは次のとおりです:

  • SSH 事前接続スクリプト
  • リモートエクスプローラーの改善

これらの機能の詳細については、リモート開発リリースノート を参照してください。

拡張機能への貢献

Python

Python チャットツール

Python 拡張機能 には、「Python 環境の情報を取得」、「Python 環境の実行可能情報を取得」、「Python パッケージのインストール」、「Python 環境の設定」というチャットツールが含まれるようになりました。プロンプトで #getPythonEnvironmentInfo #installPythonPackage を追加して直接参照するか、エージェントモードが該当するツールを自動的に呼び出します。これらのツールは、ファイルまたはワークスペースのコンテキストに基づいて適切な環境情報をシームレスに検出し、正確な環境解決でパッケージのインストールを処理します。

「Python 環境の設定」ツールは、Python 環境がワークスペースに対して正しく設定されていることを保証します。これには、必要に応じて仮想環境を作成し、それをワークスペースのアクティブな Python 環境として選択することが含まれます。

以前 Python Environments 拡張機能 (プレビュー) で導入されたツールは Python 拡張機能に移行され、これにより Python 拡張機能がインストールされているすべてのユーザーがこれらのツールを利用できるようになりました。

テンプレートからプロジェクトを作成

Python Environments 拡張機能 は、Python パッケージと基本スクリプトのプロジェクト作成をサポートするようになり、スキャフォールディングをバイパスしてより迅速にコーディングを開始できるようになりました。Python Envs: Create Project from Template コマンドを使用して、パッケージを作成するかスクリプトを作成するかを選択します。

パッケージ作成では、パッケージに名前を付け、仮想環境を作成し、テストサブフォルダー、pyproject.tomldev-requirements.txt、および定型的な __main__.py__init__.py ファイルを含むスキャフォールディングされたプロジェクトを受け取ることができます。

スクリプトの場合、選択した名前で新しい Python ファイルを作成し、定型的なコードを含めます。

PyEnv と Poetry のサポート

Python Environments 拡張機能に、環境管理用の pyenv と、パッケージおよび環境管理用の poetry のサポートを追加しました。

拡張機能のオーサリング

MCP 拡張機能 API

拡張機能は MCP サーバーのコレクションを公開できるようになりました。これにより、MCP サーバーを拡張機能にバンドルしたり、他のソースから MCP サーバーを動的に検出する拡張機能を構築したりできます。詳細については、MCP 拡張機能開発ガイド を参照するか、MCP 拡張機能サンプル を確認してください。

拡張機能パッケージ化時のシークレットスキャン

VSCE は、拡張機能をパッケージ化する際にシークレットをスキャンするようになりました。ソースファイルで潜在的なシークレット (API キー、トークン、資格情報、.env などの環境変数ファイルなど) が検出された場合、VSCE はパッケージ化プロセス中にエラーを表示します。これにより、機密情報を誤って Marketplace に公開することを回避できます。拡張機能を公開する前に、エラーを確認して対処してください。

特定のチェックをバイパスする必要がある場合は、VSCE の実行時に --allow-package-secrets <secret_type> または --allow-package-env-file フラグを使用できます。これらのフラグを使用すると、パッケージ化中にスキップするシークレットまたは環境ファイルチェックを設定できます。

Web 環境の検出

⚠️ 破壊的変更 ⚠️

設定: setting(extensions.supportNodeGlobalNavigator)

Node.js 拡張機能ホストは、Electron 35 ランタイム更新 の一環として、v20 から v22 に更新されました。この更新により、デスクトップおよびリモート拡張機能ホストで navigator グローバルオブジェクト がサポートされるようになります。

この変更は、Web 環境を検出するために navigator オブジェクトの存在に依存する拡張機能にとって破壊的変更となる可能性があります。

拡張機能作成者の移行を支援するために、undefined に初期化される globalThis.navigator のポリフィルを作成しました。これにより、拡張機能は引き続き正しく動作します。ポリフィルは setting(extensions.supportNodeGlobalNavigator) VS Code 設定の背後にあります。デフォルトでは、この設定は無効になっており、ポリフィルが配置されています。拡張機能がこの方法で navigator にアクセスしようとすると、テレメトリをキャプチャし、エラーをログに記録します (拡張機能開発モードの場合)。

将来的には、この設定がデフォルトで有効になる可能性があるため、拡張機能作成者には、新しい navigator グローバルオブジェクトと互換性があるようにコードを移行することを強くお勧めします。コードを移行するには、次の手順に従います:

  • 拡張機能ホストログで、拡張機能から発生したエラースタックを持つ PendingMigrationError を確認します。
  • 必要に応じて、typeof navigator === 'object' のようなチェックが typeof process === 'object' && process.versions.node に移行されていることを確認します。
  • setting(extensions.supportNodeGlobalNavigator) を有効にします。
  • 拡張機能の動作が変わらないことを確認します。

提案された API

認証プロバイダー: MCP でサポートされる認証サーバー

現在 MCP 認証 でのみ利用されているこの API 提案により、AuthenticationProvider はそれに関連付けられている認証サーバーを宣言できます。

たとえば、GitHub 認証プロバイダーを見ると、認証プロバイダーコントリビューション の authorizationServerGlobs プロパティに一般的な GitHub 認証 URL が含まれています:

{
  "label": "GitHub",
  "id": "github",
  "authorizationServerGlobs": [
    "https://github.com/login/oauth"
  ]
}

このプロパティは拡張機能のアクティベーションに使用されます。要求された認証サーバーが一致する場合、拡張機能がアクティベートされます。

さらに、認証プロバイダーを登録する際には、最終決定された認証サーバー URL glob を含める必要があります。GitHub 認証がここで行っていること と同様です:

vscode.authentication.registerAuthenticationProvider(
 type,
 this._githubServer.friendlyName,
 this,
 {
  supportsMultipleAccounts: true,
  supportedAuthorizationServers: [
   ghesUri ?? vscode.Uri.parse('https://github.com/login/oauth')
  ]
 }
);

より複雑な例については、Microsoft 認証を参照してください。認証サーバーは、パスに配置されるテナントに依存します。そのため、これには コントリビューション でワイルドカードを使用します:

{
  "label": "Microsoft",
  "id": "microsoft",
  "authorizationServerGlobs": [
    "https://login.microsoftonline.com/*/v2.0"
  ]
},

そして 登録時 に:

authentication.registerAuthenticationProvider(
 'microsoft',
 'Microsoft',
 authProvider,
 {
  supportsMultipleAccounts: true,
  supportedAuthorizationServers: [
   Uri.parse('https://login.microsoftonline.com/*/v2.0')
  ]
 }
)

次に、呼び出し元が認証を要求するときに認証サーバー URL を渡すと、それは既に存在する AuthenticationProviderSessionOptions を介して getSessions 関数と createSession 関数の両方に渡されます。

前述のように、この機能は現在 MCP サポートで使用されており、MCP サーバーから認証に使用する認証サーバー URL を受け取ります。その URL は認証プロバイダーにマッピングされるか、存在しない場合はその認証サーバー用に認証プロバイダーが動的に作成されます。

完全な API 提案は vscode リポジトリ にあり、GitHub issue でのフィードバックをお待ちしています!

エンジニアリング

Electron 35 アップデート

このマイルストーンでは、Stable リリースのユーザーに Electron 35 アップデートをプロモートしています。このアップデートには、Chromium 134.0.6998.205 と Node.js 22.15.1 が含まれています。Insiders ビルドでセルフホストし、早期のフィードバックを提供してくださった皆様に感謝いたします。

実世界の拡張機能での ESM の採用

前回のマイルストーンでは、JavaScript モジュール (ESM) のサポートを発表しました。これにより、拡張機能は import および export ステートメントを使用できるようになりますが、現在は NodeJS 拡張機能ホストをターゲットにしている場合に限られます。

今月、GitHub Issue Notebooks で実世界の採用を行いました。この拡張機能は NodeJS 拡張機能ホスト (ESM 拡張機能をサポート) と Web ワーカー拡張機能ホスト (現在 ESM 拡張機能をサポートしていません) で実行できるため、これは簡単ではありません。これにはより複雑なバンドラー設定が必要であり、その esbuild-config からインスピレーションを得たいと思うかもしれません。

ありがとうございます

最後になりましたが、VS Code の貢献者の皆様に心より感謝申し上げます。

Issue トラッキング

Issue トラッキングへの貢献:

プルリクエスト

vscode への貢献:

vscode-copilot-release への貢献:

vscode-css-languageservice への貢献:

vscode-custom-data への貢献:

vscode-eslint への貢献:

vscode-generator-code への貢献:

vscode-js-debug への貢献:

vscode-jupyter への貢献:

  • @WillHirsch: Downgrade diagnostic severity for use of bang instead of percent for package installs PR #16601

vscode-languageserver-node への貢献:

vscode-markdown-tm-grammar への貢献:

vscode-prompt-tsx への貢献:

vscode-pull-request-github への貢献:

vscode-python-debugger への貢献:

debug-adapter-protocol への貢献:

language-server-protocol への貢献:

lsprotocol への貢献: