VS Code Codex extension blank sidebar in Remote SSH on 26.519.32039; rollback fixes it
Summary
After updating the VS Code Codex extension (openai.chatgpt) to 26.519.32039, the Codex sidebar shows a blank panel when used in a VS Code Remote SSH window. Rolling back one extension version fixes the issue.
The desired workflow is for Codex to run in the remote SSH extension host so it can execute in the server-side repository, shell, dependency environment, and filesystem. Forcing the extension to run locally with remote.extensionKind: { "openai.chatgpt": ["ui"] } is not an acceptable workaround for this use case.
Environment
- VS Code:
1.121.0 - VS Code commit:
f6cfa2ea2403534de03f069bdf160d06451ed282 - Local OS: macOS arm64
- Remote: Linux x64 via VS Code Remote SSH
- Extension id:
openai.chatgpt - Broken extension version observed:
26.519.32039 - Workaround that fixes it: roll back one extension version
Steps to reproduce
- Open a project using VS Code Remote SSH.
- Install or update the Codex VS Code extension to
26.519.32039on the remote SSH side. - Open the Codex sidebar.
- Observe that the sidebar is blank.
Expected behavior
The Codex sidebar should load normally, and Codex should run in the remote SSH extension host so that commands and file operations happen in the server-side repo/environment.
Actual behavior
The Codex sidebar is blank in the Remote SSH window.
The VS Code renderer / extension host logs include errors like:
PendingMigrationError: navigator is now a global in nodejs
navigator is now a global in nodejs, please see https://aka.ms/vscode-extensions/navigator
The stack points into the remote extension installation, e.g.:
~/.vscode-server/extensions/openai.chatgpt-26.519.32039-linux-x64/out/extension.js
Workarounds tried
remote.extensionKind: { "openai.chatgpt": ["ui"] }makes the UI usable, but this moves Codex out of the remote extension host and is not acceptable for server-side execution.extensions.supportNodeGlobalNavigator: falsewas tried.- Rolling back one extension version fixed the Remote SSH sidebar issue.
Impact
This blocks using Codex in the intended Remote SSH workflow, where execution must happen on the server-side repository/environment rather than locally.
9 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Same issue here. Thanks for the workaround!
Just want to note this is not only remote, it's for local projects in devcontainer as well.
I’m seeing what looks like the same failure on a Remote-SSH VS Code Server setup.
Environment:
openai.chatgpt-26.602.40724-linux-x64codex-cli 0.137.0-alpha.41.123.0, commit6a44c352bd24569c417e530095901b649960f9f8~/.vscode-server~/.vscode-server/extensions/openai.chatgpt-26.602.40724-linux-x64/bin/linux-x86_64/codexSymptoms:
codex doctor --summaryis mostly healthy: config loads, auth configured, websocket reachable, app-server not running when idle; one warning about search command (rg) not being on PATH.PendingMigrationError: navigator is now a global in nodejs, fromout/extension.js.var navigator = void 0;shim at the top of the installedout/extension.js. After that, a fresh remote extension-host log no longer showed the navigator activation error, andopenai.chatgpt/Codex.logshowed the app-server being spawned and initialized.webview/index.html. After reloading VS Code, that marker was not visible either. That suggests the remaining failure is either the webview document not being rendered/loaded, or VS Code serving a stale/blocked webview document, not just a React/app JS crash after HTML load.Relevant post-shim
Codex.logexcerpt:Workarounds tried:
pluginsfeature to avoid startup plugin/GitHub sync pathnavigatorshim in the installed extension bundle, which removed the activation crash but did not restore the UIwebview/index.html, still not visible after reloadImpact: this blocks using Codex from VS Code on Remote-SSH/HPC even though the bundled CLI itself works from the remote terminal.
I can reproduce this on a newer build as well.
Environment:
openai.chatgpt26.609.30741codex-cli 0.140.0-alpha.2Behavior:
codex --versionworks in the remote terminal.Relevant log:
The stack points to this bundled check inside the extension:
As a local test, patching that check so it does not access
navigatorremoves the extension-host error, which suggests the extension is touching VS Code's migration-guarded globalnavigatorin the extension host.Update: this still reproduces after the VS Code extension auto-updated to
openai.chatgpt26.616.51431.Environment:
openai.chatgpt: 26.616.51431--supportGlobalNavigatorObserved:
vscode.lockafter the hang.The new extension bundle appears to contain the same problematic pattern again:
Workaround that restored the panel locally:
navigator.userAgentcheck to a constant false branch in both the local Darwin arm64 extension bundle and the remote Linux x64 extension bundle.vscode.lockfiles under remote workspace storage.After that, the latest remote Codex log shows successful startup:
No
PendingMigrationError,navigator is now a global in nodejs, orvscode.lockerror appeared in the latest log after the workaround.This looks like the same Remote-SSH/global
navigatorcompatibility issue resurfacing in 26.616.51431 after the extension update overwrote the previous local workaround.it really helps me.THX
VS Code codex extension dialogue box not showing Ubuntu 26. Who knows which version is working?
Solution
I reproduced this with VS Code Remote-SSH and
openai.chatgpt 26.707.91948.The failure is caused by the bundled Zod v4 environment check accessing
navigatorinside the Node.js remote extension host:typeof navigator !== "undefined"This triggers VS Code’s
PendingMigrationErrorand can leave the Codex webview blank or unresponsive.Immediate workaround
Create
~/.vscode-server/data/Machine/settings.jsonon the remote host:~~~json
{
"extensions.supportNodeGlobalNavigator": true
}
~~~
Then run Developer: Reload Window. Setting this only in the local VS Code user settings did not fix the remote extension host.
Required source fix
The extension/dependency should detect Node before accessing
navigator:~~~ts
const isNode =
typeof process === "object" && process?.versions?.node;
if (
!isNode &&
typeof navigator !== "undefined" &&
navigator?.userAgent?.includes("Cloudflare")
) {
return false;
}
~~~
After applying the remote setting, the unmodified official extension loaded normally and the Codex webview mounted successfully.