[Linux][WSL2] Desktop app rewrites /mnt project roots to Windows drive paths and marks them missing
What version of the Codex App are you using (From “About Codex” dialog)?
26.803.81509 (Ubuntu .deb package)
Bundled app-server: codex-cli 0.147.0-alpha.6.6
What subscription do you have?
Plus; but this appears independent of subscription.
What platform is your computer?
- Windows 10 Build 19045
- Ubuntu 24.04.4 LTS under WSL2/WSLg
What issue are you seeing?
In the native Linux desktop app running inside WSL2, every project rooted on a Windows-mounted drive is rewritten from its valid Linux path to a Windows drive path in the UI and then treated as missing.
For example, the persisted project root is correct:
/mnt/d/xxx
but the renderer receives and displays:
D:\xxx
The project reports “Project folder was deleted or moved,” and Start new chat in xxx is disabled. The same occurs for other projects under mounted drives. Projects under /home remain usable.
What steps can reproduce the bug?
- Install the Linux
.debinside Ubuntu 24.04 on WSL2 and launch it through WSLg. - Add a local project whose folder is under
/mnt/<drive>/xxx. - Restart the app or reopen the project sidebar.
- Observe that the project path is shown as
<drive>:\xxxand starting a new chat is disabled because the folder is considered missing.
What is the expected behavior?
A native Linux process should preserve /mnt/<drive>/xxx as a Linux path for display and filesystem checks. Existing mounted folders should remain available for new project chats.
Additional information
The persisted state is not the source of the corruption: .codex-global-state.json contains /mnt/<drive>/xxx.
The conversion occurs in the Electron main bundle when getLocalProjectsForRenderer() maps local roots through the desktop/WSL path converter. With WSL-path mode false on the native Linux process, /mnt/<drive>/xxx is converted to <drive>:\xxx. The subsequent existence check uses the native Linux execution host and therefore cannot stat that Windows path.
The bundled app-server itself can successfully resolve fs/getMetadata for /mnt/<drive>/xxx.
As an isolated verification, replacing only the local-project renderer conversion with an identity mapping preserved the /mnt/<drive>/xxx paths and immediately enabled Start new chat for all affected projects. No app-server or persisted-state change was required.