Repository navigation
Windows ChatGPT app 26.924.2738.0 stuck on blank screen with endless loading spinner #49452
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.924.2738.0
What subscription do you have?
ChatGPT Plus
What platform is your computer?
Microsoft Windows NT 10.0.26300.0 x64
What issue are you seeing?
The Windows Codex/ChatGPT desktop app launches, but the main window remains blank with an endless loading spinner and never finishes loading.
Environment:
- Codex App version: 26.924.2738.0
- Package name: OpenAI.Codex
- Architecture: x64
- ChatGPT subscription: Plus
- Login method: Google
- The ChatGPT web app works normally on the same computer and account.
The application processes appear to launch normally. In Task Manager, the ChatGPT process group starts successfully together with multiple Codex processes and codex-windows-sandbox-service, but the UI remains stuck on the loading screen indefinitely.
I have already tried:
- Force quitting and restarting the app
- Repairing the app through Windows Settings
- Resetting the app through Windows Settings
- Uninstalling and reinstalling the app
- Restarting Windows
- Testing a different network/mobile hotspot
- Disabling VPN/proxy
- Checking that WebView2 is installed and functioning
- Confirming the package status in PowerShell
PowerShell reports:
Name: OpenAI.Codex
Version: 26.924.2738.0
Status: Ok
There is no error message displayed in the UI.
Because the application never reaches the main interface, I am also unable to use the in-app "/" feedback mechanism suggested by OpenAI Support.
OpenAI Support advised me to capture diagnostic information and report the issue here.
Please let me know if there are specific log files, diagnostic bundles, or crash reports I can provide to help investigate this issue.
What steps can reproduce the bug?
- Launch the ChatGPT/Codex Windows desktop app.
- The application window opens normally.
- The main content area remains blank.
- A loading spinner appears in the center of the window.
- The spinner continues indefinitely and the application never reaches the main ChatGPT interface.
The issue reproduces every time the application is launched.
Additional observations:
- The ChatGPT/Codex processes remain running in Task Manager.
- The ChatGPT web app works normally on the same computer and account.
- No error message is displayed.
- Repair, Reset, reinstall, Windows restart, network change, and WebView2 checks did not resolve the issue.
What is the expected behavior?
The Windows desktop app should finish loading and display the normal ChatGPT interface, including the conversation sidebar and message composer, allowing me to use ChatGPT normally.
Additional information
No response
Activity
github-actions commentedon Sep 30, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
moruku36 commentedon Sep 30, 2026
Workaround that worked for me (Windows 11, app 26.928.2636.0, MSIX)
Same symptom here: the window opens and stays on the OpenAI-logo splash forever,
ChatGPT.exeis responding, andcodex.exe app-serveris running. Re-registering the package (Add-AppxPackage -Register …\AppxManifest.xml) and clearing the GPU/shader caches did not help.What fixed it: leave the app open and kill only the backend
codex.exeprocesses (notChatGPT.exe). The app respawns them within a few seconds and the UI then loads normally (this matches #49447).Looks like a startup race between the renderer and the app-server rather than a corrupted install. I haven't yet confirmed whether it recurs on the next launch, so I can't say if this is a one-time fix or needs repeating.
Yam-W commentedon Sep 30, 2026
Thanks for the workaround. I tested it after updating the Windows app to version 26.928.2636.0.
The command to kill only the backend codex.exe processes while leaving ChatGPT.exe running does work partially:
Get-Process codex | Where-Object { $_.Path -like 'Codex' } | Stop-Process -Force
After running this command, the app respawns the backend processes and gets past the initial OpenAI-logo / loading-spinner screen.
However, the app is still not fully usable afterward.
Current behavior on my system:
I also tested launching the app with:
--disable-gpu-compositing
but this did not improve the situation. Instead, the app returned to the original startup behavior and became stuck on the loading spinner again.
So on my system, restarting the backend codex.exe processes appears to resolve only the initial startup hang, but the main conversation/content area still fails to initialize or render.
Environment:
If there are specific logs, diagnostic files, crash reports, or tracing steps that would be useful, I would be happy to provide them.
lernicks0 commentedon Oct 1, 2026
Same symptom on a different machine. Adding startup-timing and log evidence that may help
pinpoint where it blocks — I was able to reproduce both the hang and a successful launch, so
the two can be compared.
Environment
OpenAI.Codex_26.928.3736.0_x64__2p2nqsd0c76g0154.0.8037.57(as reported in Windows Application Hang events)0.159.210.0.26200x64Note: the app is intermittent here — sometimes it reaches the UI, sometimes it sits on the
loading screen forever. That differs from the original report (always failing), and might make
it easier to bisect.
Startup sequence (identical in both the hanging and the successful launches)
So the renderer starts and the React root is requested — the UI just never becomes usable.
Blocking signals found in the logs
Log path:
%LOCALAPPDATA%\Packages\OpenAI.Codex_2p2nqsd0c76g0\LocalCache\Local\Codex\Logs\<yyyy>\<MM>\<dd>\codex-desktop-*-t0-*.log1. MCP tool discovery times out on every launch
The MCP server config declares
startup_timeout_sec = 120, but the client gives up after 10 s.This occurs on every launch, including with a fresh install, reset package data, and an empty
config.toml— so it is not caused by user MCP configuration.2. The
durableapp-server host takes 21–85 seconds to connectMeasured from process start to
nextState=connected:durableconnectedThe reconnect backoff climbs (2s → 4s → 8s → 16s → 20s), so one slow/failed first attempt
pushes the wait out past a minute.
3. An authenticated renderer GET returns 404 on every launch
Also occurs on a clean install, so it is not local-state corruption either.
Ruled out (with evidence)
] errorcount = 0).config/read,account/read,fs/readFileall returnresponse_routed ... errorCode=null.--type=gpu-processchild present); other Chromium apps (Chrome,Edge WebView2) render fine on the same desktop.
api.openai.com/v1/models→ HTTP 401),and the Cloudflare challenge that previously intercepted requests no longer appears.
Troubleshooting already attempted
GrShaderCache,ShaderCache,GPUCache,Dawn*Cache(~24 MB)Reset-AppxPackage(package data 850 MB → 0)Add-AppxPackage -Register ...AppxManifest.xml[mcp_servers.*]fromconfig.toml--disable-gpuviaIApplicationActivationManagerSuggestions
durablehost connection.Paint the shell immediately and surface those subsystems as background status with retry.
startup_timeout_secfromconfig.tomlinstead of a hard-coded 10 s.indefinite spinner — that alone would have made this report unnecessary.
durableconnect attempt so one slow attempt cannot stall startup for 85+ s.{"detail":"Not Found"}404 on thesa_serverGET.Happy to provide full
codex-desktop-*-t0-*.logfiles for both a hanging and a successfullaunch, plus
config.toml(redacted) andnvidia-smi/dxdiagoutput, if that helps.lernicks0 commentedon Oct 1, 2026
Addendum — root cause located: the startup "primary runtime" install is what blocks the UI
I managed to catch both a failing and a succeeding launch on the same machine, and the
difference is a single operation. Posting the evidence here because it pinpoints exactly which
step leaves the window on the endless spinner.
The blocking operation
When the app decides its primary runtime needs (re)installing, it performs a network
download/verification during startup. If that fails, the UI never leaves the loading
screen — no error, no fallback, no timeout that recovers:
The UI stayed on the spinner for as long as the process lived. Relaunching did not help while
the install kept failing.
Correlation across four launches on the same machine
primary_runtime_install_startednet::ERR_CONNECTION_CLOSEDEvery launch where the runtime install was skipped loaded fine. The only launch that hung
is the one where the install failed. Once launch B completed the install successfully,
launches C and D skip it entirely and start normally.
This also explains the intermittency I reported earlier: the behaviour depends purely on
whether the startup runtime install succeeds, not on anything in the profile or cache.
A reliable reproduction path
On my machine the failing launch was triggered by resetting the app, which clears the
"runtime is installed" state and forces
trigger=startup_missing:If the machine's network cannot complete the runtime bundle download, the app will sit on the
loading spinner indefinitely. This may reproduce the "reproduces every time" case in the
original report for users on restrictive networks, and would explain why an affected user's
web app works fine (the web app needs no runtime bundle).
For reference, the runtime directory itself was intact on disk
(
%USERPROFILE%\.cache\codex-runtimes\codex-primary-runtime, ~1.3 GB) — so the failing step isthe install/verification call, not a missing local payload.
Impact
bricks the UI for that session, with no error surfaced to the user.
that it failed.
way to know they should wait rather than kill the app.
runtime state and forces the fragile download again.
Suggestions
runtime as background status ("preparing runtime… 42%"), with a retry action.
without runtime" instead of an indefinite spinner.
net::ERR_CONNECTION_CLOSEDmid-downloadis common on unstable or proxied networks and should not be terminal.
Reset-AppxPackageinvalidate an on-disk runtime payload that is alreadypresent and valid under
%USERPROFILE%\.cache\codex-runtimes\.Workaround for other affected users
may be in flight. Killing it discards the progress and it restarts from zero next launch.
Reset-AppxPackage/ "Reset" in Settings unless you can afford a fresh runtime install.Happy to provide the full
codex-desktop-*-t0-*.logfiles for both launch A (hang) and launch B(success) if that helps.
lernicks0 commentedon Oct 1, 2026
Correction to my addendum above
I need to walk back the "root cause" framing in my previous comment. After posting it I observed the
same hang on a machine where the primary runtime install was not involved at all, so the
runtime install failure is one way to end up on the endless spinner — not the general cause.
The contradicting observation
Fresh launch, same machine, same symptom (window stuck on a blank/loading screen, ~2 % of pixels
drawn — i.e. just the small centered mark on white). Relevant log facts for that launch:
primary_runtime_install_startedprimary_runtime_install_failed[chatgpt-account-lookup] completedresult=succeeded,authenticatedAccountPresent=true,authMethod=chatgpt,hasEverErrored=falseremote_connections.manager_state_set hostId=durablenextState=connectedwebsocket_reconnect_recovery_doneconfig/read,getAuthStatus,fs/readFile)response_routed,errorCode=nullchatgpt_pubsub_transport_opened/topic_subscribedfs/readFile requires an environmentId,Conversation state not found)mcp_extension_tool_discovery_failedpluginId=codex-app-tools@openai-bundledSo on this launch every dependency I can observe from the logs reported success, the runtime
bundle was already installed, and the window still never left the loading state.
I also reproduced the hang after a full process kill + relaunch (identical result), and it is
intermittent across launches on the same machine — sometimes the UI comes up, sometimes it does
not, with no corresponding difference in the logged dependency states that I can find.
What I think is still worth keeping from the addendum
primary_runtime_install_failed→net::ERR_CONNECTION_CLOSEDsequence is a real,reproducible way to wedge the UI, and the failure is silent and terminal for that session.
The workaround guidance (wait several minutes before killing; avoid
Reset-AppxPackage) stillapplies to that specific case.
a startup step that never completes — whatever that step is. A "waiting on X" indicator plus
a retry/timeout would have made this whole thread unnecessary.
What would help
If a maintainer can tell me which renderer-side condition gates the transition from the loading
view to the main shell, I can capture the corresponding state on a hanging launch and on a
working launch and diff them — I have both available on the same machine.
lernicks0 commentedon Oct 1, 2026
SOLVED on my machine — the blocker was incomplete Windows elevated-sandbox provisioning
Replacing my earlier "correction" comment: I found the actual cause and a fix, and it matches this
report's symptoms exactly (window stuck on the loading spinner forever, web app fine on the same
machine and account, repair/reset/reinstall all useless).
The fix
codex doctor(from the bundled CLI) reported this on the affected machine:Running exactly that, from an elevated shell:
…and then relaunching the desktop app was enough. The app now loads normally.
Evidence
codex doctorbefore → after:⚠ sandbox — elevated Windows sandbox provisioning is incomplete or outdated✓ sandbox — restricted fs + enabled network · approval OnRequest17 ok · 1 idle · 8 notes · 7 warn · 0 fail19 ok · 1 idle · 7 notes · 5 warn · 0 failDesktop app log before → after. These events were completely absent on every hanging launch and
appear as soon as the app actually reaches the UI:
So the sandbox guest failing to attach lines up with the UI never leaving the loading view.
Why the standard remedies don't help
Repair / Reset / reinstall /
Reset-AppxPackage/ clearing caches / changing network all leave thecodex-homesandbox provisioning state untouched — which is why they do nothing for this, and whyresetting (which does wipe other state) can make things worse.
Suggested diagnostic path for anyone hitting this
The CLI ships alongside the desktop app and is not always on
PATH; it lives under%LOCALAPPDATA%\OpenAI\Codex\bin\<hash>\codex.exe.codex doctor.elevated shell.
On my machine step 2 alone resolved it.
Two other failure modes I found on the same machine (possibly worth guarding)
Primary runtime install failure. On one launch the app decided its runtime bundle was missing
(
trigger=startup_missing) and attempted a ~1.3 GB install at startup:That launch hung on the spinner too. A later launch completed the same install (196 s) and
subsequent launches skipped it. Note
Reset-AppxPackage/ Settings → Reset forces this state.Long blocking windows in general. Even the successful paths took 21–196 s
(
durablehost WebSocket connect 21–85 s; runtime install up to 196 s) with nothing shown on theloading screen. A user cannot tell whether to wait or to kill the app.
The UI still has no visibility into, or recovery from, a startup step that never completes — that is
the underlying defect regardless of which step is at fault. Showing the current startup phase plus a
retry/timeout would cover all of the above.
Yam-W commentedon Oct 1, 2026
Confirmed: directly reloading the main renderer target (app://-/index.html) via the Chrome DevTools Protocol restores the app on my system.
After launching the app with --remote-debugging-port=9222, I identified the app://-/index.html target and sent a Page.reload command over its WebSocket debugger connection. The app then recovered fully, including the main conversation pane and existing conversations.
This workaround is more effective on my system than only killing the backend codex.exe processes, which previously allowed the shell/sidebar to load but left the main content pane blank.
lernicks0 commentedon Oct 2, 2026
Actual root cause found (both of my earlier comments were wrong)
I have to correct myself a second time. Neither the primary-runtime install nor "unknown cause" was
it. The mechanism is:
What the evidence looked like
The app was configured with a Codex-managed remote host, and it was the selected host:
The app repeatedly reported the connection as down:
…while the window never left the loading state. On that machine the loading screen rendered
essentially nothing — measured ~0.1 % non-background pixels, i.e. a plain white window with no
marking at all.
The remote host's hostname simply had no DNS record. The server itself was up and reachable on
the raw IP (SSH port open), but the configured hostname resolved to nothing, so the SSH connection
could never establish. Nothing in the UI said so.
Confirming it
After making the configured hostname resolve to the real server IP (a local
hostsentry), nothingelse was changed and the same launch produced:
…and the UI came up. So the entire failure was downstream of "selected remote host not reachable".
Problems worth fixing here
A dead remote host blanks the whole UI. It should show the connection state, an error, and a
way to switch back to the local host.
No user-visible indication at all. A blank white window with no spinner, no logo, no message.
The selection cannot be cleared from outside the app. Setting
selected-remote-host-idtonull(with the app closed) does not stick — on next launch:The app reconciles the selection straight back to the only configured connection, so a user
whose only remote host is broken is locked out of the UI with no recovery path.
Separately: stale runtime paths break MCP startup
Unrelated to the above, but also real and also capable of leaving the UI stuck. The cached runtime
directory is named by a content hash, and persisted configs reference it by full path. When that
hash changes, the stale paths are not rewritten:
Updating those paths to the current hash removed the failures
(
mcp_extension_tool_discovery_failed: 3 → 0). Same class of fault applies to the CLI's ownbin\<hash>\directory, where an absolute path becomes invalid after the hash rotates.Summary of my corrections
Apologies for the noise on this thread. The common thread across all three — and the thing that
actually needs fixing — is that the loading screen has no visibility into, and no recovery from,
a startup step that never completes, whatever that step happens to be.