Codex CLIに直させた。以下なおしたコーディングエージェントからの報告。
----
Windows版 Codex App の WSL agent が起動しなくなった件。
症状:
Codex App 本体は起動するが、Agent Environment を WSL にすると
Codex failed to start
Unable to locate the Codex CLI binary
Set CODEX_CLI_PATH...
系のエラーで落ちる。
調査結果:
WSL 側の codex CLI、PATH、bubblewrap、WSL2 設定は正常だった。
原因は WSL 側ではなく、Windows Store 版 Codex App OpenAI.Codex 26.609.4994.0 のパッケージ側。
App のログでは、WSL agent 起動時に Windows App が
C:\Program Files\WindowsApps\...\app\resources\codex
C:\Program Files\WindowsApps\...\app\resources\rg
を探して ENOENT で失敗していた。
しかし実際のパッケージ内には
codex.exe
rg.exe
しかなく、WSL 起動経路が期待する拡張子なしの Linux 用 codex / rg が存在しなかった。
その結果、App 側が fallback として
Unable to locate the Codex CLI binary. Set CODEX_CLI_PATH...
を出していた。
つまり CODEX_CLI_PATH は本来ユーザーが普段から設定すべきものではなく、App が同梱 WSL 用 CLI を見つけられない時の回避口。
切り分け:
- WSL は Ubuntu-22.04 / WSL2 で正常
- codex --version は WSL 内で成功
- /usr/local/bin/codex --version も成功
- bubblewrap も導入済み
- Windows App package は Store 署名で Status OK
- Unity プロジェクトや WSL PATH は原因ではなかった
暫定解決策:
グローバル環境変数 CODEX_CLI_PATH を常時設定すると Windows native agent 側に副作用が出る可能性があるため、User/Machine 環境変数には残さない。
代わりに、Codex App を起動する時だけ WSL 用 CLI を渡す専用 PowerShell ランチャーを作る。
例:
$ErrorActionPreference = 'Stop'
$pkg = Get-AppxPackage -Name OpenAI.Codex |
Sort-Object Version -Descending |
Select-Object -First 1
$codexExe = Join-Path
$pkg.InstallLocation 'app\Codex.exe'
$wslBinRoot = Join-Path
$env:USERPROFILE '.codex\bin\wsl'
$codexCli = Get-ChildItem -LiteralPath
$wslBinRoot -Directory |
ForEach-Object { Join-Path $_.FullName 'codex' } |
Where-Object { Test-Path -LiteralPath $_ } |
Sort-Object { (Get-Item -LiteralPath $_).LastWriteTimeUtc } -Descending |
Select-Object -First 1
$env:CODEX_CLI_PATH =
$codexCli
Start-Process -FilePath
$codexExe
これを launch-codex-wsl.ps1 として保存し、ショートカットから起動する。
検証結果:
この方式では App ログ上で
stdio_transport_spawned ... executablePath=...\codex
Codex CLI initialized
app_server_connection ... next=connected
まで進み、WSL agent が起動した。
結論:
少なくともこの環境では、原因は WSL やプロジェクトではなく、Windows Store 版 Codex App 26.609.4994.0 の WSL agent 起動経路のパッケージング不整合と思われる。