Codex IDE extension stuck loading over VS Code Remote-SSH while CLI works
What version of the IDE extension are you using?
openai.chatgpt-26.602.40724-linux-x64
What subscription do you have?
ChatGPT Plus
Which IDE are you using?
VS Code with Remote-SSH
What platform is your computer?
Local: Windows x64 Remote: Ubuntu server via VS Code Remote-SSH Remote VS Code Server: Stable-6a44c352bd24569c417e530095901b649960f9f8 Remote-SSH extension: ms-vscode-remote.remote-ssh-0.124.0
What issue are you seeing?
Codex CLI works normally, but the Codex IDE extension in VS Code over Remote-SSH is stuck on the loading screen.
I am using VS Code on Windows and connecting to a remote Ubuntu server through Remote-SSH. The Codex tab appears in the IDE UI, but when I open it, it only shows a loading spinner and never becomes usable.
Important point: Codex CLI works normally. So this does not appear to be an account, quota, or general Codex service issue. The issue seems specific to the VS Code / Remote-SSH IDE extension path.
The remote Codex app-server can start. Process checks show both the remote extension host and the Codex app-server running:
/home/<remote-user>/.vscode-server/.../server/node ... --type=extensionHost ... --supportGlobalNavigator
/home/<remote-user>/.vscode-server/extensions/openai.chatgpt-26.602.40724-linux-x64/bin/linux-x86_64/codex app-server --analytics-default-enabled
However, the Codex Webview remains stuck on loading.
Relevant logs repeatedly show:
[CodexMcpConnection] Spawning codex app-server
[CodexMcpConnection] Initialize received id=1
[IpcClient] Received broadcast but no handler is configured method=client-status-changed
There is also a recurring plugin manifest warning:
codex_core_plugins::manifest: ignoring interface.defaultPrompt[0]: prompt must be at most 128 characters path=/home/<remote-user>/.codex/.tmp/plugins/plugins/ngs-analysis/.codex-plugin/plugin.json
Older logs also showed the app-server exiting unexpectedly:
Codex app-server process exited unexpectedly (code=unknown, signal=SIGTERM)
I also saw a PendingMigrationError related to navigator is now a global in nodejs. I added the following setting to both the remote VS Code Server settings and the local VS Code user settings:
{
"extensions.supportNodeGlobalNavigator": true
}
After restarting, the remote extension host does start with --supportGlobalNavigator, and the latest remote logs no longer show the navigator error, but the Codex panel is still stuck loading.
Things I have tried:
- Reloaded the VS Code window
- Reinstalled the OpenAI ChatGPT / Codex extension
- Cleared ~/.codex/.tmp
- Cleared ~/.codex/plugins/cache
- Enabled extensions.supportNodeGlobalNavigator locally and remotely
- Restarted VS Code and reconnected through Remote-SSH
None of these fixed the issue.
Expected behavior:
Codex IDE should load normally in VS Code Remote-SSH. Even if a cached plugin manifest is invalid, Codex should skip it and continue running.
Actual behavior:
Codex CLI works, Codex app-server starts, but the VS Code Codex Webview stays stuck on loading.
<img width="1120" height="691" alt="Image" src="https://github.com/user-attachments/assets/26aa00df-c8b4-46ae-a5dc-2f2ab08fafa9" />
What steps can reproduce the bug?
- Use VS Code on Windows.
- Connect to a remote Ubuntu server through VS Code Remote-SSH.
- Install / enable the OpenAI ChatGPT / Codex IDE extension.
- Open the Codex panel in VS Code.
- Select the
CODEXtab.
- The Codex tab appears, but the panel stays on the loading spinner and never becomes usable.
- On the remote Ubuntu server, check whether Codex app-server is running:
pgrep -af "codex|codex_app_server|extensionHost|openai.chatgpt"
In my case, the remote extension host and Codex app-server are running:
<pid> /home/<remote-user>/.vscode-server/.../server/node ... --type=extensionHost ... --supportGlobalNavigator
<pid> /home/<remote-user>/.vscode-server/extensions/openai.chatgpt-26.602.40724-linux-x64/bin/linux-x86_64/codex app-server --analytics-default-enabled
- Check the latest Codex logs on the remote server:
latest=$(ls -td ~/.vscode-server/data/logs/* | head -1)
grep -RniE "PendingMigrationError|navigator is now a global|CodexWebviewProvider|Fatal|CodexMcpConnection|IpcClient" \
"$latest" 2>/dev/null | tail -200
The logs show:
[CodexMcpConnection] Spawning codex app-server
[CodexMcpConnection] Initialize received id=1
[IpcClient] Received broadcast but no handler is configured method=client-status-changed
There is also a recurring plugin manifest warning:
codex_core_plugins::manifest: ignoring interface.defaultPrompt[0]: prompt must be at most 128 characters path=/home/<remote-user>/.codex/.tmp/plugins/plugins/ngs-analysis/.codex-plugin/plugin.json
- Codex CLI still works normally, but the Codex IDE Webview remains stuck loading.
I also tried the following, but the issue still reproduces:
- Reloading the VS Code window
- Reinstalling the OpenAI ChatGPT / Codex IDE extension
- Clearing ~/.codex/.tmp
- Clearing ~/.codex/plugins/cache
- Setting "extensions.supportNodeGlobalNavigator": true on both local VS Code settings and remote VS Code Server settings
- Restarting VS Code and reconnecting through Remote-SSH
What is the expected behavior?
_No response_
Additional information
_No response_
15 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
This may be related to the existing PendingMigrationError issues, but it does not appear to be an exact duplicate. After setting "extensions.supportNodeGlobalNavigator": true both locally and remotely, the remote extension host starts with --supportGlobalNavigator and the latest remote Codex logs no longer show PendingMigrationError. However, the Codex panel is still stuck loading while Codex CLI works and codex app-server is running. The remaining logs show "IpcClient Received broadcast but no handler is configured" and the ngs-analysis defaultPrompt warning.
Also happens on Ubuntu. Until a week ago it sometimes worked when you restarted vscode a few times, now it never works anymore, in remote workspace the panel just does not load. Mentioning this because a windows-os label is assigned.
Same problem at Bazzite DX. I have same problem as @caramboleyo described. I thought I did something wrong, when I am installed the extension. But, the codex cli works fine.
I have the same problem too, when I use 'remote explorer' to ssh to the the virtual computer. The codex extension does not work on it. It just show the blank. But the codex-cli still works.
same on mac and ubuntu, sometimes work, sometimes it wont load after multiple restart. the unreliability is driving me away from open ai.
i am back on my notebook where an older vscode version is running (before the agents button in the top panel) and here it works fine yet.
Version: 1.109.5
Commit: 072586267e68ece9a47aa43f8c108e0dcbf44622
Date: 2026-02-19T19:43:32.382Z
Electron: 39.3.0
ElectronBuildId: 13313481
Chromium: 142.0.7444.265
Node.js: 22.21.1
V8: 14.2.231.22-electron.0
OS: Linux x64 6.17.0-35-generic
Does anyone have a fix yet for this. I tried a few things..but nothing is working
Step 1: Downgrade the Extension
Open VS Code.
Click on the Extensions icon in the left sidebar (the icon with four squares) or press Cmd + Shift + X.
Search for your Codex extension (usually listed as OpenAI ChatGPT or Codex).
Select the extension to open its details page.
Click the small drop-down arrow right next to the "Uninstall" button.
Select Install Another Version...
A menu will drop down from the top of the screen showing a list of version numbers. Select the version immediately preceding the one currently installed (for example, if you are on 26.527.60818, choose 26.527.31454).
Wait for it to install, and then click Reload Required when prompted.
Step 2: Disable Auto-Updates (Crucial)
If you do not disable auto-updates, VS Code will silently update Codex back to the broken version the next time you restart your editor.
On the Codex extension's details page, click the Gear icon ⚙️ next to the Uninstall button.
Uncheck Auto Update (or select "Ignore Updates" if that is the option presented).
Step 3 (Backup): The Settings Shim
If downgrading doesn't immediately fix the issue (especially if you are using VS Code Remote-SSH to connect to another machine), you can try forcing VS Code to allow the global navigator temporarily.
Open your VS Code Settings (Cmd + ,).
Search for supportNodeGlobalNavigator.
If it appears, check the box to set it to true. (If you use Remote-SSH, make sure you apply this to the Remote settings tab as well).
Fully restart VS Code.
Once the sidebar loads again, your chat history and local server should start responding normally.
Just did this and it worked! I then went back and upgraded the version to the newest and it still works!
I've found a working workaround for Windows host and Linux target device, I verified this solution works for both Raspberry Pi 5 and NVIDIA Jetson Orin Nano targets.
Here's how I solved the issue of Codex sidebar crashing VSC for SSH targets:
Step One:
On target device, either ssh via terminal/powershell or through the terminal of the target device itself, perform the following:
< Install Codex CLI >
</> bash
%% to ensure Codex CLI runs on target device...
Step Two:
< Login to Codex on target device(s) >
</> bash
codex%% then following instructions to login to your Codex account
Step Three: (Important?)
I found that one of the ways to avoid VSC crashing from Codex sidebar, is to ensure SSH to your target device does not prompt a password
There are several ways to workaround removing password for ssh, but my approach tested using Windows host is:
< From host device, create config file that makes SSH into your target not requiring any password / passphrase >
</> PowerShell
Step Four:
Add the SSH alias into your Windows config to make it passwordless and no passphrase:
</> PowerShell
notepad "$env:USERPROFILE\.ssh\config"%% Add the following:
%% Make sure to modify the above as per your host and target users
Step Five:
Verify that your SSH is now passwordless from your host:
</> PowerShell
%% These should be able to ssh into your target device without prompting either a password or passphrase (if passphrase is asked, it might be because you entered a passphrase at Step 3, redo Step 3 if you did)
%% With a passphrase, you won't be able to enter VSC without password, so make sure this is not the case.
If you are able to verify SSH is passwordless from powershell, now try to Connect to Host from VSC, this time it should not ask for a password.
Step Six:
Having installed Codex CLI and making your SSH password-less on VSC. Now verify if Codex sidebar loads properly.
The steps above worked for me on 2 separate Linux target device.
Same problem. On laptop with Ubuntu 26.04 codex plugin works in vs code, but on rpi over ssh is not.
Same issue on both MacOS and Ubuntu 26.04. Found that VS Code loads the Codex extension but extension appears blank when connecting to another system via SSH. Codex CLI via terminal works fine. Interestingly, when opening only one VS Code window with a local directory, the extension works fine. As soon as I open an additional VSC window to the SSH system, the local window extension also freezes in addition to the remote VSC window extension appearing blank.
Have attempted version rollbacks and disable/reenable and uninstall/reinstall to no avail.
I had similar issue but with running codex extension locally. Command "Codex: New Codex Agent" opened codex and cli worked, but sidebar extension never loaded. I have talked about this with chatgpt-5.5 and found solution.
Root error
The Developer Tools console showed a frontend module-loading failure (amongs other errors which were irrelevant):
Important diagnostic
The extension worked correctly in a completely temporary VS Code profile (indicated that the extension package and app-server could work, and that the problem was related to persisted VS Code webview/browser state in my normal profile):
Workaround
Close all vscode windows prior and delete cache files (chatgpt suggested to do backup first and then you can delete the backups once you figure it fixed issue and did not break anything)
Probably only above are needed to be deleted, but I also deleted those cache files in the process
Relaunch vscode multiple times
After clearing the cache, Codex did not load immediately on the first launch and during the next few launches, the console showed errors such as:
After restarting VS Code approximately three times, the webview cache appears to have rebuilt successfully and Codex loaded consistently.
---
My sidenote - I was running outdated codex versions in vscode because with them there was no issue with loading. However since gpt-5.6 is now available in codex and I prefer to use extension to cli, I really needed to fix the problem for me.
EDIT: I restarted notebook and it again did not load codex on first time... on second it did. I just hate this about codex.
FYI -- running
codex features disable remote_pluginsets sth in the codex configurations that immediately fixed my extension loading problems.Hitting the exact same signature here, but on a plain local install (no Remote-SSH, no code-server) — so this doesn't look like it's specific to the SSH/tunnel transport, more likely a race in the extension/app-server IPC layer itself.
Environment: Linux Mint 21.3 (Cinnamon), VS Code 1.128.0, extension
openai.chatgpt26.707.31428 (also reproduced on 26.707.41301), bundledcodex-cli0.144.0-alpha.4.Symptom: Codex sidebar spins forever. Extension log:
...then either silence forever, or shortly after:
Often with multiple
[IpcRouter] I am the routerlines firing within milliseconds of each other right before/after the failure, suggesting some kind of repeated re-election/reconnect race.Running the bundled
codex app-serverbinary directly and feeding it a hand-rolledinitializeJSON-RPC message over stdio works fine in isolation — so the binary itself isn't broken, it's specifically the extension's connection/handshake to it that's flaky. WithRUST_LOG=warnset (which the extension hardcodes when spawning the child), I got the underlying Rust side to log:right as the handshake fails — so app-server's own transport layer believes the connection is already gone by the time it tries to reply to
initialize.What partially helps, non-deterministically: killing any leftover
codex ... app-serverprocess, deleting the stale IPC socket (/tmp/codex-ipc/ipc-<uid>.sock) and lock files (~/.codex/app-server-daemon/*.lock), thenDeveloper: Reload Window. This clears one real trigger (an orphaned app-server process from a previous session holding the shared socket), but the hang still recurs afterward even with a provably fresh process and no leftover state — so there's at least one more, deeper cause here beyond stale local state.