Windows: system-wide mouse cursor flicker after turn completes; fixed only by restarting dwm.exe

Open 💬 2 comments Opened Jul 20, 2026 by cyberlieflife

Summary

On Windows, after a Codex Desktop turn finishes (idle), the mouse cursor starts flickering continuously across the entire screen. The flicker is not present while the turn is in progress. It survives full app exit (no ChatGPT/codex processes remaining). Restarting dwm.exe fixes it immediately; rebooting Windows also fixes it. Reloading system cursors via SPI_SETCURSORS does not fix it.

Environment

  • OS: Windows (build: run winver and fill in if needed)
  • Codex Desktop: 26.715.52143 (Microsoft Store / MSIX)
  • Platform: Windows x64

Already ruled out (please do not close as environment noise)

  • Custom mouse cursor theme / pointer style
  • Background software
  • GPU / GPU driver reinstall
  • External injectors (e.g. Codex++ / skin injectors)
  • Built-in pet / avatar UI feature
  • Codex Computer Use

Steps to reproduce

  1. Open Codex Desktop on Windows.
  2. Send any message and wait until the turn fully completes (agent becomes idle).
  3. Move the mouse anywhere on the screen (including empty desktop).

Expected

Cursor remains normal after turn completion.

Actual

| Condition | Result |
|-----------|--------|
| During turn | No flicker |
| After turn completes (idle) | Continuous system-wide cursor flicker |
| Start a new turn | Flicker temporarily stops during the turn |
| That turn ends | Flicker returns |
| Fully quit Codex (no ChatGPT/codex processes in Task Manager) | Flicker continues |
| SystemParametersInfo(SPI_SETCURSORS) / restore system cursors | No effect |
| Stop-Process -Name dwm -Force (DWM restarts) | Flicker stops immediately |
| Reboot Windows | Flicker stops |

Inference

The post-turn idle path corrupts DWM cursor composition / hardware cursor state.
The bad state:

  • outlives the Codex process
  • is not fixed by reloading the cursor scheme from the registry
  • is cleared only by recycling DWM (or rebooting Windows)

Workaround

Stop-Process -Name dwm -Force

Why this report is actionable

  • Clear phase lock: only after turn idle, not during streaming
  • Clear layer lock: DWM session state (process exit does not help; DWM restart does)
  • Controlled exclusions listed above so it is not mistaken for cursor pack / driver / injector issues
  • Optional: 10s screen recording starting at turn completion helps a lot
Request

Please investigate the turn-complete → idle path on Windows Desktop (pointer / layered window / composition / mouse passthrough cleanup) for anything that can leave DWM’s cursor composition in a bad state after the app exits.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗