Codex Windows desktop freezes for 2–3 seconds during first typing in every new conversation
Open 💬 7 comments Opened Jun 23, 2026 by Liu8976
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Description
On the Codex Windows desktop app, typing in a newly created conversation consistently freezes after the first few characters.
Example: when rapidly typing hkjshkjhdjkhskja, the UI initially displays only hkj. The caret continues blinking, but subsequent characters do not appear. After approximately 2–3 seconds, all buffered characters appear at once.
This occurs with both English and Chinese input. After the initial freeze, typing returns to normal.
Reproduction steps
- Open Codex desktop on Windows.
- Click New conversation.
- Immediately type a sequence of characters quickly.
- Observe that only the first few characters appear.
- Wait 2–3 seconds; the remaining buffered characters then appear together.
The issue reproduces in every new conversation.
Expected behavior
Characters should appear immediately and continuously while typing.
Troubleshooting already performed
The issue persists after:
- Rebooting Windows and clearing stale Codex/Node processes.
- Testing in a completely new conversation.
- Testing both English and Chinese input methods.
- Disabling Ambient Suggestions.
- Disabling all plugins and
node_repl. - Starting Codex with
--disable-gpu. - Starting Codex with
--disable-spell-checking. - Starting Codex with a completely fresh
--user-data-dir. - Confirming that CPU, memory, page file, IME processes, and GPU usage are normal.
This strongly suggests a synchronous first-input/editor initialization task blocking the renderer main thread.
Environment
- Codex desktop package:
26.616.6631.0 - Embedded Chromium/product version:
149.0.7827.115 - OS: Windows 11 Pro, 64-bit
- Windows build:
26200 - GPU: NVIDIA GeForce GTX 1050 Ti
- GPU driver:
32.0.15.7700 - Display: 1920×1080 at 60 Hz
7 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I’m seeing the same first-typing freeze described here, but also similar brief stutters on Codex launch, opening a new chat, and opening Settings.
I opened #29821 with diagnostics from a 30s Windows capture. In my case the stutters correlate with Codex main/renderer/app-server CPU and memory spikes, while GPU, disk, WMI, and total system CPU stay modest. It may be the same underlying renderer/startup initialization issue, just visible in more places.
Thanks for writing this up. I am seeing a related Windows Codex Desktop performance regression in #28855: since June 12, opening/using Codex Desktop can cause severe intermittent mouse/typing/system input lag, and it still persists for me on
OpenAI.Codex 26.616.10790.0.I linked your report in a broader Discussion collecting recent Windows Desktop performance reports here: https://github.com/openai/codex/discussions/29949#discussioncomment-17428007
No action needed from you unless you want to add more detail there, but I wanted to connect the reports because the recent Windows issues look related enough that they may need a canonical tracker.
I can reproduce what looks like the same first-input freeze on Windows Codex Desktop, with a more specific IME trigger.
Environment:
OpenAI.Codex 26.623.5546.026200.8655(Windows Home China)2.1.0.31Behavior:
This makes it feel like the Codex composer has an expensive first committed-text / IME composition path in a newly created conversation, rather than a general system-wide IME slowdown.
I can reproduce this consistently on a newer Windows build, and an external
100 ms sampler plus local bundle tracing narrowed the trigger considerably.
This also appears related to #27924, although in this reproduction digits,
English, and Chinese all trigger the same stall.
Environment
OpenAI.Codex 26.707.3748.042.1.0150.0.7871.10119045, x64High-resolution capture
Two consecutive new-task reproductions produced external-sampler gaps of:
4.620 s4.616 sDuring both gaps:
ChatGPT.exeprocess jumped from roughly265-645 MBprivate memory to
1.43-1.46 GB, then dropped immediately after the stall.405 MB.100 MB.Responding=True, so no standardApplication Hang event was emitted.
This did not change after disabling all plugins/MCP servers, disabling GPU,
testing a fresh task, or changing app-server process priority.
Trigger path
In the desktop bundle, the new-task composer subscribes to
composerController.hasText(). The local-conversation prewarm effect is gatedon that value and schedules work after 300 ms. That path reaches
prewarm-conversation-for-hostand thenthread/start.Locally observed
thread/startdurations were approximately4.3-8.2 s.The main-process response path parses the app-server response and forwards the
full response through
webContents.send(). The transient main-process memorygrowth suggests that parsing/serialization or Electron structured cloning of
that response is worth instrumenting, although I cannot prove from the bundle
alone which stage owns the allocation.
Local timing experiment
As a diagnostic experiment only, I changed the effect gate from the equivalent
of:
to:
The first-input freeze disappeared in repeated tests on this machine. This is
not proposed as a production fix: the inner prewarm function still rejects an
empty persisted prompt, and eager prewarming needs cancellation/reuse behavior
for abandoned tasks. It does, however, strongly correlate the user-visible
stall with the first-text-triggered local prewarm path rather than IME, GPU, or
plugin initialization.
Suggested areas to instrument
thread/startresponses.webContents.send()structured-clone time in the Electronmain process.
without cloning the full object on the main thread.
I can recapture a sanitized sampler trace if a maintainer specifies the most
useful counters or logging fields.
Also seeing this behavior consistently. Got a performance trace of it:
no-active-thread-019f5a8c-98f3-7370-b0f5-721b6d79699b
Additional Windows reproduction: Proxmox VM, current build, 5-6s
thread/startcalls and occasional 30s stallsI can reproduce the same first-input freeze described in this issue on a newer Windows Codex build. My environment is a Windows guest running on a Proxmox server, which also helps show how storage latency can amplify the underlying first-input problem.
Environment
OpenAI.Codex 26.707.12708.00.144.5150.0.7871.11526100User-visible behavior
Windows Error Reporting has recorded
AppHangTransientevents for the Codex/ChatGPT process on July 12, July 14, and July 16. The current Codex process tree was using approximately 1.6 GB working set while the guest still had about 9.7 GB of available RAM, so this does not look like memory pressure or paging exhaustion.Codex log timings
The current build repeatedly logged slow successful
thread/startresponses:The app-server initialization handshake for the current launch also took
5983 ms.On the preceding installed package,
26.707.9981.0, the desktop log captured an exact 30-second app-server initialization timeout:The 5-6 second
thread/startdurations closely match the trigger path and timings reported in the detailed investigation above. The 30-second handshake failure may explain some of the longer episodes, although I cannot prove that every 20-30 second UI stall is the same timeout.Storage and SQLite observations
Task Manager showed repeated 100% disk-active-time bursts with only a few MB/s of throughput. A separate 15-second read-only counter sample averaged roughly 57% disk activity while transferring only about 0.5 MB/s. The virtual disk reports healthy and has ample free space, so this looks like latency rather than capacity exhaustion.
I also checked the local Codex SQLite files without modifying, vacuuming, checkpointing, or deleting anything:
state_5.sqliteis only 1.69 MB andPRAGMA quick_checkreturnedok.SQLITE_BUSY,database is locked, or corruption errors.logs_2.sqliteis approximately 437 MB, with a 6.3 MB WAL.logs_2.sqlitetook roughly 26 seconds on this guest storage.This does not prove that the first-input path performs a full scan of
logs_2.sqlite. In fact, the state and logging databases have relevant indexes, and #28855 reports that Windows lag can reproduce even after the log database is recreated and remains small. My interpretation is therefore:thread/startpath is the primary issue.state_5.sqlite.Suggested instrumentation
It would be useful to capture, separately:
thread/startexecution time;webContents.send()/ structured-clone time;state_5.sqlite,logs_2.sqlite, and rollout hydration during this path.The most important product behavior would be to keep the composer responsive while local conversation prewarming and thread creation complete, even when the app-server or storage layer is slow.