Repository navigation
[Windows/WSL] Local project migration sends Windows paths to Linux app-server; project creation fails #42461
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.831.2377.0
Bundled WSL app-server: codex-cli 0.152.1
What subscription do you have?
ChatGPT Plus
What platform is your computer?
Windows x64 with Ubuntu under WSL. The local Codex agent environment is configured to run inside WSL.
What issue are you seeing?
Creating any new local project fails with the generic desktop notification:
Failed to create project
The desktop log records the underlying failure on every launch:
warning [host-app-server-projects] Local app-server project migration failed errorMessage="Invalid request: AbsolutePathBuf deserialized without a base path"
The legacy project registry remains usable for existing projects, but migration to the app-server project store never completes. The active WSL SQLite state database is fully migrated (52 migrations), contains the projects, project_roots, and project_idempotency_keys tables, but SELECT count(*) FROM projects; returns 0.
What steps can reproduce the bug?
- On Windows, configure Settings → Codex → Agent environment to run Codex inside Ubuntu WSL.
- Have existing local projects whose cached roots use normal Windows representations, for example:
C:\Users\<user>\OneDrive\Documents\...\\wsl$\Ubuntu\home\<user>\dev\...\\wsl.localhost\Ubuntu\home\<user>\dev\...
- Fully exit and restart the desktop app.
- Select + → New project → Local.
- Enter a name, select an existing writable directory, and create the project.
- Observe
Failed to create project. - Inspect the desktop log and observe:
Local app-server project migration failed ... AbsolutePathBuf deserialized without a base path.
We also tested the recovery proposed in #41745:
- Fully closed the desktop app.
- Created a timestamped backup of
%USERPROFILE%\.codex\.codex-global-state.json. - Removed three duplicate logical WSL project aliases while retaining the canonical entries, their IDs, order, and thread assignments.
- Validated the resulting JSON and restarted the app.
That repair completed successfully. The current registry contains eight projects, the removed duplicate IDs remain absent after restart, and project creation still fails with the same AbsolutePathBuf migration error.
What is the expected behavior?
The desktop app should convert cached Windows drive and WSL UNC roots to absolute paths for the selected execution host before calling project/import or project/create. Existing projects should migrate into the app-server SQLite registry, and creating a new local project should succeed.
If a path cannot be converted, the UI should identify the offending project/root instead of displaying only Failed to create project.
Additional information
Feedback ID: no-active-thread-01a065a6-e819-7663-a35b-0c39ddbf1b01
Related issue: #41745
Observed implementation behavior in this packaged build:
- The desktop
host-app-server-projectsmigration iterates the legacy projects and callsproject/import. - Its
writeAppServerProjectpath constructs roots asrootPaths.map(path => ({ path }))without converting them to the app-server host's path format. - With local Codex running inside WSL, the receiving Linux app-server does not consider Windows drive paths or Windows UNC paths absolute.
- The app-server's
AbsolutePathBufdeserializer therefore returnsAbsolutePathBuf deserialized without a base path.
This last section is a source-level diagnostic inference from the packaged JavaScript and the open-source AbsolutePathBuf implementation; it is not a maintainer-confirmed root cause.
No project directories or source files were deleted. Deleting/rebuilding the SQLite databases was not attempted because the observed failure occurs before any project row is inserted.
Activity
github-actions commentedon Sep 3, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
/mnt/d/...toC:\d\..., breaking file tree and Project creation #42211Powered by Codex Action
GhrammR commentedon Sep 3, 2026
Closing as a duplicate of #41463. The current-build details, Feedback ID, and the result showing that successful duplicate-registry cleanup did not resolve the failure have been added to that issue.