openai / openai/codex

[Windows][26.820.9563.0] ChatGPT launches headless with MainWindowHandle=0; disabling updater fixes startup

Open
#41,073 7 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

app bug windows-os
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using?

26.820.9563.0

What platform is your computer?

Windows x64, Microsoft Store / MSIX package OpenAI.Codex

What issue are you seeing?

After updating to 26.820.9563.0, the ChatGPT/Codex Windows desktop app no longer opens a visible window.

Multiple ChatGPT.exe processes are created and remain running, and they report Responding=True, but every process has:

MainWindowHandle : 0
MainWindowTitle  :

The application remains headless indefinitely.

The MSIX package itself appears healthy:

Name         Version       Status
----         -------       ------
OpenAI.Codex 26.820.9563.0 Ok

The install location is:

C:\Program Files\WindowsApps\OpenAI.Codex_26.820.9563.0_x64__2p2nqsd0c76g0
What steps can reproduce the bug?
  1. Update/install ChatGPT/Codex Desktop 26.820.9563.0 from the Microsoft Store.
  2. Launch the app normally.
  3. No window appears.
  4. Check the processes with:
Get-Process ChatGPT -ErrorAction SilentlyContinue |
Select-Object Id,ProcessName,Responding,MainWindowHandle,MainWindowTitle,Path
  1. Observe multiple live ChatGPT.exe processes with Responding=True and MainWindowHandle=0.

Passing an arbitrary Chromium argument did not fix the issue.

Startup log without workaround

The startup log stops almost immediately:

2026-08-27T06:54:38.033Z info Launching app agentRunId=null allowDebugMenu=false allowDevtools=false allowInspectElement=false buildFlavor=prod enableSparkle=false enableUpdater=true nodeEnv=undefined packaged=true platform=win32
2026-08-27T06:54:38.110Z info Appshot hotkey inactive configured=true enabled=false platform=win32

No main window is created afterward.

Workaround

If I terminate all ChatGPT processes, set:

$env:CODEX_SPARKLE_ENABLED = "false"

and launch the packaged app again, the window opens normally.

Example launch command used:

Get-Process ChatGPT -ErrorAction SilentlyContinue | Stop-Process -Force

$env:CODEX_SPARKLE_ENABLED = "false"

$pkg = Get-AppxPackage -Name OpenAI.Codex
$exe = Join-Path $pkg.InstallLocation "app\ChatGPT.exe"

Invoke-CommandInDesktopPackage `
    -PackageFamilyName $pkg.PackageFamilyName `
    -AppId "App" `
    -Command $exe

With the updater disabled, the app continues normal initialization and the UI appears.

Expected behavior / suggestion

The updater should be treated as a non-critical subsystem.

If updater initialization fails, the Microsoft Store update check fails, the update manifest is unavailable, or an update cannot be installed, that failure should not prevent the main application from starting or creating its window.

The app should instead:

  • log the updater failure,
  • continue launching the main UI normally,
  • optionally surface a non-blocking update warning after startup,
  • retry the update check later.

In other words, updater failure should degrade update functionality only, not take down the primary application startup path.

Additional notes
  • Re-launching normally reproduces the issue.
  • Package status is Ok.
  • Passing an arbitrary Chromium command-line argument did not fix the issue.
  • CODEX_SPARKLE_ENABLED=false does fix the issue.
  • This appears related to #33320, but the symptom on 26.820.9563.0 is different: the app remains running headless instead of visibly crashing after ready-to-show.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the packaged ChatGPT.exe launch with CODEX_SPARKLE_ENABLED unset, then compare it with the provided PowerShell launch using the variable set to false and inspect the startup log. Done means updater failures are logged without preventing the visible main window from opening, while update functionality can fail independently.

Written by the indexing model from the issue text.

Assessment

Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.