[Windows] Blank client area on 26.820.7780.0; --disable-direct-composition restores rendering
2. What version of the Codex App are you using?
26.820.7780.0
(Store package version - worth a glance at Help > About Codex to confirm it matches.)
3. What subscription do you have?
ChatGPT Plus
4. What platform is your computer?
Run this in PowerShell, paste the single line it prints:
"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"
5. What issue are you seeing?
After the Microsoft Store update from 26.818.8289.0 to 26.820.7780.0, the app opens with a completely blank client area. The window, caption buttons and process are all alive - the renderer mounts, routes mount, auth succeeds, IPC round-trips complete, and remote control from the phone works normally - but the web contents never paint.
Launching the same signed package executable with only --disable-direct-composition renders the full UI correctly. That single flag is the entire difference.
This is not a machine-wide DirectComposition failure. Chrome 151.0.7922.175 and Edge 151.0.4129.107 both render normally on the same machine with DirectComposition enabled. Chrome is five patch revisions from the Chromium 151.0.7922.170 this build embeds.
Measurements. The client area below the caption strip was screen-captured and sampled by luminance. A blank window scores 1 luminance level and 0.000% deviation from the modal value - one flat color across ~190,000 sampled pixels.
| Configuration | Result |
| --- | --- |
| Unflagged, direct exe launch | Blank: 1 level, 0.000% |
| Unflagged, Store identity launch | Blank: 1 level, 0.000% |
| Unflagged, moved across all 3 monitors | Blank on each |
| --disable-features=CalculateNativeWinOcclusion | Blank: 1 level, 0.000% |
| --disable-direct-composition | Painted: 99 levels, 6.558% |
| Parsec virtual display adapter disabled, unflagged | Blank on both launch paths |
| Chrome 151.0.7922.175, own top-level window | Painted |
| Edge 151.0.4129.107, own top-level window | Painted |
Also ruled out: --disable-gpu, cache clearing, a full Reset-AppxPackage with a fresh profile, and package repair.
This produces no error signal. Every startup log line reports success - window ready-to-show, React root render requested, routes mounted, auth resolved, no renderer or GPU process-gone marker, no exception. Crash telemetry will show these sessions as healthy. This failure mode is only visible if a human reports it.
Hardware and display configuration:
- Executable
ChatGPT.exe, embedded Chromium151.0.7922.170, packageOpenAI.Codex_26.820.7780.0_x64__2p2nqsd0c76g0 - NVIDIA RTX 5060 Ti, driver
32.0.16.1088(2026-07-21) - Three 4K DisplayPort monitors: 160 Hz primary, plus two at 60 Hz with Advanced Color enabled on one
- Mixed DPI: 175% user / 150% system
- Onset: Store update installed 2026-08-25 20:22; Windows logged a
MoAppHangforChatGPT.exeat 20:29
6. What steps can reproduce the bug?
- Windows 11 build 26200, NVIDIA GPU, multiple 4K monitors with mixed refresh rates and HDR enabled on one panel.
- Update the Codex app from
26.818.8289.0to26.820.7780.0through the Microsoft Store. - Launch the app normally from the Start menu tile.
- The window opens and Windows draws its caption buttons, but the client area is a single flat color and never paints. The app is otherwise healthy: logs show the primary window ready-to-show, React root render requested, routes mounted and auth resolved, and remote control from the phone works.
- Quit the app, then launch the same executable directly with the flag:
$pkg = Get-AppxPackage -Name 'OpenAI.Codex' | Sort-Object Version -Descending | Select-Object -First 1
Start-Process (Join-Path $pkg.InstallLocation 'app\ChatGPT.exe') -ArgumentList '--disable-direct-composition'
- The UI renders correctly. Removing the flag reproduces the blank window every time.
7. What is the expected behavior?
The client area should paint the app UI, as it did on 26.818.8289.0 and as Chrome and Edge on the same Chromium 151 branch still do on this machine.
Secondarily: when a presentation path fails, the app should fall back to one that works rather than leaving a uniform blank surface. A window that renders nothing while reporting a fully successful startup is very expensive to diagnose, and invisible to your own telemetry.
8. Additional information
Two traps that cause false "already tested" claims. Both cost hours here and may be affecting other blank-window reports:
--disable-gpudoes not bypass DirectComposition. On Windows, Chromium still presents through DComp with the GPU disabled, so that flag never exercises the broken path. "Tried--disable-gpu, still blank" does not rule out DComp.- Relaunching via
explorer.exe shell:AppsFolder\<PFN>!Appsilently drops command-line arguments. Any flag test performed that way tested nothing.
Requests:
- Investigate the DirectComposition / swap-chain configuration change between
26.818.8289.0and26.820.7780.0. - Fall back from a failed presentation path instead of leaving a uniform blank client area.
- Document a supported way to pass Chromium switches to the signed Store build. Launching the exe directly works and retains package identity and the AUMID, but it is not a documented path, and cold
codex://protocol activation has no way to carry the switch.
Possibly related: #34351 (different rendering symptom, but also Windows build 26200), #33192 and #38710 (other Windows DWM/composition reports).
Update: the flag is not a complete workaround. A launch ~2 minutes after a reboot
produced the blank window despite carrying --disable-direct-composition; a relaunch
~8 minutes after the same boot painted normally. Same build, same flag, same
machine. Either the presentation setup fails while the display stack is still
initializing after boot, or the flag reduces rather than eliminates the failure.
6 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Correction and additional data: I need to retract the deterministic wording in the original report.
--disable-direct-compositionis not a complete workaround, and removing it does not reproduce the failure every time.I now have 19 independently labeled launches on the same package and machine: 4 painted, 14 flat-blank, and 1 invisible/transparent. For the flag by itself, 3 of 7 launches painted and 4 of 7 were blank. Plain unflagged/Store launches were 1 of 5 painted and 4 of 5 blank. These runs were sequential and the sample is small, so that comparison should not be read as an estimated success rate; it only proves that the flag does not determine the outcome. Updating the NVIDIA driver from
32.0.16.1088to32.0.16.1656did not remove the failure.One earlier SwiftShader result also needs correction. A luminance-variation test classified it as painted, but desktop-background comparison showed that the client region was effectively transparent and exposing the desktop. The three observed states are therefore:
I compared the first 20 seconds of all 19 corresponding desktop logs. Every state logged main-frame load,
ready-to-show, renderer route mounting, and app-server connectivity, with zero startup errors and no startup renderer-gone, GPU-gone, or load-failure marker.ready-to-showtiming overlaps completely between outcomes. The current telemetry cannot distinguish painted from blank or invisible.Read-only inspection of this build's production Electron bundle shows the primary window uses
titleBarStyle:"hidden"with a transparent title-bar overlay. Its surface is selected by the appearance theme: opaque mode uses a solid background plusbackgroundMaterial:"none"; translucent mode uses#00000000plus Windows Mica. The normal fresh-primary path is shown immediately andready-to-showis logged, not used as a universal presentation gate.The strongest current boundary is an intermittent Windows presentation failure after normal renderer startup, not a proven DirectComposition-only failure. The flag remains a possible mitigation, but the root cause could be in the Electron window surface, Chromium Viz/swap-chain setup, DWM/display initialization, or their interaction.
For a diagnostic build, the most useful missing signal would pair a privacy-preserving
webContents.capturePage()/frame fingerprint with a Windows Graphics Capture fingerprint of the actual top-level window and a desktop-behind reference. That would separate renderer-flat, flat-presented, and transparent/invisible failures without uploading UI pixels.Sanitized per-session metrics and exact hashes are available if useful. I have not repeated profile/package resets because fresh state, repair, and reset were already non-discriminating.
你好你的这几个问题解决掉了没有?我今天突然也这样了、
Confirmed on a newer Windows build of Codex Desktop:
OpenAI.Codex 26.820.9563.0.Symptoms:
ChatGPT.exeprocesses but no visible main window.--disable-gpudid not help.--disable-direct-compositionimmediately restored rendering:Package:
OpenAI.Codex_26.820.9563.0_x64__2p2nqsd0c76g0
Embedded Chromium observed from the running process:
151.0.7922.170
I also tried reinstalling the Store app, Reset-AppxPackage, clearing/recreating the Codex profile, and --disable-gpu; none fixed the blank rendering. --disable-direct-composition did.
This appears to confirm that the DirectComposition rendering regression is still present in 26.820.9563.0.
I can reproduce the same blank-client-area phenotype on a newer ARM64 build after an app update.
Environment:
26.825.3734.0(Arm64, package statusOk)28000, ARM64The top-level window is alive and shows the caption buttons, but the complete client area is one uniform cream-colored surface. No application UI paints. The blank window opens repeatedly after the update.
I have not tested
--disable-direct-composition. This report extends the affected version and architecture matrix; it does not prove that DirectComposition is the cause on this device. I retained a screenshot for a private support channel.I uploaded logs and diagnostics through
/feedback.Uploaded thread:
01a0470d-0700-71b0-8afb-875b432c5088Recovery update — containment, not a root-cause fix.
Please treat the deterministic wording in the issue title/initial reproduction as superseded by the earlier 19-run correction and this update. A later live recurrence stayed black after resize/maximize-restore, moving the window between displays, turning Windows Transparency effects off, and one authenticated launch carrying
--disable-direct-composition. The flag should not be relied on as a fix.The currently installed Store package is
OpenAI.Codex 26.825.4187.0(internal app26.825.32147, build 7303, Electron42.3.0, Chromium151.0.7922.174). Read-only inspection of its signed bundle shows that both shipped chrome-theme defaults still containopaqueWindows:false. In the Windows main process,falseselects a transparent background plus Mica;trueselects an opaque background plusbackgroundMaterial:"none".A controlled containment worked:
opaqueWindows:truechanged.The UI appeared. Post-launch verification found a normal unflagged package process and both raw user-theme values still set to
opaqueWindows:true.There is an important confound: the 19-launch failure dataset was collected on package
26.820.7780.0, while this successful launch used both a newer package and the opaque override. I do not have a user-observed26.825.4187.0launch withopaqueWindows:false, so this result cannot isolate the setting from a possible build-side change. I am not switching the working app back merely to improve attribution.The result makes opaque/no-Mica mode an effective containment on this machine and points more specifically at the transparent/Mica presentation path or its initialization. It does not prove the exact Electron/Chromium/Windows primitive or a permanent vendor fix. A future blank recurrence while both values remain
truewould be materially new evidence; a future signed build should be validated with normal activation before removing the override.The unsafe local “Codex (safe rendering)” auto-heal shortcut and force-kill/retry payload have now been removed. Normal Store/Start-menu activation is the retained path.