Windows Desktop freezes at turn start and completion, but not during mid-response follow-up input

Open 💬 3 comments Opened May 23, 2026 by Yuimi-chaya

What version of the Codex App are you using (From “About Codex” dialog)?

Codex Desktop 26.519.41501 Package: OpenAI.Codex_26.519.5221.0_x64__2p2nqsd0c76g0 Electron: 42.1.0 Chrome: 148.0.7778.97

What subscription do you have?

No OpenAI account / not signed in

What platform is your computer?

Microsoft Windows NT 10.0.26120.0 x64

What issue are you seeing?

Codex Desktop on Windows repeatedly becomes unresponsive at two specific turn-boundary moments:

  1. Immediately after sending a user message.
  2. Immediately after the LLM finishes its response.

However, if I type an additional follow-up / steering message while the LLM is still responding, that does not trigger the freeze.

This suggests the freeze is probably not caused by streaming text rendering itself, but by turn start / turn finalize work such as local conversation persistence, final render/layout, usage/state accounting, plugin/tool state refresh, session list refresh, or Electron main-process synchronization.

Observed behavior:

  • The app becomes unresponsive for 30 seconds to several minutes.
  • The freeze happens at turn boundaries, not during ordinary streaming.
  • Codex main process becomes Responding=False.
  • Electron GPU process can sustain high CPU for several minutes.
  • CPU hot threads move across logical CPUs, so it does not appear to be a defective CPU core.

What steps can reproduce the bug?

  1. Open Codex Desktop on Windows.
  2. Start or continue a conversation.
  3. Send a normal user message.
  4. Observe that the app may freeze shortly after sending.
  5. Let the assistant complete its response.
  6. Observe that the app may freeze again immediately after the response completes.
  7. During an assistant response, send an additional steering/follow-up message before the assistant completes.
  8. Observe that this mid-response input does not trigger the same freeze.

The important detail is that the freeze happens at send-message and assistant-response-complete boundaries, but not when sending a follow-up while the assistant is already responding.

What is the expected behavior?

Codex Desktop should remain responsive when sending a message and when the assistant response completes.

Turn start and turn completion should not block the Electron main process or cause sustained high CPU usage in the main/GPU processes.

Additional information

Diagnostics collected during reproduction:

  • Process affinity was full: 65535 for Codex processes during reproduction.
  • Process Lasso did not change Codex affinity during reproduction.
  • Clearing GPUCache, DawnWebGPUCache, and DawnGraphiteCache did not resolve the issue.
  • Disabling GPU acceleration via Chromium/Electron startup flags did not resolve the issue.
  • Removing Codex++ as a control variable did not resolve the issue.
  • The issue existed before using WeType/WeChat input method features, so that does not appear to be a necessary condition.

Peak process samples:

  • electron-gpu pid 30364 peak around 550% CPU
  • main pid 28708 peak around 400% CPU, Responding=False
  • renderer pid 30116 peak around 100% CPU
  • affinity 65535 for Codex processes during reproduction

A WPR trace was collected during sustained Electron GPU-process CPU usage:

  • codex-wpr-20260523-215009.etl

The trace is large, so I can provide it through a private upload if useful.

Related local artifacts collected:

  • summary.log
  • process-samples.csv
  • thread-hotspots.csv
  • cpu-core-samples.csv
  • WPR .etl trace

Hypothesis:

This looks like a Codex Desktop / Electron turn-boundary performance issue on Windows, possibly in turn start / turn finalize state persistence, final message hydration or Markdown/layout pass, session list refresh, plugin/tool/browser state refresh, or Electron main-process synchronization with renderer/GPU process.

View original on GitHub ↗

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