Codex Desktop fails to create new chats in WSL mode: invalid transport in `mcp_servers.codex_app`
What version of the Codex App are you using (From “About Codex” dialog)?
26.820.7780.0
What subscription do you have?
Plus
What platform is your computer?
Windows x64
What issue are you seeing?
Codex Desktop fails to create a new chat when the Agent Environment is configured to run in WSL.
The UI shows:
failed to load configuration: invalid transport in mcp_servers.codex_app
The user config does not contain an [mcp_servers.codex_app] section.
The issue only occurs when:
runCodexInWindowsSubsystemForLinux = true
Switching it to false and restarting Codex Desktop makes chat creation work again.
What steps can reproduce the bug?
- Run Codex Desktop on Windows with WSL2 (Ubuntu 24.04).
- Configure Codex Desktop to use WSL:
[desktop]
integratedTerminalShell = "wsl"
runCodexInWindowsSubsystemForLinux = true
- Fully restart Codex Desktop.
- Try to create a new chat.
- Chat creation fails with:
failed to load configuration: invalid transport in mcp_servers.codex_app
- Change:
runCodexInWindowsSubsystemForLinux = false
- Fully restart Codex Desktop and create a new chat.
The chat is created successfully when WSL mode is disabled.
The problem is consistently reproducible.
What is the expected behavior?
Codex Desktop should create a new chat normally when WSL is selected as the Agent Environment.
The WSL app-server should start and the internal codex_app MCP server should be configured with a valid transport.
Additional information
Environment:
- Codex Desktop: 26.820.7780.0
- Windows x64
- WSL2
- Ubuntu 24.04
When WSL mode is enabled, Codex Desktop successfully starts the WSL app-server:
/mnt/c/Users/<user>/.codex/bin/wsl/<version>/codex \
-c features.code_mode_host=true \
app-server \
--analytics-default-enabled
Relevant environment of that process:
CODEX_HOME=/mnt/c/Users/<user>/.codex
CODEX_SQLITE_HOME=/root/.codex/sqlite
HOME=/root
CODEX_INTERNAL_ORIGINATOR_OVERRIDE=Codex Desktop
The user config does NOT contain:
[mcp_servers.codex_app]
The bundled codex-app-tools package does contain a desktop-mcp.json defining the codex_app MCP server.
It ships both Unix and Windows launchers:
scripts/launch_codex_app_tools_mcp
scripts/launch_codex_app_tools_mcp.cmd
As a diagnostic test, I changed the bundled codex_app MCP definition from the Windows launcher (cmd.exe / .cmd) to the Unix launcher (/bin/sh).
The change persisted after restarting Codex Desktop, but the exact same error still occurred:
failed to load configuration: invalid transport in mcp_servers.codex_app
I also tested with:
[plugins."codex-app-tools@openai-bundled"]
enabled = false
The same error still occurs.
This suggests that the failure happens while Codex Desktop constructs/translates/injects the internal mcp_servers.codex_app configuration for the WSL app-server, rather than while launching the MCP process itself.
The issue disappears completely when:
runCodexInWindowsSubsystemForLinux = false
29 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
after update:
<img width="728" height="166" alt="Image" src="https://github.com/user-attachments/assets/a8bbff27-2420-4ecb-ba79-a5c458dad013" />
Same issue here
I started the codex cli from wsl and asked it to fix the problem with windows desktop codex application. Of course it did (using my own tokens). this is its final answer:
I asked then a RCA and a workaround to put in the comment here, this is what it replied:
## Diagnostic / workaround for
config.toml: invalid transport in mcp_servers.codex_app### Symptom
After the latest Codex desktop update on Windows, existing project threads fail to resume with:
> ChatGPT can't load config.toml, so this thread can't resume.
> Fix config.toml: invalid transport in
mcp_servers.codex_app.> After saving the file, reopen the thread.
### What I found
On my machine, the active Windows config was:
C:\Users\{myuser}\.codex\config.tomlThe visible TOML did not contain a
[mcp_servers.codex_app]block or anytransport = ...setting. It only hadnode_replandopenaiDeveloperDocs.The bundled Codex app tools plugin did contain a generated MCP definition here:
C:\Users\{myuser}\.codex\.tmp\bundled-marketplaces\openai-bundled\plugins\codex-app-tools\desktop-mcp.jsonmisreading or migrating the generated
codex_appMCP server shape and failing schema validation ontransport.### Workaround
Add an explicit command-based
codex_appMCP server block toconfig.toml, without anytransportkey.PowerShell:
```powershell
$Config = "$env:USERPROFILE\.codex\config.toml"
$PluginDir = "$env:USERPROFILE\.codex\.tmp\bundled-marketplaces\openai-bundled\plugins\codex-app-tools"
$Backup = "$Config.bak-$(Get-Date -Format yyyyMMddHHmmss)"
Copy-Item $Config $Backup
@"
[mcp_servers.codex_app]
command = "cmd.exe"
args = ["/d", "/s", "/c", "call", "./scripts/launch_codex_app_tools_mcp.cmd", "./server.mjs"]
cwd = '$PluginDir'
startup_timeout_sec = 10
tool_timeout_sec = 3600
"@ | Add-Content -Path $Config
Expected result: codex_app appears in the MCP server list and the command exits successfully.
After that, fully close and reopen Codex Desktop, then reopen the affected thread.
### Dev-team lead
This looks like a regression in the Windows desktop resume/config bootstrap path around the bundled codex-app-tools
MCP server. A generated/plugin-provided codex_app server appears to be validated as if it had an unsupported or stale
transport value. A robust fix would either normalize the generated desktop-mcp.json server shape before validation or
ignore/remove stale transport fields for command-based MCP servers during config/thread resume.
I can confirm the same regression on Windows 11 + WSL2 with Codex Desktop 26.820.x. Both creating new chats and resuming existing chats fail with
invalid transport in mcp_servers.codex_app, while my userconfig.tomlhas nomcp_servers.codex_appentry. WSL is my required development environment, so switching the agent to Windows-native is not a viable workaround for me. This is a complete work blocker.Given that this regression completely blocks a supported development workflow for paying users, OpenAI should also consider compensation for affected accounts. At minimum, users impacted by the WSL outage should receive additional/banked usage resets (or equivalent credits) for the period in which Codex Desktop was unusable in their required environment. We are paying for access to this service, and a release regression that prevents all new/resumed WSL chats from working should not consume users' paid usage window without remedy.
I reproduced this on Codex Desktop
26.820.7780.0, Windows x64, Ubuntu 24.04 WSL2, with bundledcodex-cli 0.150.0-alpha.8.Confirmed root cause
Desktop injects an incomplete runtime configuration similar to:
but does not provide either
commandorurl. The CLI therefore cannot determine the MCP transport and rejects the entire request with:I reproduced this independently:
Result:
Adding a valid
commandandargsmakes the same configuration pass validation.Temporary workaround
The following explicit user-level override restored WSL startup for me:
After a full Desktop restart,
codex mcp listinside WSL reportedcodex_appas enabled with/bin/sh, and new WSL-native tasks could be created.This is only a workaround. It hard-codes the current bundled plugin version and may break after a plugin update.
Additional WSL path regressions after applying the workaround
WSL starts, but existing tasks created in Windows-native mode still fail with:
The Desktop log shows a malformed mixed Windows/WSL path:
Desktop appears to treat the saved Windows cwd as a relative path and prepend the application resources directory.
Creating a new project/task with a native WSL cwd such as:
works. The old task is not repaired automatically.
Pasted screenshots have the same bridge problem. Desktop creates the PNG successfully, but passes it to the WSL agent as:
The agent reports
No such file or directory, although the image is readable at:Manual path conversion works.
Bubblewrap mismatch
The updated WSL CLI also rejected the older staged
bwrap:Installing Ubuntu's system package restored sandboxed commands:
Suggested product fixes
codex_apptransport (commandorurl) before app-server configuration validation.AbsolutePathBuf./mnt/<drive>/..., or copy the image bytes into a Codex-owned WSL-accessible cache.codex-resources/bwrapatomically during updates.I reproduced this on Codex Desktop 26.820.7780.0 with WSL and traced the Desktop -> WSL app-server JSON-RPC traffic. This appears to be the same bug as #40894, but I was able to isolate the failing payload.
During
thread/resume, Desktop injects a flat config override like:but no corresponding
mcp_servers.codex_app.commandormcp_servers.codex_app.urlis present. The app-server therefore materializescodex_appas an MCP server without a resolvable transport and fails with:I confirmed this by placing a Linux wrapper in front of the bundled WSL
app-server(codex-cli 0.150.0-alpha.8) and filteringmcp_servers.codex_app.*from the incoming JSON-RPC before forwarding it to the real binary. With that injected override removed, the affected task opens successfully.Additional WSL detail: the Desktop app-server runs in a different mount namespace from the user's interactive WSL shell, so the test wrapper had to be bind-mounted into the app-server namespace using
nsenter -t <PID> -m.Feedback ID:
01a0104e-ffed-74d1-9278-34af2907b2d2Full diagnostic report: #40894
This strongly points to the Desktop -> WSL
thread/resumeconfig injection path, specifically injectingmcp_servers.codex_app.enabled_toolswithout a complete MCP transport definition.Temporary WSL workaround that worked for me
This is not an official fix. It is a temporary workaround until the Desktop -> WSL config injection bug is fixed. Use at your own risk and remove it once an official build resolves the issue.
The workaround has two parts:
codex app-serverand removesmcp_servers.codex_app.*from incoming JSON-RPC before forwarding it to the real bundled Codex binary.codex-code-mode-host, validates the mount, and restarts the app-server.The reason
nsenteris needed is that Codex Desktop launches the WSL app-server in a different mount namespace from the normal interactive WSL shell.---
1. Go wrapper
Save as:
Example used on my machine (
/home/rodrigo/...):Compile it in WSL:
Before using the wrapper, copy the real bundled Desktop Codex binary somewhere outside the runtime directory. On my machine:
The real binary resolves
codex-code-mode-hostrelative to its own location, so I also created:---
2. Helper script
Save as:
Make it executable and optionally add a short command:
Then when the error returns:
Important caveat
The bind mount is tied to the WSL mount namespace used by the Desktop app-server. If Desktop creates a fresh app-server in a fresh namespace, or after a restart/update/reboot, the workaround may need to be applied again. The runtime hash directory can also change after an update, which is why the Bash helper derives the active
CODEX_PATHdynamically from the running process instead of hard-coding the runtime hash.Why this works
In my trace, the incoming
thread/resumeJSON contained:The wrapper removes
mcp_servers.codex_app.*before the request reaches the real bundled app-server. After doing this, the previously failing task opened successfully.Again: this is only a temporary diagnostic/workaround. The proper fix should be in Codex Desktop's WSL config injection path.
<img width="568" height="157" alt="Image" src="https://github.com/user-attachments/assets/308dddbe-bf65-4851-93be-c9ed278445cd" />
I have the exact same issue. All my projects are on WSL, so I cannot turn off the WSL option.
Another affected WSL user here. With this many independent reproductions and related issues, can someone from OpenAI please confirm that this regression has been seen and triaged? There still appears to be no maintainer acknowledgement, which is frustrating for users who cannot simply switch their development environment to native Windows.
I'm getting the same error with the same setup. Seems to be universal.
exactly same issue
It appears that this is a bug affecting all users who have updated Codex and are using it in WSL.
same for me !!
what a shit codex
I am not going to update this shit anymore, what kind update is that!
Same over here, and that workaround above did not work.
For a temporary fix until the issue is resolved, maybe download the previous version from Uptodown and use that.
Additional confirmation from another affected Windows/WSL environment.
Environment
26.820.7780.00.150.0-alpha.8codex-app-tools:0.1.3Observed behavior
Both new chat creation and existing thread resume fail when the Agent Environment is set to WSL:
Desktop logs record the failure as:
The same error also occurs with
method=thread/resume.The failure is independent of the working directory. It occurred with:
/home/<user>/workspace/.../mnt/c/Users/<user>/...~Regression evidence
WSL mode worked before the update:
26.818.8289.00.149.0-alpha.4.3thread/resumecompleted witherrorCode=nullon 2026-08-25After updating:
26.820.7780.00.150.0-alpha.8thread/startandthread/resumeconsistently fail withinvalid_configon 2026-08-27Additional diagnostics
codex mcp listsucceeds.config.tomlcontains an[mcp_servers.codex_app]section or atransportkey.codex-app-toolsdesktop-mcp.jsonis byte-for-byte identical to the version bundled with the desktop app.codex_appMCP definition directly to the bundled WSL CLI parses successfully.This strongly suggests a regression in the Windows Desktop → WSL
thread/start/thread/resumepath while constructing, translating, or injecting the internalmcp_servers.codex_appconfiguration. It does not appear to be caused by the user’sconfig.toml.Same issue here
Can temporarily fix the issue by downgrading to this version:
https://github.com/Wangnov/codex-app-mirror/releases/tag/codex-app-26.818.61809
Same issue here.
Same issue. Have not tried workarounds yet
"1. ChatGPT can't load config.toml, so this thread can't resume.Fix config.toml: invalid transport in
mcp_servers.codex_app. After saving the file, reopen the thread.\"I found a workaround for this issue on Codex Desktop + WSL.
I was getting:
config.toml error: invalid transport for mcp_servers.codex_appand couldn't open/resume my existing project chats in Codex Desktop.
Workaround
runCodexInWindowsSubsystemForLinux.In my case, simply opening/loading the conversation once from the phone made it accessible again from Codex Desktop.
I did not need to modify
mcp_servers.codex_app, disable WSL, or move my repositories out of WSL.My projects are stored under WSL (
/home/...), so disabling WSL was not a viable workaround for me.This looks like opening the conversation through Remote Control causes some Codex app/session state to be initialized or refreshed, after which Desktop can resume the conversation normally.
I hope this helps others affected by the same regression.
Windows 11
Codex Desktop
WSL / Ubuntu
Projects stored inside /home/...
runCodexInWindowsSubsystemForLinux = true
Update: this issue appears to be fixed after updating Codex Desktop to
26.820.9563.0.With the Agent Environment set to WSL, I can now create new tasks and resume existing tasks normally. The following error no longer occurs:
I did not modify either the Windows or WSL
config.toml, so the resolution appears to have come from the Codex Desktop update.Environment:
26.820.9563.0Thank you for the fix.
having the same exact issue... any fix to this to work in wsl2? not able to use codex at all here.
Please see my comment for downgrade instructions.
The bug is simple to fix temporarily, just read my comment: Workaround