VS Code 1.121リリース⁠MarkdownプレビューでのMermaid図とYAMLフロントマター表示を標準搭載し⁠リモートエージェントにも対応 —⁠—Agent Host Protocol(AHP)リモート側のセッションを継続

Microsoftは2026年5月20日、Visual Studio Code(VS Code)1.121をリリースした。今回の更新では、MarkdownプレビューやノートブックでのMermaid図の表示、ローカルHTMLファイルの標準プレビュー、リモートマシン上でのエージェントセッション実行、エージェント向けターミナル挙動の改善などが追加されている。

リモートエージェントとAHPで⁠離れたマシン上の作業を継続

前週のバージョン1.120安定版リリースでプレビュー提供された「Agentsウィンドウ」も、引き続き改善されている。Agentsウィンドウは、タイトルバーの「Open in Agents」ボタンなどから開き、エージェントによる開発セッションを進める画面として使う。

バージョン1.121では、ユーザーが管理し、SSHまたはdev tunnelsで接続できるリモートマシン上でエージェントセッションを実行する「Remote agents」もプレビューとして追加された。接続先は既存の~/.ssh/configから選ぶか、対象マシンでcode tunnelを実行して作成済みのdev tunnelを選択する。

Remote agentsでは、AgentsウィンドウがSSHまたはdev tunnelでリモートマシンに接続し、エージェントセッションを実行する「agent host」を起動する。SSH接続ではVS Code CLIをインストールし、dev tunnel接続では起動済みのCLIサーバーに接続する。agent hostはCopilot SDK上のエージェントループをホストするプロセスで、クライアントが切断されてもリモート側でセッションを継続できる。リモートマシンに接続する点はリモート開発拡張機能に近いが、エディタ環境ではなく、長時間継続するエージェントセッションをリモート側で実行するための仕組みとなる。

Agentsウィンドウとagent hostの通信には、新しいオープンプロトコルAgent Host Protocol(AHP)が使われる。AHPでは、agent hostがエージェントセッションの状態を一元的に管理し、接続中のすべてのクライアントへ同期する。状態変更は一定のルールに沿って順序付けられるため、複数のクライアントから同じエージェントセッションを扱える。

AHPは、エージェントセッションの状態をホスト側で管理し、複数クライアントに同期したビューを提供するサーバープロトコルとして設計されている。Agent Client Protocol(ACP)がコードエディタやIDEとコーディングエージェントをつなぐ通信手順をそろえるのに対し、AHPはホスト側でセッション状態を管理し、その状態を複数クライアントへ同期することを中心にしている。

Claude AgentのAutoモードと可観測性を改善

Claude Agentでは、権限確認のプロンプトなしで操作を実行できる「Auto」権限モードがプレビューとして利用できるようになった。設定github.copilot.chat.claudeAgent.allowAutoPermissionsを有効にすると、権限モードの選択肢にAutoが表示される。実行前には別の安全確認が入り、要求を超える権限昇格、認識されていないインフラへの操作、悪意あるコンテンツに起因するとみられる動作をブロックする。

同じClaude Agent向けの権限設定として、安全チェックなしの完全な無人実行を許可する「Bypass all permissions」も用意されている。表示するにはgithub.copilot.chat.claudeAgent.allowDangerouslySkipPermissionsを有効にする。リリースノートでは安全チェックなしの「YOLO mode」として注記されており、通常のAutoモードとは分けて扱う必要がある。

エージェントの可観測性に関する更新として、Azure Managed Grafanaチームとの協力による事前構築済みダッシュボードも用意された。VS Code内の画面ではなく、VS Codeのエージェントが出力するOpenTelemetryシグナルをAzure Managed Grafanaで可視化するためのもので、操作、トークン使用量、チャットセッション、ツール呼び出し、モデルごとの応答時間、最初のトークンまでの時間(TTFT)などを確認できる。

モデル選択とBYOK構成を拡張

バージョン1.121では、チャット関連のバックグラウンドタスクで使う「ユーティリティモデル」を、ユーザーが利用可能なモデルで上書きできるようになった。対象は、チャットセッションのタイトルや要約、コミットメッセージ、リネーム候補、プロンプト分類、意図検出などを生成・判定する処理で、通常のチャット応答に使うモデルとは別に指定できる。一般的なユーティリティ処理はchat.utilityModelで、より小さく高速なモデルが向く処理はchat.utilitySmallModelで指定する。未設定の場合はいずれもDefaultとして扱われる。VS Code側の実装では、前者はCopilotサービス側でデフォルトに指定されたモデルを使い、後者は現時点でgpt-4o-miniに解決される。

VS Code Insidersでは、BYOK(Bring Your Own Key)向けの新しい「Custom Endpoint」プロバイダーもプレビューとして導入された。BYOKは、他プロバイダーのモデルやローカルモデルをCopilot Chatで使うための仕組みとして提供されてきた。Custom Endpointプロバイダーでは、Chat Completions、Responses、Messages互換の任意のエンドポイントを1つの構成から接続できる。Chat Completionsのみに対応していたこれまでのOpenAI互換プロバイダーcustomoaiは非推奨になる。

統合ブラウザでHTMLプレビュー⁠要素添付も改善

統合ブラウザ(Integrated Browser)では、ローカルHTMLファイルを拡張機能なしでプレビューする機能が追加された。ファイルエクスプローラー上のHTMLファイル、または開いているHTMLファイルのエディタタブを右クリックし、⁠Open in Integrated Browser」を選ぶとプレビューできる。HTMLファイルがアクティブなときは、エディタのタイトルバーにあるプレビューアイコンからも開くことができる。

チャットへブラウザ上の要素を追加する操作も改善された。要素選択UIが作り直され、クリックとドラッグで複数要素を範囲選択できるようになった。ページ上で右クリックし、コンテキストメニューから「Add Element to Chat」を選ぶこともできる。

エージェント実行時のターミナル出力と秘密情報の扱いを改善

ターミナル関連では、エージェントが実行するコマンドの扱いにも複数の改善が加えられた。これまでCLIやスクリプトは、人間が起動したコマンドか、VS Codeのエージェントフローから起動されたコマンドかを判別できなかった。そのため、進捗アニメーションや対話型プロンプト、冗長な整形出力がエージェントセッションをブロックすることがあった。

バージョン1.121では、エージェントが開始したターミナルコマンドに環境変数VSCODE_AGENTが設定される。CLIやスクリプトはこの変数を確認することで、機械読み取りしやすい出力へ切り替える、進捗アニメーションを抑制する、プロンプトをスキップするといった対応が可能になる。

チャット上のターミナルツールには、コマンドがバックグラウンドで実行中であることを示す表示も追加された。ツール呼び出しの応答後もコマンドが動き続ける場合、⁠Running <command> in background - Show」と表示され、⁠Show」から対象のターミナルを表示してフォーカスできる。また、チャットエージェントが作成したバックグラウンドターミナルは、コマンド完了時に自動的に破棄されるようになった。チャットUI内の出力は保持され、Showで表示したターミナルは開いたままになる。

モデルに渡すターミナルツールの出力では、冗長な内容を事前に圧縮する仕組みが使われている。設定chat.tools.compressOutput.enabledによる圧縮対象が今回広がり、pytestjestcargo testtsc、パッケージインストールに加え、一般的なテストランナー、ビルドツール、リンター、Dockerコマンド、パッケージマネージャーなどが含まれるようになった。

セキュリティ面では、パスワード、パスフレーズ、PIN、検証コードなどの機密性の高いプロンプトへの対応が強化された。チャットターミナルコマンドがこうした入力を要求した場合、VS Codeがプロンプトをインターセプトする。デフォルトの権限モードでは、ユーザーがターミナルにフォーカスして秘密情報を直接入力できる。自動承認フローでは、VS Codeがコマンドをキャンセルし、再試行したり秘密情報を要求したりしないようモデルへ伝える。

エディタの候補表示とMarkdownプレビューを変更

エディタでは、Copilotのインライン補完ではなく、VS Code標準の候補一覧を自動表示するeditor.quickSuggestionsのデフォルト動作が変更された。Copilotなどのインライン補完プロバイダーが使える場合は、コード入力中にこの候補一覧を自動表示しない。候補一覧が自動表示されると、入力途中の文字に一致した候補が選択状態になり、その候補を前提にCopilotのインライン補完が作られてしまうことがあるためという。インライン補完プロバイダーがない環境では、これまで通り候補一覧が表示される。

以前の自動表示に戻したい場合は、次のように設定できる。otherは通常のコード部分、commentsはコメント内、stringsは文字列内でのクイックサジェストを制御する。

{
  "editor.quickSuggestions": {
    "other": "on",
    "comments": "off",
    "strings": "off"
  }
}

Markdown関連では、YAMLフロントマターの表示を制御する設定markdown.preview.frontMatterも追加された。デフォルト値はtableで、フロントマターをMarkdownプレビューの先頭にテーブルとして表示する。ほかに、YAMLコードブロックとして表示するcodeBlock、プレビューから非表示にするhideを選択できる。

また、MarkdownファイルをプレビューしたときにMermaid図が表示されるようになった。これまでMarketplaceで提供されていた「Markdown Preview Mermaid Support」拡張機能が、新しい組み込み拡張機能「Mermaid Markdown Features」としてVS Codeに統合されたもの。Markdownプレビュー、ノートブックのMarkdownセル、チャット内では、mermaidのフェンス付きコードブロックを図として表示できる。表示された図はパンとズームに対応し、右クリックメニューからMermaidソースをコピーすることもできる。機能を無効にしたい場合は、設定markdown.mermaid.enabledfalseにする。

リリースブログで例示されいていたMermaidコードブロックの例
flowchart LR
  Sleep[Sleep] --> Wake{Awake?}
  Wake -->|No| Sleep
  Wake -->|Hungry| Snack[Get treat]
  Wake -->|Not in Sun?| Move[Move to sun]
  Wake -->|Human is typing| Keyboard[Sleep on keyboard]
  Snack --> Sleep
  Move --> Sleep
  Keyboard --> Sleep
上記Mermaidコードブロックの表示例

おすすめ記事

記事・ニュース一覧