Skip to content

Windows: sidebar ghost trails/stale repaints at 120Hz; disabling GPU compositor fixes it #20413

@fishburgertech

Description

@fishburgertech

Summary

Codex Desktop on Windows leaves visible ghost trails / stale UI remnants in the left sidebar during hover, mouse movement, and window redraw/resize. Old sidebar rows, dark rectangles, and text briefly remain behind instead of being fully repainted.

This is reproducible enough to make Codex visually distracting in normal use. It does not occur after launching Codex with GPU/compositor-related Chromium flags disabled, which points to the Windows + Electron/Chromium compositor path rather than normal app content rendering.

Environment

  • App: Codex Desktop for Windows
  • Package: OpenAI.Codex 26.422.9565.0
  • App process metadata: Electron 41.2.0
  • Windows build: 26100
  • GPU: NVIDIA GeForce RTX 3060
  • NVIDIA driver: 32.0.15.9636
  • Display mode: 1920x1080, 120 Hz
  • Device scale factor observed in renderer command line: 1.25
  • Renderer process uses --device-scale-factor=1.25
  • Windows transparency effects: off
  • Codex default launch has an active GPU process
  • Default GPU process enabled feature included EnableTransparentHwndEnlargement

Repro characteristics

  • Most visible in Codex's dark left sidebar and hover states.
  • Appears during hover/mouse movement and window redraw/resize behavior.
  • Looks like stale surfaces/text are not being fully invalidated or repainted.
  • Much more obvious in Codex than in normal desktop use, likely because the app combines dark custom UI, large sidebar hover regions, and Electron/Chromium compositing.

System-level workarounds already tested

The following did not fully resolve the issue under the normal Codex launch path:

  • Disabled MPO via HKLM\SOFTWARE\Microsoft\Windows\Dwm\OverlayTestMode = 5
  • Disabled DirectX swap-effect upgrade via HKCU\Software\Microsoft\DirectX\UserGpuPreferences, DirectXUserGlobalSettings = SwapEffectUpgradeEnable=0;
  • Set Codex to high-performance GPU preference
  • Cleared stale per-user monitor ICM profiles / removed custom monitor profile path
  • Windows transparency effects were already off

Workaround that resolves it

Launching Codex with the following Chromium/Electron flags fixes the ghosting:

--disable-gpu --disable-gpu-compositing --disable-direct-composition --disable-features=EnableTransparentHwndEnlargement,CalculateNativeWinOcclusion --force-color-profile=srgb

With those flags active, the main process command line includes the full workaround, and the renderer process includes --force-color-profile=srgb and --disable-gpu-compositing. The GPU process falls back to WARP-style behavior (--use-angle=d3d11-warp-webgl) rather than the normal accelerated path.

Suspected areas

The full workaround is intentionally broad, but it strongly suggests the default issue is somewhere in the Electron/Chromium accelerated presentation path, likely one of:

  • Windows DirectComposition
  • EnableTransparentHwndEnlargement
  • native window occlusion / stale invalidation behavior
  • GPU compositor / ANGLE / D3D path on NVIDIA at 120 Hz
  • interaction with 125% scaling / device-scale-factor=1.25

Expected behavior

Codex should not leave stale UI trails or ghosted sidebar/text remnants under the default install/launch path, including on NVIDIA + 120 Hz + 125% scaling setups.

Notes

A narrower flag isolation pass would be useful to determine whether --disable-direct-composition, --disable-features=EnableTransparentHwndEnlargement, or --disable-gpu-compositing is the minimal fix. The broad compositor-disable launch is currently confirmed as a working workaround.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingperformancewindows-osIssues related to Codex on Windows systems

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions