VS Codeの「Extension Host Terminated Unexpectedly」エラーを修正する方法

intermediate💻 VS Code2026-03-19| VS Code 1.80以降(Windows 10/11、macOS 12以降、Ubuntu 20.04以降)

Error Message

Extension host terminated unexpectedly. Please reload the window.
#vscode#拡張機能#クラッシュ#リロード

エラーの内容

作業中にコードを編集していると、VS Code がフリーズします。そして通知が表示されます:

Extension host terminated unexpectedly. Please reload the window.

IntelliSense が停止し、シンタックスハイライトが消え、言語サーバーも使えなくなります。「ウィンドウを再読み込み」をクリックすれば一時的に直りますが、しばらくするとまたクラッシュします。

何が起きているのか

VS Code はすべての拡張機能を 拡張機能ホスト と呼ばれる専用の Node.js プロセスで実行しています。このプロセスが未処理の例外、メモリオーバーフロー、またはネイティブクラッシュによって終了すると、VS Code は自動復旧できずこのエラーを表示します。

主な原因として以下が挙げられます:

  • バグやメモリリークのある拡張機能
  • 2 つの拡張機能が互いに競合している
  • 大規模なワークスペースで拡張機能ホストが Node.js のメモリ上限に達している
  • 更新失敗による拡張機能ファイルの破損
  • 拡張機能に同梱されている互換性のないネイティブ Node.js モジュール
  • 50,000 以上のファイルを含むワークスペースがファイルウォッチャーを圧迫している

修正方法 1:まず拡張機能ホストのログを確認する

やみくもに拡張機能を無効化する前に、実際のクラッシュ原因を確認しましょう。出力パネルを開きます:

Ctrl+Shift+U  (Windows/Linux)
Cmd+Shift+U   (macOS)

ドロップダウンを「タスク」から 「拡張機能ホスト」 に切り替えて、スタックトレース、Error: の行、または「out of memory」メッセージを探します。十中八九、どの拡張機能が問題を起こしているか正確にわかります。

さらに詳しく調べるには、開発者ツールのコンソールを開きます:

Help → Toggle Developer Tools → Console tab

Errors でフィルタリングし、出力に拡張機能名が含まれていないか確認します。

修正方法 2:問題を切り分ける — すべての拡張機能を無効にする

すべての拡張機能をオフにして VS Code を起動します:

# ターミナルから
code --disable-extensions

# VS Code 内から:
Ctrl+Shift+P → "Open New Window with Extensions Disabled"

クラッシュが解消されましたか? 拡張機能が原因です。拡張機能なしでもクラッシュする場合は、修正方法 5 に進んでください。

修正方法 3:二分探索で問題の拡張機能を特定する

30 以上の拡張機能を 1 つずつテストするのは手間がかかります。手動で探す代わりに、VS Code の組み込み二分探索機能を使いましょう:

Ctrl+Shift+P → "Start Extension Bisect"

VS Code が拡張機能の半分を無効にして「まだ問題がありますか?」と尋ねます。はい/いいえで答えるだけで、O(log n) のステップで絞り込めます。30 以上の拡張機能でも通常 5〜6 回で特定できます。

特定できたら、以下のいずれかを選択します:

  • 永続的に無効にする
  • その拡張機能の GitHub Issues ページで既知の修正方法や回避策を確認する
  • 拡張機能パネル → 歯車アイコン → 「別のバージョンをインストール」でロールバックする

修正方法 4:拡張機能のキャッシュをクリアする

破損した拡張機能ファイルは、更新後も繰り返しクラッシュを引き起こすことがあります。問題のある拡張機能のキャッシュフォルダを削除します:

Windows:

%USERPROFILE%\.vscode\extensions

macOS/Linux:

~/.vscode/extensions

該当する拡張機能のフォルダ(例:ms-python.python-2024.x.x)を見つけて削除し、拡張機能パネルから再インストールします。すべてを一から再インストールする覚悟がない限り、extensions フォルダ全体を削除するのは避けてください。

古いキャッシュもクリアする価値があります:

# macOS/Linux
rm -rf ~/.vscode/extensions/.obsolete

# Windows (PowerShell)
Remove-Item "$env:USERPROFILE\.vscode\extensions\.obsolete" -Force

修正方法 5:拡張機能を分離してメモリを増やす

ここでは 2 つの方法を紹介します。どちらも多くの重い拡張機能を同時に読み込んでいる場合に有効です。

方法 A — アフィニティによるプロセス分離。 デフォルトでは、すべての拡張機能が単一の拡張機能ホストプロセスを共有しています。1 つの拡張機能がクラッシュすると、ホスト全体が落ちます。アフィニティ設定で特定の拡張機能を独自のプロセスに移すことで、クラッシュを局所化できます:

{
  "extensions.experimental.affinity": {
    "vscodevim.vim": 1
  }
}

頻繁に問題を起こす拡張機能に対して settings.json に追加してください。グループ番号 1 で別のホストに移動し、23 などで追加の分離グループを作成できます。

方法 B — Node.js のメモリ制限を引き上げる。 Pylance、GitHub Copilot、または大規模な TypeScript 言語サーバーなどの拡張機能では、拡張機能ホストが Node.js のデフォルト約 1.5 GB のメモリ上限に達することがあります。argv.json を編集して上限を引き上げます:

Ctrl+Shift+P → "Configure Runtime Arguments"

以下を追加します:

{
  "js-flags": "--max-old-space-size=4096"
}

これで制限が 4 GB に設定されます。保存後は VS Code を完全に再起動してください — ウィンドウの再読み込みだけでは不十分です。

修正方法 6:ファイルウォッチャーの制限を確認する(Linux のみ)

Linux では、数万のファイルを含むワークスペースがシステムレベルのファイルウォッチャー制限を使い果たし、拡張機能ホストが不安定になることがあります。現在の制限を確認します:

cat /proc/sys/fs/inotify/max_user_watches

8192 などの値は大規模プロジェクトには低すぎます。永続的に引き上げます:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

さらに .vscode/settings.json で除外設定を行い、VS Code が不要なフォルダを監視しないようにします:

{
  "files.watcherExclude": {
    "**/node_modules/**": true,
    "**/.git/**": true,
    "**/dist/**": true,
    "**/__pycache__/**": true
  }
}

修正方法 7:VS Code をクリーン再インストールする

上記すべてを試してもクラッシュが続く場合、VS Code のインストール自体が破損している可能性があります。クリーン再インストールは約 10 分で完了し、あらゆる原因を一度に排除できます:

  • VS Code をアンインストールする
  • 残ったコンフィグディレクトリを削除する:Linux/macOS では ~/.vscode~/.config/Code、Windows では %APPDATA%\Code
  • code.visualstudio.com から最新の安定版をダウンロードしてインストールする
  • 拡張機能を少量ずつ再インストールし、各バッチの後に数分間テストする

修正が成功したか確認する方法

成功を確認する前に、少なくとも 15〜20 分間実際の作業を行って様子を見てください。確認すべき点は以下の通りです:

  • IntelliSense と自動補完が正常に機能している
  • 「Extension host terminated」通知が表示されない
  • 出力 → 拡張機能ホストのログがクリーン(赤いエラーなし)
  • 言語サーバー(Python、TypeScript など)が接続を維持している

Linux/macOS では、拡張機能ホストのプロセスを直接監視できます:

watch -n 5 'ps aux | grep extensionHost | grep -v grep'

プロセス ID が数分おきに変わらず安定していれば、クラッシュは解消されています。

予防策

  • VS Code を常に最新の状態に保つ — ほとんどのクラッシュバグはマイナーリリースで数日以内にパッチされます
  • 数ヶ月ごとに拡張機能を見直す — 3 ヶ月以上使っていないものは不要な負荷になるので削除する価値があります
  • プロファイルを使う(VS Code 1.75 以降)— プロジェクトの種類ごとに拡張機能セットを分けることで、Go プロジェクトに Python 拡張機能が入らないようにできます
  • 拡張機能を更新する前にチェンジログを読む — コミュニティのバグ報告は不具合のあるリリースの数時間以内に出てくることが多いです
  • 大きな生成フォルダをファイル監視から除外するnode_modulesdist.git、仮想環境など — 問題が起きる前に設定しておく

Related Error Notes