🐕

WSL環境でVS Code拡張機能が起動しない問題の完全解決ガイド

に公開

はじめに

VS CodeをWSL(Windows Subsystem for Linux)環境で使用していたところ、突然GitHub CopilotとOpenAI Codexが起動しなくなりました。エラーメッセージを見ても原因が分からず、かなり苦労したので、同じ問題に遭遇した方のために詳細な解決方法をまとめます。

この記事で解決できる問題:

  • WSL環境でVS Code拡張機能が起動しない
  • Error: spawn ENOENT エラーが発生する
  • model gpt-5-codex is not supported エラーが表示される
  • 拡張機能のインストールボタンが複数表示される

症状

実際に遭遇したエラーは以下の通りです:

エラー1: Codex拡張機能の起動失敗

command 'chatgpt.openSidebar' not found

VS Codeの通知パネルには以下のエラーが表示されました:

エラー画像の例

エラー2: Copilot Chatのモデルエラー

{
  "error": {
    "message": "model gpt-5-codex is not supported in this VS Code version. Please update it to version 1.104.1 or newer",
    "code": "model_not_supported_in_version"
  }
}

エラー3: ログに記録されたエラー

VS Codeのログ(~/.vscode-server/data/logs/*/exthost1/remoteexthost.log)を確認すると:

[error] Activating extension openai.chatgpt failed due to an error:
[error] Error: Failed to spawn codex mcp process at /mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-0.4.19-win32-x64/bin/linux-x86_64/codex
[error] Error: spawn /mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-0.4.19-win32-x64/bin/linux-x86_64/codex ENOENT

問題の背景

これらのエラーが発生した経緯:

  1. 以前は正常に動作していた - Copilot、Codexともに問題なく使えていた
  2. Remote-SSHや複数の拡張機能をインストール - 開発環境を整えるため、様々な拡張機能を追加
  3. SSH環境を設定 - リモート開発環境を構築
  4. 突然動かなくなった - 特定の変更を加えた記憶はないのに、気づいたら起動しなくなっていた

まさに「ついさっきまで動いていたのに...」という状況でした。

原因の徹底調査

調査手順

問題を特定するため、以下の順序で調査を行いました:

1. VS Code拡張機能の状態確認

# インストールされている拡張機能のリスト
code --list-extensions --show-versions

# 出力例:
# github.copilot@1.372.0
# github.copilot-chat@0.29.1
# openai.chatgpt@0.4.19

2. エラーログの詳細確認

# 最新のログディレクトリを特定
ls -lt ~/.vscode-server/data/logs/

# Copilot Chatのログを確認
cat ~/.vscode-server/data/logs/20251018T095649/exthost1/GitHub.copilot-chat/GitHub\ Copilot\ Chat.log

ログから以下の重要な情報が得られました:

[info] Logged in as YamauchiTakafumi
[info] Got Copilot token for YamauchiTakafumi
[info] copilot token chat_enabled: true, sku: free_educational_quota

認証自体は成功していることが確認できました。

[error] Request Failed: 400 {"error":{"message":"model gpt-5-codex is not supported in this VS Code version. Please update it to version 1.104.1 or newer"}}

VS Codeのバージョンが古いことが判明。

3. VS Codeバージョンの確認

code --version
# 1.102.3
# 488a1f239235055e34e673291fb8d8c810886f81
# x64

現在: 1.102.3
必要: 1.104.1以降

4. 拡張機能のインストール場所を調査

ここが最も重要な発見でした:

# WSL側の拡張機能
ls -la ~/.vscode-server/extensions/ | grep -E "openai|copilot"

# 出力:
# drwxr-xr-x  5 y y  4096 Oct  9 02:52 github.copilot-1.372.0
# drwxr-xr-x  6 y y  4096 Oct  9 02:52 github.copilot-chat-0.29.1
# drwxr-xr-x  6 y y  4096 Oct  9 03:37 openai.chatgpt-0.4.19-linux-x64

# Windows側の拡張機能
ls -la /mnt/c/Users/yt/.vscode/extensions/ | grep -E "openai|copilot"

# 出力:
# drwxrwxrwx 1 y y  4096 Sep 19 10:08 github.copilot-1.372.0
# drwxrwxrwx 1 y y  4096 Aug  3 17:00 github.copilot-chat-0.29.1
# drwxrwxrwx 1 y y  4096 Oct  7 21:51 openai.chatgpt-0.4.19-win32-x64

重大な発見: 同じ拡張機能がWindows側とWSL側の両方にインストールされていました!

5. プラットフォームの確認

# Windows側の拡張機能(問題あり)
cat /mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-0.4.19-win32-x64/package.json | grep targetPlatform

# 出力:
# "targetPlatform": "win32-x64"

# WSL側の拡張機能(正常)
cat ~/.vscode-server/extensions/openai.chatgpt-0.4.19-linux-x64/package.json | grep targetPlatform

# 出力:
# "targetPlatform": "linux-x64"

6. エラーメッセージの再解釈

エラーログをもう一度見ると:

Error: Failed to spawn codex mcp process at
/mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-0.4.19-win32-x64/bin/linux-x86_64/codex

VS CodeはWindows側の拡張機能(/mnt/c/Users/yt/.vscode/extensions/...)を読み込もうとしていますが、そのディレクトリ内でLinux用のバイナリbin/linux-x86_64/codex)を探しています。

しかし、Windows版の拡張機能には当然Linux用のバイナリは存在しません:

ls /mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-0.4.19-win32-x64/bin/

# 出力:
# windows-x86_64/  # ← Windowsバイナリのみ存在

根本原因の特定

調査の結果、3つの独立した問題が明らかになりました:

🔴 問題1: 拡張機能のプラットフォーム混在

問題の詳細

  • Windows側: openai.chatgpt-0.4.19-win32-x64 がインストール済み
  • WSL側: openai.chatgpt-0.4.19-linux-x64 がインストール済み

VS CodeがWSL環境で実行される際、優先的にWindows側の拡張機能を読み込もうとすることがあります。しかし、Windows版(win32-x64)にはLinux用のバイナリが含まれていないため、起動に失敗します。

なぜこうなったか

VS Codeで拡張機能をインストールする際、以下の2種類のボタンが表示されます:

  • "Install" - Windows側にインストール
  • "Install in WSL: Ubuntu" - WSL側にインストール

インストールボタンの例

誤って "Install" をクリックすると、WSL環境で作業していてもWindows側にインストールされてしまいます。

影響を受ける拡張機能

以下の拡張機能が重複してインストールされていました:

  1. openai.chatgpt (45MB)
  2. github.copilot (69MB)
  3. github.copilot-chat (28MB)

合計: 約142MB の無駄な領域を消費

🔴 問題2: VS Codeバージョンの非互換性

問題の詳細

GitHub Copilot Chatが使用しようとしているgpt-5-codexモデルは、VS Code 1.104.1以降でのみサポートされています。

  • 現在のバージョン: 1.102.3 (2025年6月リリース)
  • 必要なバージョン: 1.104.1以降 (2025年9月11日リリース)

エラーの内容

{
  "error": {
    "message": "model gpt-5-codex is not supported in this VS Code version. Please update it to version 1.104.1 or newer",
    "code": "model_not_supported_in_version"
  }
}

このエラーは、拡張機能自体は起動できても、最新のAIモデルを使用できない状態を示しています。

🔴 問題3: 拡張機能の読み込み優先順位

問題の詳細

VS CodeがWSL環境で実行される際、拡張機能を以下の順序で検索します:

  1. WSL専用の拡張機能パス (~/.vscode-server/extensions/)
  2. Windows側の拡張機能パス (/mnt/c/Users/yt/.vscode/extensions/)

しかし、特定の条件下(Remote-WSL拡張機能の設定など)では、Windows側のパスが優先されることがあります。

実際の動作

エラーログから、VS Codeは以下のパスの拡張機能を実行しようとしていました:

/mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-0.4.19-win32-x64/out/extension.js

これはWindows側のパスです。

解決方法

ステップ1: Windows側の重複拡張機能を削除

1-1. 削除前の確認

まず、どの拡張機能が重複しているか確認します:

# Windows側の拡張機能を確認
ls -la /mnt/c/Users/yt/.vscode/extensions/ | grep -E "openai|copilot"

# サイズを確認(オプション)
du -sh /mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-*
du -sh /mnt/c/Users/yt/.vscode/extensions/github.copilot-*

1-2. VS Codeを終了

重要: 削除前に、VS Codeのすべてのウィンドウを閉じてください。

# VS Codeのプロセスが残っていないか確認
ps aux | grep -i "code\|vscode" | grep -v grep

プロセスが残っている場合は、すべて終了させます。

1-3. Windows側の拡張機能を削除

# OpenAI Codex (Windows版) を削除
rm -rf /mnt/c/Users/yt/.vscode/extensions/openai.chatgpt-*-win32-x64

# GitHub Copilot (Windows版) を削除
rm -rf /mnt/c/Users/yt/.vscode/extensions/github.copilot-1.372.0
rm -rf /mnt/c/Users/yt/.vscode/extensions/github.copilot-chat-0.29.1

1-4. 削除の確認

# Windows側に残っていないことを確認
ls /mnt/c/Users/yt/.vscode/extensions/ | grep -E "openai|copilot"
# 何も出力されなければOK

# WSL側は残っていることを確認
code --list-extensions | grep -E "openai|copilot"
# github.copilot@1.372.0
# github.copilot-chat@0.29.1
# openai.chatgpt@0.4.19

ステップ2: VS Codeのアップデート

2-1. 現在のバージョン確認

code --version
# 1.102.3 の場合はアップデートが必要

2-2. アップデート方法

方法1: 自動アップデート(推奨)

  1. VS Codeを起動
  2. 左下の歯車アイコンをクリック
  3. "Check for Updates" を選択
  4. 自動的に最新版がダウンロード・インストールされます

方法2: 手動ダウンロード

  1. https://code.visualstudio.com/download にアクセス
  2. Windows版(User Installer - x64)をダウンロード
  3. インストーラーを実行

2-3. アップデート後の確認

code --version
# 1.104.0 以降であればOK

ステップ3: VS Code設定の最適化

拡張機能が正しく動作するように、VS Codeの設定を最適化します。

3-1. settings.jsonの編集

WSL側の設定ファイルを編集します:

code ~/.vscode-server/data/User/settings.json

以下の設定を追加:

{
  // 既存の設定...

  // WSL拡張機能管理の設定
  "remote.extensionKind": {
    "openai.chatgpt": ["workspace"],
    "github.copilot": ["workspace"],
    "github.copilot-chat": ["workspace"]
  },

  // 拡張機能の推奨設定
  "extensions.autoCheckUpdates": true,
  "extensions.autoUpdate": true,

  // WSL環境での動作を明示
  "terminal.integrated.defaultProfile.linux": "bash"
}

設定の説明:

  • remote.extensionKind: 拡張機能をWSL側(workspace)で実行することを明示
  • extensions.autoCheckUpdates: 拡張機能の更新を自動チェック
  • extensions.autoUpdate: 拡張機能を自動更新

ステップ4: VS Codeの再起動

すべての設定を反映させるため、VS Codeを完全に再起動します:

  1. すべてのVS Codeウィンドウを閉じる
  2. WSL環境で再度VS Codeを開く
# WSL環境でVS Codeを開く
code .

ステップ5: 動作確認

5-1. 拡張機能の起動確認

  1. OpenAI Codexのサイドバーアイコンをクリック
  2. GitHub Copilot Chatを開く(Ctrl+Shift+P → "Copilot: Open Chat")

5-2. エラーログの確認

# 最新のログを確認
tail -50 ~/.vscode-server/data/logs/$(ls -t ~/.vscode-server/data/logs/ | head -1)/exthost1/remoteexthost.log | grep -i error

エラーが表示されなければ成功です!

5-3. 機能テスト

実際にCopilotやCodexを使って、コード補完や質問応答が動作することを確認します。

再発防止策

同じ問題が再び発生しないように、以下の予防策を実装しました。

1. 自動チェックスクリプトの作成

拡張機能の重複を自動的に検出するスクリプトを作成します。

スクリプトの作成

# スクリプトファイルを作成
nano ~/bin/check-vscode-extensions.sh

以下の内容を貼り付けます:

#!/bin/bash

# VS Code拡張機能の重複チェックスクリプト
# WSL環境で、Windows側とWSL側の拡張機能の競合を検出します

set -e

# カラー出力
RED='\033[0;31m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}=== VS Code 拡張機能 重複チェック ===${NC}"
echo ""

# チェック対象の拡張機能リスト
CRITICAL_EXTENSIONS=(
    "openai.chatgpt"
    "github.copilot"
    "github.copilot-chat"
)

# Windows側の拡張機能パス
WINDOWS_EXT_PATH="/mnt/c/Users/$USER/.vscode/extensions"
# WSL側の拡張機能パス
WSL_EXT_PATH="$HOME/.vscode-server/extensions"

# 問題カウンター
ISSUES_FOUND=0

echo -e "${BLUE}チェック1: Windows側の拡張機能を確認${NC}"
echo "パス: $WINDOWS_EXT_PATH"
echo ""

for ext in "${CRITICAL_EXTENSIONS[@]}"; do
    # Windows側で該当拡張機能を検索
    windows_matches=$(find "$WINDOWS_EXT_PATH" -maxdepth 1 -type d -name "${ext}-*" 2>/dev/null || true)

    if [ -n "$windows_matches" ]; then
        echo -e "${RED}⚠️  警告: Windows側に '${ext}' が見つかりました:${NC}"
        echo "$windows_matches" | while read -r match; do
            echo -e "  ${YELLOW}$(basename "$match")${NC}"

            # プラットフォームをチェック
            package_json="$match/package.json"
            if [ -f "$package_json" ]; then
                platform=$(grep -o '"targetPlatform"[[:space:]]*:[[:space:]]*"[^"]*"' "$package_json" 2>/dev/null | cut -d'"' -f4 || echo "不明")
                if [[ "$platform" == "win32"* ]]; then
                    echo -e "    ${RED}プラットフォーム: $platform (WSL環境では動作しません!)${NC}"
                else
                    echo -e "    プラットフォーム: $platform"
                fi
            fi
        done
        ((ISSUES_FOUND++))
        echo ""
    else
        echo -e "${GREEN}✓ '${ext}' はWindows側に見つかりません (OK)${NC}"
    fi
done

echo ""
echo -e "${BLUE}チェック2: WSL側の拡張機能を確認${NC}"
echo "パス: $WSL_EXT_PATH"
echo ""

for ext in "${CRITICAL_EXTENSIONS[@]}"; do
    # WSL側で該当拡張機能を検索
    wsl_matches=$(find "$WSL_EXT_PATH" -maxdepth 1 -type d -name "${ext}-*" 2>/dev/null || true)

    if [ -n "$wsl_matches" ]; then
        echo -e "${GREEN}✓ '${ext}' がWSL側に見つかりました:${NC}"
        echo "$wsl_matches" | while read -r match; do
            echo -e "  → $(basename "$match")"

            # プラットフォームをチェック
            package_json="$match/package.json"
            if [ -f "$package_json" ]; then
                platform=$(grep -o '"targetPlatform"[[:space:]]*:[[:space:]]*"[^"]*"' "$package_json" 2>/dev/null | cut -d'"' -f4 || echo "不明")
                if [[ "$platform" == "linux"* ]]; then
                    echo -e "    ${GREEN}プラットフォーム: $platform (OK)${NC}"
                else
                    echo -e "    ${YELLOW}プラットフォーム: $platform (警告: Linux用ではありません)${NC}"
                fi
            fi
        done
    else
        echo -e "${YELLOW}⚠️  '${ext}' がWSL側に見つかりません${NC}"
    fi
    echo ""
done

echo ""
echo -e "${BLUE}=== サマリー ===${NC}"

if [ $ISSUES_FOUND -gt 0 ]; then
    echo -e "${RED}⚠️  ${ISSUES_FOUND}個の問題が見つかりました${NC}"
    echo ""
    echo -e "${YELLOW}推奨対応:${NC}"
    echo "1. Windows側の拡張機能を削除してください"
    echo "2. WSL環境では、WSL側の拡張機能のみを使用してください"
    echo ""
    echo -e "${YELLOW}削除コマンド例:${NC}"
    for ext in "${CRITICAL_EXTENSIONS[@]}"; do
        windows_matches=$(find "$WINDOWS_EXT_PATH" -maxdepth 1 -type d -name "${ext}-*" 2>/dev/null || true)
        if [ -n "$windows_matches" ]; then
            echo "$windows_matches" | while read -r match; do
                echo "  rm -rf \"$match\""
            done
        fi
    done
    exit 1
else
    echo -e "${GREEN}✓ 問題は見つかりませんでした。すべて正常です!${NC}"
    exit 0
fi

スクリプトに実行権限を付与

chmod +x ~/bin/check-vscode-extensions.sh

# 改行コードを修正(必要に応じて)
sed -i 's/\r$//' ~/bin/check-vscode-extensions.sh

スクリプトの実行

~/bin/check-vscode-extensions.sh

実行結果の例(正常な場合):

=== VS Code 拡張機能 重複チェック ===

チェック1: Windows側の拡張機能を確認
パス: /mnt/c/Users/yt/.vscode/extensions

✓ 'openai.chatgpt' はWindows側に見つかりません (OK)
✓ 'github.copilot' はWindows側に見つかりません (OK)
✓ 'github.copilot-chat' はWindows側に見つかりません (OK)

チェック2: WSL側の拡張機能を確認
パス: /home/y/.vscode-server/extensions

✓ 'openai.chatgpt' がWSL側に見つかりました:
  → openai.chatgpt-0.4.19-linux-x64
    プラットフォーム: linux-x64 (OK)

✓ 'github.copilot' がWSL側に見つかりました:
  → github.copilot-1.372.0

=== サマリー ===
✓ 問題は見つかりませんでした。すべて正常です!

2. 週次自動チェックの設定

.bashrcに自動チェック機能を追加します。

# .bashrcを編集
nano ~/.bashrc

ファイルの末尾に以下を追加:

# VS Code 拡張機能の重複チェック(週次で実行)
# 最後にチェックした日付を記録するファイル
VSCODE_CHECK_FILE="$HOME/.vscode_ext_check"

# 7日以上経過している場合のみチェック
if [ -f "$HOME/bin/check-vscode-extensions.sh" ]; then
    if [ ! -f "$VSCODE_CHECK_FILE" ] || [ $(find "$VSCODE_CHECK_FILE" -mtime +7 2>/dev/null | wc -l) -gt 0 ]; then
        # VS Code環境でのみチェックを実行(VSCODE_IPC_HOOK_CLI変数が設定されている場合)
        if [ -n "${VSCODE_IPC_HOOK_CLI:-}" ]; then
            echo "🔍 VS Code拡張機能の週次チェックを実行中..."
            if "$HOME/bin/check-vscode-extensions.sh" > /dev/null 2>&1; then
                touch "$VSCODE_CHECK_FILE"
            else
                echo "⚠️  VS Code拡張機能に問題が検出されました。詳細を確認してください:"
                echo "    ~/bin/check-vscode-extensions.sh"
            fi
        fi
    fi
fi

これにより、VS Code環境を開いた際に、週に1回自動的にチェックが実行されます。

3. 拡張機能インストールのベストプラクティス

正しいインストール手順

WSL環境で拡張機能をインストールする際は、以下の手順を必ず守ってください:

  1. WSL環境であることを確認

    • VS Codeの左下に「WSL: Ubuntu」と表示されていることを確認
  2. 拡張機能を検索

    • 拡張機能タブを開く(Ctrl+Shift+X)
    • インストールしたい拡張機能を検索
  3. 正しいボタンをクリック

    • "Install in WSL: Ubuntu" をクリック
    • "Install" だけのボタンはクリックしない

正しいインストールボタン

  1. インストール後に再起動
    • VS Codeを再起動して拡張機能を有効化

Windows側とWSL側の使い分け

環境 インストールする拡張機能
Windows側 UI/テーマ関連、Remote-WSL、Remote-SSH など
WSL側 開発ツール(Copilot、Codex、Pylance、ESLintなど)

基本的に、コードやファイルシステムに直接アクセスする拡張機能は、WSL側にインストールしてください。

まとめ

問題の本質

WSL環境でVS Code拡張機能が動作しない問題の本質は:

  1. プラットフォームの混在 - Windows版とLinux版の拡張機能が共存
  2. バージョンの非互換性 - VS Codeが古く、最新機能に対応していない
  3. 読み込み優先順位 - VS Codeが誤ってWindows側の拡張機能を読み込む

これらの問題は、拡張機能のインストール時に正しいボタンを選択しなかったことが原因でした。

解決のポイント

Windows側の重複拡張機能を完全に削除する
VS Codeを最新版(1.104以降)にアップデートする
VS Code設定で拡張機能の動作を明示する
自動チェックスクリプトで定期的に監視する

今後の注意点

  • 拡張機能をインストールする際は、必ず "Install in WSL" を選択
  • 定期的にチェックスクリプトを実行(週次で自動実行)
  • VS Codeを常に最新版に保つ

参考情報

便利なコマンド

# 拡張機能のリスト確認
code --list-extensions --show-versions

# VS Codeバージョン確認
code --version

# 重複チェック
~/bin/check-vscode-extensions.sh

# ログの確認
tail -100 ~/.vscode-server/data/logs/$(ls -t ~/.vscode-server/data/logs/ | head -1)/exthost1/remoteexthost.log

関連リンク

おわりに

この問題の解決には、かなりの時間がかかりました。エラーメッセージだけでは原因が特定できず、ログの詳細な調査とファイルシステムの確認が必要でした。

同じ問題に遭遇した方の助けになれば幸いです。また、予防策を実装することで、今後同様の問題が発生するリスクを大幅に減らすことができます。

何か質問や追加の情報があれば、コメントでお知らせください!


この記事が役に立った場合は、ぜひいいね👍をお願いします!

Discussion