Windows Desktop + WSL CUA sidecars should use isolated runtime home while preserving native pipe env
Summary
In Windows Desktop + WSL mode, Computer Use can work locally, but the product-generated CUA/browser-use node_repl sidecar path needs to use an isolated Windows runtime home while preserving the product-created CUA native pipe.
Without that split, the sidecar can use shared Desktop CODEX_HOME=%USERPROFILE%\.codex, create Windows .bat arg0 helpers under the same shared root as the WSL app-server's Linux helpers, and break normal WSL shell/tool execution.
Environment
Sanitized representative setup:
Product: Codex Desktop Windows Store app
Mode: Windows Desktop with app-server running in WSL
Desktop persistent CODEX_HOME: %USERPROFILE%\.codex
WSL view of same home: /mnt/c/Users/<user>/.codex
Computer Use plugin: openai-bundled computer-use
Working local workaround
CUA works locally when the Windows native sidecar is isolated from the shared Desktop home and still receives the native pipe:
[features].computer_use=true
CODEX_ELECTRON_ENABLE_WINDOWS_COMPUTER_USE=1
CODEX_NODE_REPL_PATH=%USERPROFILE%\.codex\node_repl_wsl.sh
The wrapper launches Windows node_repl.exe --disable-sandbox from:
CODEX_HOME=%USERPROFILE%\.codex\chrome-runtime-home
and discovers/forwards:
SKY_CUA_NATIVE_PIPE=1
SKY_CUA_NATIVE_PIPE_DIRECTORY=\\.\pipe\codex-computer-use-<uuid>
Validated local result
Through the supported computer-use-client.mjs bootstrap:
sky.list_apps()passed;sky.list_windows()/get_window(...)/get_window_state(...)passed;- Calculator coordinate-click smoke passed and verified display update;
- a 12-second hold-open smoke stayed responsive and closed cleanly;
- Phone Link app flow reached and generated the QR code after fixing an unrelated local Bluetooth service dependency;
- Photoshop 2026 clean-document UI-only drawing/text stress passed using CUA UI controls only, no scripts/shell/app-native automation/imported images;
sky.close()cleanly ended CUA;- shared
%USERPROFILE%\.codex\tmp\arg0remained WSL/Linux-only; - Windows
.bathelpers appeared only under the isolated runtime home.
Failure modes without the split
Observed failure modes in the same setup:
- Product-generated Windows
node_repl.exe -> codex.exe app-server --listen stdio://sidecar uses sharedCODEX_HOME=%USERPROFILE%\.codex. - That sidecar creates
.bathelpers under shared%USERPROFILE%\.codex\tmp\arg0. - A live WSL app-server/thread remains pinned to a missing Linux helper dir under the same root.
- Normal shell/tool calls fail before
/bin/bashstarts with:
Io(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Other partial-fix failure modes:
- CUA pipe exists but
SKY_CUA_NATIVE_PIPE_DIRECTORYdoes not reachcomputer-use-client.mjs, yieldingComputer Use native pipe path is unavailable. computer-use-client.mjsis missing because bundled marketplace/cache reconcile drift removed or hid thecomputer-useplugin.- A root metadata probe is misleading: the trusted
computer-use-client.mjsbootstrap is the real capability gate.
Expected behavior
For Windows Desktop + WSL:
- product-generated CUA/browser-use
node_replsidecars should use an isolated Windows runtime home, not shared DesktopCODEX_HOME; - the sidecar must still receive
SKY_CUA_NATIVE_PIPE_DIRECTORY; - shared
%USERPROFILE%\.codex\tmp\arg0should remain WSL/Linux-only during WSL app-server sessions, orarg0should be runtime-family namespaced; - no bare/shared-home
node_repl.exe -> codex.exe app-server --listen stdio://sidecar should be spawned for CUA/browser-use; - CUA release gates should validate at least one real action path, not just pipe creation or
list_apps().
Related issues
- #25301: original CUA unavailable /
reason=wsl-disabledreport. - #25317: shared
arg0helper poisoning and stale helper path ENOENT. - #26985: split persistent Desktop home from WSL runtime cache.
- #24268: Windows/WSL bundled plugin path and cache materialization drift.
- #21971: Chrome
node_replWSL path/trust mismatch.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗