OpenAI Codex (WSL2/Ubuntu) トラブルシュート記録

日付: 2026-05-07
環境: Windows 10 / WSL2 Ubuntu / Node.js v24.12.0 (nvm管理)


症状

WSL2 Ubuntu のターミナルで codex を実行すると以下のエラーが発生。

Error: Missing optional dependency @openai/codex-linux-x64.
Reinstall Codex: npm install -g @openai/codex@latest
  at file:///mnt/c/Users/{username}/AppData/Roaming/npm/node_modules/@openai/codex/bin/codex.js:100:11

調査

コマンドの所在確認

which codex
# → /mnt/c/Users/{username}/AppData/Roaming/npm/codex  (当初はWindows側)

type -a codex
# → codex is /mnt/c/Users/{username}/AppData/Roaming/npm/codex

which npm
# → /home/c2kp/.nvm/versions/node/v24.12.0/bin/npm  (Linux側)

which node
# → /home/c2kp/.nvm/versions/node/v24.12.0/bin/node  (Linux側)

判明した構造

ツールインストール場所WSLから動作
claudeWindows側 npm✅ 動作
geminiWindows側 npm✅ 動作
codexWindows側 npm のみ❌ エラー

原因分析

なぜ claude / gemini は動くのか

これらは純粋な JavaScript のみで実装されており、プラットフォーム固有のネイティブバイナリに依存しない。
そのため Windows 側でインストールされていても WSL から /mnt/c/... 経由で問題なく実行できる。

なぜ codex だけ失敗するのか

@openai/codex は内部でプラットフォーム固有のネイティブバイナリoptionalDependencies として要求する。

インストール環境インストールされるネイティブバイナリ
Windows で npm install@openai/codex-win32-x64
Linux で npm install@openai/codex-linux-x64

Windows 側でインストールされた codex は @openai/codex-win32-x64 しか持っていないため、
WSL (Linux) から呼び出すと Linux 用バイナリが見つからずエラーになる。


解決手順

Step 1: WSL Linux 側に codex をインストール

npm install -g @openai/codex@latest

nvm 管理下の npm を使っているため、Linux 側の bin に配置される:
/home/c2kp/.nvm/versions/node/v24.12.0/bin/codex

Step 2: シェルのハッシュキャッシュをクリア

インストール後も codex コマンドが Windows 側を参照し続けた。
原因はシェルが古いキャッシュ(Windows 側のパス)を保持していたため。

hash -r

Step 3: 動作確認

type -a codex
# codex is /home/c2kp/.nvm/versions/node/v24.12.0/bin/codex  ← Linux側(先頭)
# codex is /mnt/c/Users/{username}/AppData/Roaming/npm/codex ← Windows側(後)

codex
# → OpenAI Codex (v0.128.0) が起動、model: gpt-5.5

Linux 側が type -a の先頭に来ることで、シェルは自動的に Linux 側を優先して実行する。


補足:bubblewrap の警告

起動時に以下の警告が表示される場合がある:

⚠ Codex could not find bubblewrap on PATH.
  Install bubblewrap with your OS package manager.

サンドボックス機能を有効にするには:

sudo apt install bubblewrap

必須ではないが、セキュリティ面で推奨。


結論

  • Windows 側と Linux 側の codex は共存可能
  • WSL では $PATH の順序で優先される側が決まる(nvm の bin が先頭なら Linux 側が優先)
  • hash -r はインストール後にコマンドの参照先がおかしい場合の定番対処
  • claude / gemini は純粋 JS のため Windows 側でも WSL から動作するが、codex はネイティブバイナリ依存のため Linux 側へのインストールが必須