VS Code「Error: XHR failed」拡張機能のインストール・検索時のエラーを修正する

intermediate💻 VS Code2026-06-12| VS Code 1.80以降(Windows 10/11、macOS、Linux)— 企業プロキシまたはVPN環境下

Error Message

Error: XHR failed
#拡張機能#ネットワーク#プロキシ

TL;DR

VS Code が marketplace.visualstudio.com または vscode.cdn.azure.cn に接続できない状態です。最速の修正方法:

  • VS Code 設定でプロキシを指定する:"http.proxy": "http://your-proxy:port"
  • またはプロキシの自動検出を完全に無効化する:"http.proxySupport": "off"
  • SSL インスペクション環境下では "http.proxyStrictSSL": false を設定する

このエラーが発生する原因

拡張機能の「インストール」をクリックすると、VS Code は Visual Studio Marketplace に XHR リクエストを送信します。このリクエストをブロックするもの — 設定ミスのプロキシ、ファイアウォールルール、傍受された TLS ハンドシェイク — はすべて同じ不可解なエラーを引き起こします:

Error: XHR failed

よくある根本原因:

  • 企業プロキシが設定されていない:VS Code はシステムプロキシを自動的に継承しません — 特に macOS や Linux では、統一されたシステムプロキシ API が存在しないため顕著です。
  • SSL/TLS インターセプト:会社のファイアウォールがカスタム CA を使って HTTPS トラフィックを復号しています。VS Code はデフォルトでその CA を信頼しません。
  • VPN がアウトバウンドトラフィックをブロック:スプリットトンネル VPN の設定によっては、マーケットプレイスのドメインが完全にブロックされる場合があります。
  • IPv6 名前解決の問題:VS Code がネットワークでルーティングされない IPv6 アドレスに解決される場合があります。
  • アンチウイルスまたはファイアウォール:サードパーティのセキュリティソフトが VS Code のネットワーク通信をブロックしています。

修正方法 1:VS Code 設定でプロキシを構成する

ユーザー設定の JSON を開き(Ctrl+Shift+PPreferences: Open User Settings (JSON))、以下を追加します:

{
  "http.proxy": "http://proxy.yourcompany.com:8080",
  "http.proxyStrictSSL": false
}

プロキシに認証が必要な場合:

{
  "http.proxy": "http://username:password@proxy.yourcompany.com:8080",
  "http.proxyStrictSSL": false
}

settings.json に認証情報を書きたくない場合は、VS Code を起動する前に環境変数でプロキシを設定してください:

# Linux / macOS
export HTTPS_PROXY=http://proxy.yourcompany.com:8080
export HTTP_PROXY=http://proxy.yourcompany.com:8080
code .
:: Windows コマンドプロンプト
set HTTPS_PROXY=http://proxy.yourcompany.com:8080
set HTTP_PROXY=http://proxy.yourcompany.com:8080
code .

修正方法 2:プロキシの自動検出を無効にする

VS Code がプロキシを誤検出することがあります — オフィスと自宅のネットワークを切り替える際によく発生します。自動検出を無効にして直接接続を強制します:

{
  "http.proxySupport": "off"
}

プロキシを使用していないのに VS Code がプロキシ経由だと誤認識している場合に有効です。

修正方法 3:カスタム CA 証明書を信頼する(SSL インスペクション)

Zscaler、Cisco Umbrella、Forcepoint などのツールはディープパケットインスペクションを行います。これらはマーケットプレイスの TLS 証明書を会社の内部 CA で署名した証明書に置き換えますが、VS Code はその CA をトラストストアに持っていないため拒否します。

ステップ 1:会社の CA 証明書を .pem ファイルとしてエクスポートします。IT チームに確認するか、ブラウザの証明書ストアから取り出してください。

ステップ 2:手っ取り早い回避策は、厳格な SSL 検証を無効にすることです:

{
  "http.proxyStrictSSL": false
}

ステップ 3:証明書検証を維持したまま修正するには、代わりに NODE_EXTRA_CA_CERTS 環境変数を使用します:

# Linux / macOS (~/.bashrc または ~/.zshrc)
export NODE_EXTRA_CA_CERTS=/path/to/company-ca.pem

# Windows(システム環境変数)
NODE_EXTRA_CA_CERTS=C:\certs\company-ca.pem

変数を設定した後、VS Code を再起動してください。これにより信頼の範囲が自社 CA のみに限定され、他の場所では SSL 検証が引き続き有効になります。

修正方法 4:DNS とネットワークの到達性を確認する

VS Code の設定を変更する前に、マーケットプレイスが実際に自分のマシンから到達可能かどうかを確認します:

# DNS 解決のテスト
nslookup marketplace.visualstudio.com

# HTTPS 接続のテスト
curl -v https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery

DNS が失敗する場合は、パブリックリゾルバを試して、会社の DNS がブロックの原因かどうかを切り分けます:

# Google DNS
nslookup marketplace.visualstudio.com 8.8.8.8

# Cloudflare DNS
nslookup marketplace.visualstudio.com 1.1.1.1

curl がハングするか接続エラーを返す場合、それはネットワークレベルの問題です。VPN、ファイアウォール、またはプロキシがリクエストをブロックしています。ネットワークチームに以下のドメインをホワイトリストに追加するよう依頼してください:

  • marketplace.visualstudio.com
  • *.vscode.cdn.azure.cn(中国ミラー)
  • vscode.blob.core.windows.net
  • az764295.vo.msecnd.net(CDN)

Azure CDN エンドポイントに関連する特定の CIDR 範囲やサブネットへのネットワーク到達性を確認する必要がある場合、ToolCraft のサブネット計算ツールを使えば、何もアップロードせずに IP 範囲の計算と検証が行えます。

修正方法 5:拡張機能を手動でインストールする(VSIX)

ネットワークの修正を待たなければならない場合もあります — IT チケット、VPN 承認など。VSIX パッケージを使えば、その間もオフラインで拡張機能をインストールできます。

ステップ 1:マーケットプレイスにアクセスできるマシンで、VS Code Marketplace から .vsix ファイルをダウンロードします。以下の URL を直接構築してダウンロードすることも可能です:

https://marketplace.visualstudio.com/_apis/public/gallery/publishers/{publisher}/vsextensions/{extension}/{version}/vspackage

ステップ 2:ファイルをネットワーク制限のあるマシンにコピーし、インストールします:

# コマンドパレット経由
Ctrl+Shift+P → "Extensions: Install from VSIX..."

# または CLI 経由
code --install-extension path/to/extension.vsix

動作確認

ターミナルを閉じる前に修正を確認してください:

  • 拡張機能パネルを開く(Ctrl+Shift+X
  • ESLintPrettier などの人気拡張機能を検索する
  • 2〜3 秒以内に結果が表示されるはず
  • 任意の拡張機能の「インストール」をクリック — エラーポップアップなしにダウンロードされるはず

まだ失敗する場合は、VS Code のネットワークログを開いてどのリクエストがブロックされているか正確に確認してください:

Help → Toggle Developer Tools → Console タブ

失敗したリクエストの URL と HTTP ステータスコードから、何がドロップされているかが正確にわかります。

クイックリファレンス

// settings.json — 該当するブロックをペースト

// 企業プロキシ環境下
{
  "http.proxy": "http://proxy.example.com:8080",
  "http.proxyStrictSSL": false
}

// プロキシなし(直接接続)
{
  "http.proxySupport": "off"
}

// 環境変数で会社の CA 証明書を信頼する
// NODE_EXTRA_CA_CERTS=/path/to/ca.pem(VS Code 起動前に設定)

Related Error Notes