Repository navigation
[Windows][WSL] Codex Desktop rewrites /home project paths as C:\home, loses project chat associations, and reports valid working directories as missing #28094
Description
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.609.41114 • Released Jun 12, 2026
What subscription do you have?
ChatGPT Plus
What platform is your computer?
Windows 11 with WSL installed
What issue are you seeing?
Summary
After updating the Codex Windows desktop app on June 13, 2026, Codex Desktop stopped handling WSL project paths correctly on one Windows machine.
A project located at:
/home/brett/projects/ssus828
is being stored or interpreted by parts of the desktop app as:
C:\home\brett\projects\ssus828
This invalid path causes all of the following:
Existing project conversations no longer appear beneath their projects.
Projects display “No chats” despite the session transcript files still existing locally.
Threads display: “Current working directory missing — This chat’s working directory no longer exists.”
New desktop conversations inherit the same invalid working-directory state.
The integrated WSL terminal initially attempts:
cd 'C:\home\brett\projects\ssus828'
and fails with “No such file or directory.”
Manually running:
cd /home/brett/projects/ssus828
in that same terminal succeeds.
Native Codex CLI running directly inside WSL works correctly in the same repository.
I updated Codex on two other Windows machines on the same day without this problem, so this may involve a machine-specific state migration or Windows/WSL path normalization failure.
Environment
Windows 11
WSL 2
Ubuntu 24.04
Codex Windows app package observed in:
OpenAI.Codex_26.609.4994.0_x64__2p2nqsd0c76g0
Codex CLI: 0.139.0
Desktop setting:
Agent environment: Windows Subsystem for Linux
Integrated terminal shell: WSL
Example repository:
/home/brett/projects/ssus828
Repository added through:
\wsl$\Ubuntu\home\brett\projects\ssus828
What steps can reproduce the bug?
Install or update the Codex Windows desktop app.
Set Agent environment to Windows Subsystem for Linux.
Set Integrated terminal shell to WSL.
Restart the app.
Add an existing WSL project through:
\wsl$\Ubuntu\home\brett\projects\ssus828
Start a new conversation in that project.
Ask Codex to run pwd and git status.
Open the integrated terminal.
Actual behavior
The desktop conversation may execute commands in the correct WSL repository, but the app’s thread metadata and terminal initialization use:
C:\home\brett\projects\ssus828
The interface continues to show:
“Current working directory missing — This chat’s working directory no longer exists.”
The project sidebar continues to show “No chats.”
The integrated terminal records:
cd 'C:\home\brett\projects\ssus828'
followed by:
-bash: cd: C:\home\brett\projects\ssus828: No such file or directory
Manually entering:
cd /home/brett/projects/ssus828
works immediately.
What is the expected behavior?
Codex Desktop should preserve the WSL path:
/home/brett/projects/ssus828
The project should:
Open in the actual WSL directory.
Initialize its terminal in that directory.
Associate new and existing threads with that project.
Display existing project conversations.
Not report an existing WSL directory as missing.
History and session impact
Before the update, several active projects had ongoing desktop conversations.
The local Codex state contained:
43 active session transcript files
4 archived session transcript files
Those transcript files were preserved and backed up. They do not appear deleted, but the desktop app no longer displays or associates them correctly with their projects.
Troubleshooting already completed
The following did not resolve the desktop path problem:
Fully restarted Windows.
Removed and re-added the WSL project.
Uninstalled the Microsoft Store Codex app.
Quarantined the entire %USERPROFILE%.codex directory.
Reinstalled Codex from the Microsoft Store with completely clean state.
Installed the standalone Windows Codex CLI.
Set CODEX_CLI_PATH to:
C:\Users\brett\AppData\Local\Programs\OpenAI\Codex\bin\codex.exe
Restarted Windows again.
Reconfigured the clean app for WSL.
Created a completely new desktop conversation.
Installed Codex CLI 0.139.0 natively inside Ubuntu WSL.
Installed bubblewrap.
The native Linux CLI works correctly:
pwd returns /home/brett/projects/ssus828
git status works
The correct repository files are visible
No Windows path translation occurs
The issue appears isolated to the Windows desktop app’s WSL project/thread path handling.
Additional information
Additional startup symptom
Immediately after the desktop update, the app also failed to start with:
“Unable to locate the Codex CLI binary. Set CODEX_CLI_PATH or ensure the Electron resources include bin/codex.”
Installing the standalone Windows CLI and setting CODEX_CLI_PATH allowed the desktop app to launch again, but did not resolve the invalid C:\home... project path.
Severity
Blocking.
I was midstream in several active projects. The repositories and transcript files remain available, but the desktop application can no longer reliably reopen the conversations, associate them with their projects, or maintain a valid WSL working directory.
Regression information
The same Codex update was installed successfully on two other machines on June 13, 2026. Only this machine reproduces the failure.
Attachments
I can provide:
Screenshot of the initial missing CLI binary error.
Screenshot showing “Current working directory missing.”
Screenshot showing the invalid C:\home\brett\projects\ssus828 terminal command.
Screenshot showing the same project working correctly through the native WSL CLI.
A Codex feedback session ID.
Sanitized session metadata or logs if requested.
Feedback session ID
019ec1f5-6fba-7620-8e89-0abf8ebaa3b4
Activity
github-actions commentedon Jun 13, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
bmccall17 commentedon Jun 13, 2026
Update: reproduced on a second machine
This issue is now reproducible on a second Windows workstation after installing the same Codex update.
The second machine previously had a working Codex Desktop + WSL workflow and active project conversations. After the update, it now shows the same behavior:
/home/<user>/...are interpreted as invalid paths such asC:\home\<user>\..../home/...path works.This makes the issue unlikely to be isolated corruption on one computer. It appears to be a repeatable regression introduced by the current Windows Codex Desktop update for WSL-backed projects.
Related existing reports:
C:\home\...Severity remains blocking because multiple active development machines and midstream project conversations are affected.
AnhLead commentedon Jun 13, 2026
Same issue, issue started today
kovachinfo commentedon Jun 14, 2026
same issue there last 18 hrs
Rogier1977 commentedon Jun 14, 2026
I filed a related issue with additional crash/context details and in-app diagnostics: #28172.
My case appears to match this issue:
/home/rgkoppen/codex-work/central-station-auditC:\home\rgkoppen\codex-work\central-station-auditAdditional trigger in my case:
In-app feedback ID:
no-active-thread-019ec53c-217c-7c13-99c0-665ce74256abThis may help correlate logs/diagnostics with the WSL path/worktree/session metadata issue described here.
aidev2007 commentedon Jun 14, 2026
Comment for openai/codex issue #28094
I am seeing what appears to be the same regression on another Windows + WSL setup.
Related issue:
#28094
Environment
OpenAI.Codex_26.609.4994.0_x64__2p2nqsd0c76g026.609.4994.00.139.0Windows Subsystem for LinuxWSL/home/<user>/<project>\\wsl.localhost\Ubuntu-24.04\home\<user>\<project>\\wsl$\Ubuntu-24.04\home\<user>\<project>What happens
After the Codex Windows Desktop update on 2026-06-14, new local Desktop chats for this WSL project are stored with Windows-style metadata:
The actual project exists and works correctly in WSL:
From WSL:
However, the Desktop thread/session metadata and project association still use:
User-visible impact
%USERPROFILE%\.codex\sessions.session_index.jsonlcontains the chat ids, so the chats can appear in search.Local state evidence
The global Desktop state contains the correct WSL UNC project root:
But
config.tomlgets regenerated with:And
state_5.sqlite/ rolloutsession_metacontain:The rollout file also starts with:
{ "type": "session_meta", "payload": { "cwd": "C:\\home\\<user>\\<project>", "originator": "Codex Desktop", "cli_version": "0.139.0", "source": "vscode" } }Cleanup attempts already tried
session_index.jsonl.state_5.sqlite..codexfolders.After cleanup/reinstall, new chats still reproduced the same metadata pattern:
Workaround
A Windows junction was created so the invalid Windows path resolves:
where
C:\dev2itself points to the WSL home directory through\\wsl.localhost\Ubuntu-24.04\home\<user>.This reduces the "working directory missing" symptom, but it does not fix the underlying issue: Desktop still stores and associates the thread using
C:\home\<user>\<project>instead of the WSL project path, and the project page still does not show the chats.Expected behavior
For a WSL project opened from:
with Agent environment set to WSL, Desktop should preserve or canonicalize the project/thread cwd as:
or otherwise consistently associate the thread with the saved WSL project root.
It should not convert
/home/<user>/<project>to:and project chats should remain visible under the project.
yunyunFlow commentedon Jun 14, 2026
Same issues!Can not believe how many bugs after updating.
yunyunFlow commentedon Jun 14, 2026
A temporary workaround that helped on my Windows + WSL setup:
%USERPROFILE%\.codex..codexfolder. In particular, avoid restoring oldstate_5.sqlite*,.codex-global-state.json,config.toml, plugin cache, and runtime/temp folders.app\resources\codex.exeexists but fails withAccess is denied, copy it to a user-writable path such as%LOCALAPPDATA%\OpenAI\Codex\cli-<version>\codex.exe, then setCODEX_CLI_PATHto that copied executable.\\wsl.localhost\<Distro>\home\<user>\<project>Avoid mixing
\\wsl$,/home/...,C:\home\..., and\\?\UNC\...in the Desktop project state.pwd,uname -a, and a project-file check.Do not trust the UI setting alone, because the app may still start a hybrid Windows/WSL session.
sessions,archived_sessions,attachments, andsession_index.jsonl.plugin/listorskills/listremains extremely slow in WSL mode, try disabling plugins temporarily or renaming/clearing.codex\.tmp\pluginsafter closing Codex.This is not a real fix, just a recovery strategy to avoid re-importing corrupted path/session metadata. The underlying issue still seems to be a combination of WindowsApps CLI execution, WSL binary resolution, path canonicalization, and plugin cache scanning through
/mnt/c.slugmandrew commentedon Jun 15, 2026
+1 Here. Genuinely shocking that something like this has come in after an update. The WSL integration is bad enough as it is.
Mistaxe commentedon Jun 15, 2026
I'm having the same problem as of June 13,2026. I am unable to use Codex Desktop as a result. I have tried all of the recommended solutions here to no avail.
anonymuse commentedon Jun 15, 2026
Having the same issue here. Codex works fine within WSL via CLI and inside VS Code; broken within the Windows app.
cowboycodr commentedon Jun 15, 2026
Same problem. Embarrassing that this was both introduced after an update and wasn't immediately resolved.
RSchmeitz commentedon Jun 15, 2026
Same problem. Hope they resolve this asap
AnhLead commentedon Jun 16, 2026
Temporary fix.
Go to Microsoft Store -> Profile -> Apps -> turn off auto update
Then go to
https://codex-190977.en.uptodown.com/windows/versions
Download 26.601.2237.0 (3rd June)
Now open codex you should see all chat history again.
slugmandrew commentedon Jun 17, 2026
I have switched to Claude Code because of this. Just sayin'. The WSL integration was already extremely shaky, with the agent losing access to the patch tool and various other things multiple times per day, requiring a full restart of Codex. This bug now just makes the whole situation untenable. Sorry, hope you can win me back one day.
croc81 commentedon Jun 17, 2026
I can confirm that this is a real issue on Windows 11 with WSL integration.
For me, the Windows Codex app has been effectively unusable with WSL for a while. When the agent is running in a WSL/bash environment, it appears to mix Windows and Linux path handling. For example, Codex may try to use Windows-style paths or Windows-side assumptions inside the WSL terminal, which breaks normal WSL workflows.
Interestingly, even the Windows Codex app itself recognized the problem when I gave it a screenshot of a bash terminal window showing the issue. It identified that Codex was trying to use the Windows directory structure in a WSL environment.
This is the first time I have had major problems with WSL integration in Codex. My current workaround is to run Codex directly inside WSL instead of relying on the Windows desktop app’s WSL integration.
In my opinion, this should be treated as a high-priority bug, because many Windows developers use WSL as their main development environment. If the Windows app cannot reliably separate Windows paths/configuration from the WSL runtime, the WSL integration becomes very difficult to use in real projects.
mxmerce commentedon Jun 17, 2026
I’m seeing what looks like the same class of bug on Windows Codex Desktop with WSL-backed projects.
Environment:
26.611.8273.0\\wsl$\Ubuntu\home\<user>\dev\<repo>/\\wsl.localhost\Ubuntu\home\<user>\dev\<repo>Additional symptom that may help narrow it down:
This does not appear to be data loss. The local session files and thread rows are still present, and the chronological view can still surface the chats. The failure seems specific to project grouping / workspace association for WSL-backed projects.
Relevant log signatures from the Desktop app around the focus/project refresh:
I also saw repeated
git-init-watcherfailures against a rewritten Windows-looking path, e.g.:Things that did not resolve it:
AppData\Local\Packages\OpenAI.Codex_...\LocalCache\Roaming\Codex\\wsl$and\\wsl.localhostCurrent workaround is to use the Chronological list instead of Project grouping, or avoid WSL-backed projects in Codex Desktop. This looks like project-sidebar grouping depends on a Git/workspace watcher path that fails for WSL/UNC paths, then drops the affected thread associations during refresh.
zhaobenny commentedon Jun 18, 2026
Another way to work around this is by treating WSL as an another SSH connection for Codex Desktop and adding remote projects instead, skipping all the WSL bs.
Upside is I can get to use computer / browser use now since the WSL backend didn't support it before, and I can easily swap to a windows project now.
Downside is that Codex mobile
doesn't let you control remote projects currently(nvm u can), and I had to have Codex brute force fix whatever mess was left behind by the update / me trying to recover it.yui-stingray commentedon Jun 21, 2026
Adding another Windows + WSL datapoint that seems related, but with one extra signal around Desktop workspace/remote state.
Environment:
0.141.0/home/<user>/<workspace>Observed behavior:
state_5.sqliteon my install) still contained the relevant active thread rows withcwdunder/home/<user>/<workspace>.state_5.sqliteon my install) did not appear to contain the relevant WSL workspace history./home/..., WSL UNC roots such as\\wsl$.../\\wsl.localhost..., and a Desktop remote host identity shaped likeremote-ssh-discovered:<host>.Recovery sequence that worked on my install:
selected-remote-host-idwas recreated by the app, but the remote auto-connect entry stayed removed and the sidebar remained fixed.I have not isolated which individual state key was causal, since the recovery involved multiple state changes plus a full Desktop restart.
Interpretation:
This looks related to the same WSL project/thread association class of bug, but in my case the important recovery signal was not a
threads.cwdSQLite rewrite. The thread rows already existed under the WSL POSIX cwd. The sidebar seemed to be resolving the project against a different workspace/remote bucket than the one containing the existing threads.So the affected matching path may involve multiple pieces of state:
/home/...,\\wsl$..., and\\wsl.localhost...selected-remote-host-id/ remote auto-connectUser-visible impact is the same: it looks like project chat history was lost, while the underlying local thread data is still present.
I am not attaching full session logs, SQLite databases, or full global state files because they may contain private prompts, local paths, hostnames, and workspace-specific data. I can provide sanitized state-key summaries or redacted before/after observations if useful.
BorisSavage commentedon Jun 29, 2026
Cross-linking another data point from #29130.
I hit a similar Windows/WSL path-normalization failure after updating Codex CLI from roughly 0.138.0 to 0.142.2. I have WSL installed, but I did not intentionally configure Codex into a split WSL/native state.
In my case the broken state included active metadata split across:
The invalid
C:\mnt\c\Users\...form was especially important: project panes were empty or briefly populated then collapsed. Existing chats were not deleted; project grouping was broken.The stable repair required migrating all active path surfaces atomically, not only
threads.cwd: state DB cwd, local thread catalog cwd, global saved roots/project order/thread hints, session cwd metadata, andconfig.tomlruntime mode. After those were consistently native Windows, project panes worked again.This seems like the same broader bug family: Codex Desktop/CLI on Windows can create or preserve mixed WSL/native path dialects and then lose project-thread associations.
haitambelarche commentedon Jul 22, 2026
I can reproduce this on the Windows Codex/ChatGPT desktop app when switching the agent environment between Windows native and WSL.
Observed behavior:
%USERPROFILE%\.codex\sessionsand%USERPROFILE%\.codex\archived_sessions(46 normal sessions and 5 archived sessions in this case).This appears to be a repeatable project/thread indexing or Windows↔WSL path-association bug rather than actual data deletion.
FinalVar commentedon Jul 31, 2026
I can reproduce this, and I think the underlying problem is broader than path normalization.
Environment:
Reproduction:
/home/<wsl-user>/<project>C:\home\<wsl-user>\<project>The app therefore preserves the conversation identity while silently changing the execution host and path semantics underneath it. Some old tasks appear to continue while others fail, making the behavior effectively nondeterministic.
This cost me an entire afternoon. The UI presents Agent Environment as a simple global choice, but gives no warning that it also changes how existing tasks are resumed.
Expected behavior:
This is not merely a malformed
C:\homepath. It is also a task-isolation and lifecycle bug: a task can retain its conversation history while its execution environment changes underneath it.I can provide sanitized session metadata and logs if helpful.
fenicottero-loriot commentedon Aug 11, 2026
Adding a current Windows + WSL datapoint with a deterministic resume failure and state evidence.
Environment
26.803.10989.0\\wsl$\Ubuntu\home\<wsl-user>Failure
The existing task remains visible and its history can be read, but submitting any follow-up fails immediately with:
The same failure is reproducible through the Desktop thread-continuation API, so it is not specific to the composer UI.
Persisted-state evidence
The saved project definition remained correct:
However, the affected row in the Windows-side
%USERPROFILE%\.codex\state_5.sqlitecontained:That Windows path does not exist. A newly created healthy task for the same location used the canonical Windows UNC representation:
I made a native SQLite backup and atomically updated only the affected active user-thread row from
C:\home\<wsl-user>to the canonical UNC value. Desktop then listed the task with the correct\\wsl$\...cwd, but attempting to resume it still returned the sameAbsolutePathBuferror without a full app restart.This suggests two coupled problems:
C:\home\...cwd even though the saved project authority still has the correct WSL UNC root.threads.cwdalone does not rebuild all base-path context needed to resume the task; an in-process cache or another per-session/path field remains stale.Expected behavior
/home/...must never be persisted as WindowsC:\home\....This matches the environment-switch lifecycle described in the existing comments, and adds a current-version reproduction plus the exact
AbsolutePathBufresume failure and row-level state comparison.fenicottero-loriot commentedon Aug 11, 2026
Follow-up with the exact failure layer after further read-only inspection.
The earlier
threads.cwdrepair was not blocked by an in-process cache. The Windows-side persistent logs contain the exact recorder error:The affected rollout JSONL is internally consistent with the environment in which it was created:
session_meta: 1 recordturn_context: 8 records/home/<wsl-user>/...and/mnt/c/...turn_contextmixed into that JSONLAfter switching the global Agent environment to Windows, the Windows backend attempts to deserialize those pre-existing WSL
AbsolutePathBufvalues and fails before model execution. Updating the Windowsstate_5.sqliterow from the invalidC:\home\<wsl-user>to the canonical\\?\UNC\wsl$\Ubuntu\home\<wsl-user>correctly repairs sidebar/project association, but cannot make the Windows rollout parser accept the WSL-serialized typed paths.The same task ID remains present in the WSL-side state database and points to the same transcript under
/mnt/c/Users/<windows-user>/.codex/sessions/.... This confirms that the transcript is not missing or corrupted; it is a cross-backend rollout-deserialization incompatibility.Suggested product behavior:
AbsolutePathBufrecords under the new host.Rogier1977 commentedon Oct 2, 2026
Additional findings on a newer Windows build: path metadata vs. process execution
Thanks for identifying the distinction between project/sidebar association and cross-backend rollout deserialization. I investigated a potentially related case on a newer Windows build and ran a controlled comparison without modifying existing chat data.
Versions
Windows app package: 26.928.2636.0
Bundled Codex runtime: 0.159.2
Ubuntu on WSL2
Original agent environment: WSL, using Bash
Read-only inspection found historical C:\home...-style working directories in the Windows state database. A sampled older rollout also contains that invalid Windows-path form.
However, the three currently affected chats—including a fresh local WSL chat—have valid /mnt/c/... paths in their WSL state and inspected session_meta / turn_context fields. Their project directory exists and is independently accessible from Bash.
Their global project assignments remain present, while assignment migration is marked pending and project_id is null in both the active WSL thread state and the Desktop catalog. I have not established that this represents the same association failure described above.
The local WSL app-server starts successfully, and thread initialization reports environment_id=local remote=false. Nevertheless, a simple pwd through the agent’s exec_command tool fails with:
Failed to create unified exec process: No such file or directory (os error 2)
This also occurs in a completely new local WSL chat, so it is not limited to resuming an old conversation under another backend.
I did not find a locally generated:
failed to parse rollout line: AbsolutePathBuf deserialized without a base path
in the inspected logs. I also did not attempt to resume an existing WSL chat under Windows native to reproduce that error.
For comparison, I temporarily switched the agent environment to Windows native, restarted the app, and created a completely new chat in a new empty Windows directory. The integrated terminal setting remained WSL; all tests used the agent tools, not the terminal.
The native agent successfully executed:
Windows computer-name lookup
Get-Location
Get-Date
Test-Path for the original project directory
However:
wsl.exe -d Ubuntu --exec /usr/bin/uname -sr
$LASTEXITCODE
returned:
text Toegang geweigerd. Foutcode: Wsl/Service/E_ACCESSDENIED -1
The outer PowerShell process exited 0, but the WSL command failed with exit code −1. This appears to be a separate access-control boundary; I have not established a common cause with the WSL-agent ENOENT.
The original WSL agent environment was restored afterward and the app restarted.
Additional diagnostic limits
The app also logs an ENOENT while relocating the bundled codex-resources/bwrap. However, /usr/bin/bwrap exists and affected-turn feedback reports use_linux_sandbox_bwrap=false, so I am not treating that as the proven cause.
A permission-only attempt to attach strace to the WSL app-server was denied. I stopped there without elevating privileges, changing ptrace policy, or disabling sandbox protections.
No SQLite rows or rollout files were edited, no rescue tool was used, and no existing WSL chat was intentionally resumed under Windows native during the comparison.