VS Code Codex: central editor panel opens blank on Windows because custom URI route uses fsPath
What version of the IDE extension are you using?
openai.chatgpt / Codex VS Code extension 26.506.31004 (win32-x64)
Installed path observed locally:
C:\Users\leona\.vscode\extensions\openai.chatgpt-26.506.31004-win32-x64
Which IDE are you using?
VS Code on Windows.
What issue are you seeing?
Opening a new Codex central editor panel via the VS Code command chatgpt.newCodexPanel can create a completely blank/white editor area instead of rendering the Codex chat UI.
In my local repro, the official Codex sidebar could be opened, and the command did create an editor tab, but the central webview did not render the chat UI.
Code-level diagnosis
The extension creates the new central panel through a custom URI route:
createNewPanel() {
let e = g_("/extension/panel/new");
...
vscode.commands.executeCommand("vscode.openWith", e, customEditorViewType, ...)
}
The URI helper builds an openai-codex://route/... URI, and resolveCustomEditor() parses it through h_(uri). In the shipped bundle, the parser destructures uri.path as n, but returns uri.fsPath as the route path:
function h_(t) {
let { scheme:e, authority:r, path:n } = t;
...
return { path:t.fsPath, conversationId:s };
}
For a custom-scheme URI with an authority on Windows, fsPath is not a web route. It is treated like a filesystem/UNC-style path, while the webview route expected by the React app is the URI path, e.g. /extension/panel/new.
That means the webview can receive an invalid initial-route value for the new panel route. Conversation IDs are handled separately through /local/${id}, so the most visible failure is the new central panel route.
Local hotfix that resolved it
Changing the parser return value from t.fsPath to the already destructured n fixed the blank central panel locally after reloading VS Code:
- { path:t.fsPath, conversationId:s }
+ { path:n, conversationId:s }
After this local patch, chatgpt.newCodexPanel opened the central Codex chat UI correctly.
Static validation performed locally:
node --check out/extension.js: PASS
old marker {path:t.fsPath,conversationId:s}: 0 after patch
new marker {path:n,conversationId:s}: 1 after patch
Expected behavior
The parser for openai-codex://route/... should use uri.path for route navigation, not uri.fsPath, so the initial webview route remains platform-independent.
Why this matters
This is a Windows-specific footgun because fsPath is intended for filesystem paths and is not safe for custom URI route parsing. The same route parser is responsible for central Codex panels, so one bad route value can leave the editor-area webview blank with little diagnostic surface for the user.
20 Comments
Adjacent UX suggestion: make the official Activity Bar entry a conversation picker
While investigating this, I built a local companion extension to approximate the Claude Code VS Code behavior. The workflow felt materially better and could be worth adopting directly in the official Codex extension.
Suggested official behavior:
New Chataction.openai-codex://route/local/<conversationId>withchatgpt.conversationEditor.The local companion implementation used:
~/.codex/session_index.jsonlas a lightweight recent-session index for the picker.vscode.commands.executeCommand("vscode.openWith", uri, "chatgpt.conversationEditor", ...)for existing sessions.chatgpt.newCodexPanelonly when the user explicitly choosesNew Chat.openai.chatgptthrough the VS Code extension API.This would also reduce confusion around the current central-panel behavior: the Activity Bar would become a stable navigation surface, and users would choose whether they want a new chat or a previous one.
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirming this is still happening and that the suggested fix works. I've been chasing this for weeks.
Environment: Windows 11, VS Code, Codex extension openai.chatgpt 26.519.32039.
Symptom: "Codex: New Codex Agent" (chatgpt.newCodexPanel) opened a completely black editor tab — no chat UI, no input field. The Codex sidebar chat worked perfectly the whole time, which made it confusing. Logs showed the webview never mounting its routes and a repeating loadResource listener leak each time the panel opened.
Fix that worked: Applying the change described here — in out/extension.js, swapping {path:t.fsPath,conversationId:s} to use the destructured path ({path:n,conversationId:s}) — then reloading the window. The panel now renders correctly and the agent starts as expected.
Would be great to get this merged, since the only alternatives right now are hand-patching the bundle or using "New Thread in Codex Sidebar" instead of the editor panel. Thanks to whoever traced the fsPath vs path root cause. 👍
Thanks @BaggyG-AU for the independent confirmation. The extra environment/version detail is useful, especially the part that the sidebar route works while
chatgpt.newCodexPanelopens a blank editor tab. That helps separate this from a generic webview failure and keeps the focus on the editor-panel route construction.The fact that the same
fsPath-> destructuredpathchange fixes it onopenai.chatgpt 26.519.32039suggests the root cause is still present in current extension builds.One regression-test angle that would catch this cleanly: exercise the sidebar/open-thread path and the central editor-panel path separately on Windows-style URIs, and assert that the route payload keeps the parsed route path rather than recomputing it from
Uri.fsPath. The sidebar path can stay healthy while the editor-panel custom URI route is broken, so those need separate coverage.I can reproduce a closely related failure on Windows with a newer Codex extension build.
Environment:
1.123.0(x64)openai.chatgpt-26.602.40724-win32-x64Observed behaviour:
Developer: Reload Windowdid not fix it.DevTools console observations from the broken central panel included webview warnings such as:
Unrecognized feature: 'local-network-access'.An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.data:font/woff2load due tofont-src 'self' https://*.vscode-cdn.nethttps://chatgpt.com/ces/v1/rgstr...failing with403Those console entries may be incidental, but the user-visible failure is consistent: the editor-area Codex panel opens, while the composer/input field is missing. The current workaround is to use the sidebar and widen/maximise it.
This looks related to the central editor panel rendering/routing issue reported here, but in this newer version it is not a fully blank panel; it renders enough to open the panel but not enough to expose the input composer.
Confirmed this local fix worked for my newer Windows repro.
Environment:
1.123.0(x64)openai.chatgpt-26.602.40724-win32-x64Before patch:
Developer: Reload Windowdid not fix it.Applied local patch in:
Changed:
to:
Verification:
01node --check out/extension.js: passedDeveloper: Reload Window, the central/main Codex panel worked and the input field appearedSo the same
fsPath->pathroute-parser fix appears to resolve the newer partial-render case too, where the panel is not fully blank but the composer/input field is missing.Reconfirmed on Windows after the newest Codex extension update available to me today (2026-06-09).
Environment:
1.123.0(x64)openai.chatgpt-26.602.71036-win32-x64Observed behaviour after the extension update:
{path:t.fsPath,conversationId:s}marker and zero{path:n,conversationId:s}markers.Applied the same local workaround in:
Changed:
to:
Verification after patch:
01node --check out/extension.js: passedSo the
fsPath->pathroute-parser issue still appears to be present in26.602.71036, and the same local patch still fixes the current build.Reconfirmed again on Windows after the latest Codex VS Code extension update available to me today (2026-06-20).
Environment:
1.125.1(x64)openai.chatgpt-26.616.32156-win32-x64Observed behaviour after the extension update:
{path:t.fsPath,conversationId:s}marker and zero{path:n,conversationId:s}markers before patching.Applied the same local workaround in:
Changed:
to:
Verification after patch:
01node --check out/extension.js: passedSo the
fsPath->pathroute-parser issue still appears to be present in26.616.32156, and the same local patch still fixes the latest build available to me.Another data point after today's extension update on Windows:
openai.chatgpt-26.616.41845-win32-x64out/extension.js, replace exactly one{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}.0, fixed marker count1,node --checkpassed, and after reloading VS Code the main-panel chat field returned.The same main-panel composer regression is still present in the latest Windows VS Code extension build I received:
openai.chatgpt-26.616.51431-win32-x64out/extension.js{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}.Verification after applying the workaround locally:
01node --check C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.616.51431-win32-x64\out\extension.jspasses.So this looks like the same regression as before, reintroduced again in
26.616.51431.Update for the latest Windows extension build: this bug is still present in
openai.chatgpt-26.616.71553-win32-x64.Observed on Windows after the extension updated again:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.616.71553-win32-x64\out\extension.js{path:t.fsPath,conversationId:s}count =1{path:n,conversationId:s}count =0The same local workaround still fixes it:
extension.js{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}0and fixed marker count is1node --checkon the patchedextension.jsVerification after patch on
26.616.71553:01node --check C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.616.71553-win32-x64\out\extension.jspassedConfirmed this still reproduces on Windows with extension build
openai.chatgpt-26.616.81150-win32-x64.Affected installed bundle:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.616.81150-win32-x64\out\extension.jsApplied the same local workaround:
{path:t.fsPath,conversationId:s}->{path:n,conversationId:s}Verification:
1, fixed marker count00, fixed marker count1C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.616.81150-win32-x64\out\extension.js.bak-20260624-222054node --check C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.616.81150-win32-x64\out\extension.jspassedConfirmed recurrence and workaround for another Windows CEV extension build.
Affected extension build folder:
openai.chatgpt-26.623.31921-win32-x64Installed bundle path:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.31921-win32-x64\out\extension.jsLocal workaround applied:
{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}.Marker counts:
{path:t.fsPath,conversationId:s}:1{path:n,conversationId:s}:0{path:t.fsPath,conversationId:s}:0{path:n,conversationId:s}:1Backup created:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.31921-win32-x64\out\extension.js.bak-20260626-110024Verification:
node --checkpassed.The Windows main-panel/no-composer bug was reintroduced again in the latest CEV extension update on this machine and the same local marker replacement fixed it after reload.
Affected extension build folder:
openai.chatgpt-26.623.42026-win32-x64Installed bundle path:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.42026-win32-x64\out\extension.jsPatch applied:
{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}Marker counts:
1001Backup created:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.42026-win32-x64\out\extension.js.bak-20260628-012857Verification:
node --checkpassedConfirmed this still affects the Windows VS Code extension build
openai.chatgpt-26.623.70822-win32-x64.Installed bundle path:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.70822-win32-x64\out\extension.jsLocal workaround applied:
{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.70822-win32-x64\out\extension.js.bak-20260630-003533Marker counts:
{path:t.fsPath,conversationId:s}:1{path:n,conversationId:s}:0{path:t.fsPath,conversationId:s}:0{path:n,conversationId:s}:1Verification:
node --checkpassed for the patched bundle.Adding another verified Windows data point for the recurring Codex Extension main-panel composer bug.
Affected extension build:
openai.chatgpt-26.623.81905-win32-x64Installed bundle path:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.81905-win32-x64\out\extension.jsLocal workaround applied:
{path:t.fsPath,conversationId:s}with{path:n,conversationId:s}Marker counts:
{path:t.fsPath,conversationId:s}:1{path:n,conversationId:s}:0{path:t.fsPath,conversationId:s}:0{path:n,conversationId:s}:1Backup created:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.81905-win32-x64\out\extension.js.bak-20260701-121751Verification:
node --checkpassed.This remains an unsupported local workaround and may be overwritten by future extension updates.
Another confirmed recurrence on Windows after the VS Code Codex extension updated.
Affected extension build folder:
openai.chatgpt-26.623.101652-win32-x64Installed bundle path:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.101652-win32-x64\out\extension.jsLocal workaround applied:
Replaced exactly one occurrence of:
{path:t.fsPath,conversationId:s}with:
{path:n,conversationId:s}Marker counts:
1, fixed marker00, fixed marker1Backup created:
C:\Users\arvid\.vscode\extensions\openai.chatgpt-26.623.101652-win32-x64\out\extension.js.bak-20260703-040411Verification:
node --checkpassed.This appears to be the same recurring Windows central/main-panel missing chat input issue.
Just to clarify that the problem also occurs on Linux.
VSCode version: code-1.128.0-1783465449.el8.x86_64
Codex plugin: openai.chatgpt-26.707.71524-linux-x64
The same workaround cited above works.
It's stopped working for me again on Linux:
Version: 1.128.1
Commit: 5264f2156cbcd7aea5fd004d29eaa10209155d66
Date: 2026-07-14T07:19:31-07:00
Electron: 42.5.0
ElectronBuildId: 14525058
Chromium: 148.0.7778.271
Node.js: 24.17.0
V8: 14.8.178.33-electron.0
OS: Linux x64 6.12.95+deb13-amd64
Extension: openai.chatgpt-26.707.71524-linux-x64
Same issue for me on linux.
Version: 1.128.1
Commit: 5264f2156cbcd7aea5fd004d29eaa10209155d66
Date: 2026-07-14T07:19:31-07:00
Electron: 42.5.0
ElectronBuildId: 14525058
Chromium: 148.0.7778.271
Node.js: 24.17.0
V8: 14.8.178.33-electron.0
OS: Linux x64 6.17.0-35-generic
extension: Version 26.707.71524
ive tried the above referenced fix but it did not work for me.
Replaced exactly one occurrence of:
{path:t.fsPath,conversationId:s}
with:
{path:n,conversationId:s}
ls
i downgraded to vs code 1.127.0 and updated to the "prerelease" codex extension and it worked. i checked the extensions.js and it is using the {path:t.fsPath,conversationId:s} and working.