Repository navigation
[Windows] Codex Desktop severe UI lag, input delay, and intermittent Not Responding while browser version remains responsive #43726
Description
What issue are you seeing?
Codex Desktop on Windows becomes severely sluggish during normal use. The problem affects basic UI interaction rather than only model/network response time.
Observed symptoms:
- Clicking buttons or controls can have a large delay.
- Switching between conversations/threads is very slow.
- Typing into the prompt box visibly lags behind keyboard input.
- The app intermittently enters a
Not Respondingstate. - Clicking the taskbar icon may fail to minimize/restore the Codex window normally.
- In some sessions the app can remain stuck on the startup/logo screen.
- Task Manager still shows the Codex/ChatGPT processes running while the visible app is unresponsive or extremely slow.
The web version of ChatGPT/Codex on the same machine and network does not show this UI-level lag. Waiting for a web conversation to load only shows normal network/request latency; typing, clicking, and switching UI remain responsive.
This makes the problem appear specific to the Windows Codex Desktop application rather than the network or account.
What steps can reproduce the bug?
- Launch Codex Desktop on Windows 11.
- Open or switch between several conversations/tasks.
- Type in the prompt input and interact with buttons/navigation.
- Continue using the desktop app for a while.
- Observe increasingly slow UI interaction, delayed typing/clicks, and occasional
Not Respondingbehavior.
The exact trigger is not yet isolated. It can also reproduce shortly after launch in some sessions.
Expected behavior
The desktop application should remain responsive during normal interaction. Typing, clicking buttons, switching threads, and minimizing/restoring the window should respond immediately even if an API/model request is still loading in the background.
Troubleshooting already tried
- Closed VS Code and other Codex integrations so only the desktop app was running.
- Repaired/reset the Windows app.
- Cleanly reinstalled the desktop app.
- Updated the GPU driver.
- Restarted Windows.
The severe lag still reproduces after reinstall and driver update.
Environment
- OS: Windows 11 x64
- Codex Desktop: Microsoft Store / Windows desktop application
- Browser version on the same computer: responsive
- Network used by desktop and browser is the same
I can provide the exact current Codex Desktop build number and additional diagnostics if maintainers need them.
Additional context
This appears similar to other Windows desktop performance reports, for example:
- [Windows][Desktop 26.707.12708.0] ChatGPT.exe spawns hundreds of taskkill.exe/conhost.exe processes, causing WMI storms and DWM degradation #33776
- Codex Desktop 26.611.8604.0 causes intermittent system input lag on Windows despite clean logs/plugins disabled #28855
- Codex desktop app intermittently freezes Windows shell/UI; opening Codex Settings stops the freeze #16374
- [Windows] App freezes: Work Louder/Codex Micro HID discovery blocks Electron main thread #33912
- Codex Desktop becomes unusable on long active threads due to app-server/renderer memory and TRACE log churn #21134
However, in this case the most consistent symptom is severe application UI/input latency while the browser version remains normal, and reinstalling the Windows app does not resolve it.
It may be useful to investigate whether the Electron/renderer/main process is blocking the UI thread, whether local conversation/session state is causing progressively slower rendering, or whether a Windows-specific background process is repeatedly consuming the main thread.
Activity
github-actions commentedon Sep 8, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
aglsv commentedon Sep 9, 2026
I reviewed the two potential duplicates suggested by the bot (#43405 and #43583). At this point I do not think this issue can be confirmed as a duplicate of either one.
cua_node/node.exeandcodex.exe(multi-GB to 10+ GB private committed memory). I have not observed or confirmed that same extreme memory pattern in my case.D3DCompilestall for the internal ChatGPTAvatar/Horizon shader. My main symptom is broader and more persistent UI/input latency: delayed typing, slow button clicks, slow thread switching, taskbar restore/minimize problems, and occasionalNot Respondingstates.A particularly useful distinction is that the browser version on the same machine and network remains responsive, while the Windows Codex Desktop app exhibits the lag.
So there may be overlap with the same general Windows desktop performance area, especially #43405, but there is not enough evidence yet to conclude that this is the same root cause. I would prefer to keep this issue open unless maintainers can confirm a duplicate/root-cause match.
qqqzhH commentedon Sep 10, 2026
Additional reproduction with main-thread evidence: the Desktop main process blocks 3–26 s on a synchronous IPC every 20–40 s, with no CPU/GPU/disk load
Environment
OpenAI.Codex_26.901.6511.0_x64__2p2nqsd0c76g0(bundled codex-cli 0.153.4), Microsoft Store buildgpt-6-astraSymptoms
The Desktop window shows Not Responding for 3–26 s at a time, roughly 1.5 times per minute (measured with a 1 s responsiveness probe over ~3 hours: 40 / 27 / 32 stalls in three consecutive windows, across app restarts). CPU, GPU and disk all stay idle while it is frozen.
Evidence captured while
Responding=False(4 samples, identical distribution)Per-process CPU sampled at t0 and t+3 s during one stall — nothing is running:
Main-process working set jumps ~+300 MB at stall start (e.g. 520 -> 882 MB, peak 1269 MB observed) and drops back on recovery.
The 10 s of Desktop log immediately before every stall is empty — no app-server request, no plugin/marketplace activity, no error. Nothing is logged while it is frozen.
Ruled out by measurement (not by guesswork)
supports_websockets = false); stalls unchanged.codex doctorreports "Responses WebSocket is not enabled for the active provider"; CLI runs reporttransport="responses_http".wss://chatgpt.com/backend-api/wham/remote/control/serverdid fail once withos error 10060after 7 retries and took the app-server down (exit code 1, app fatal + GPU child killed, WERApplication Hangat the same second). After clearing the enrollment the app re-enables it at startup but logs no WS error — and the stalls continue unchanged.[features] in_app_browser = false+browser_use = false(log confirmsbrowser_use_availability_resolved available=false reason=browser-pane-disabled) — the stalls continue.HidD_Get*String) against every HID interface: all string-descriptor queries < 40 ms. No slow/wedged device.CreateNoWindow+ redirected pipes): 22–32 ms. Normal.dwm.exestays at 79 MB / 0 s CPU, no accumulation. This build is newer than that fix.Win32_PerfFormattedData_PerfProc_Processquery ≈ 520 ms,WmiPrvSEidle. No WMI storm.Related existing reports
plugin/list/mcpServerStatus/listonly take 2–5 s once at startup, while the stalls recur every 20–40 s afterwards.Ask
Is the Desktop main process expected to make a synchronous IPC call on a 20–40 s cadence? If you can tell me either (a) which switch enables the built-in performance-trace recorder, or (b) what you would like captured, I will collect a native trace / ETW capture during a stall and attach it. I can reproduce this on demand (it happens ~1.5x per minute), so any instrumentation you want can be gathered quickly.
Meganezaru commentedon Sep 25, 2026
I’m seeing what appears to be a related issue when using Codex from the ChatGPT desktop app on Windows.
The sequence in my case is as follows:
The latency is system-wide rather than limited to the ChatGPT/Codex window, and it affects typing in unrelated applications as well.
I also see another possibly related symptom involving sub-agent completion reports. A sub-agent spawned from an individual branched task reports its completion not only to that individual task, but also to the original parent task from which the worktree-managed task was branched.
In other words, the completion report appears in both:
This happens even though the sub-agent was created as part of work being performed only inside the individual branched task.
The important distinction in my case is that simply using multiple worktree-managed tasks did not appear to cause the problem. The keyboard latency only started after those tasks began spawning sub-agents to delegate work to another model.
zekai7261-stack commentedon Oct 3, 2026
Additional measured evidence: ChatGPT-mode sidebar family-key serialization hotspot
This is a separate affected installation, providing a narrower profiling lead for the Windows desktop UI lag described here. It does not establish that every report in this issue has the same cause.
Environment at capture: Microsoft Store package OpenAI.Codex 26.928.4866.0, Windows 10 Pro 10.0.19045 x64, i7-10700, 32 GB RAM, RTX 2070 SUPER, client/system on SSD. Measurements were taken on 2026-10-03. No reinstall or permanent source patch has been performed.
Reproduction and comparison
In ChatGPT mode, repeatedly select existing conversations from Recents. Hover/wheel feedback and sometimes typing freeze along with navigation, commonly for 4–10 seconds, sometimes longer. Codex mode is substantially faster. Collapsing Recents sometimes helps temporarily, but does not reliably eliminate this ChatGPT-mode issue.
On the same machine/account, a short web-interface comparison with the sidebar expanded switched the same three conversations in approximately 1 second. On a second consecutive warm pass, click plus accessibility-observation calls returned in 1143 / 1082 / 1011 ms, with the corresponding conversation body visible after each call. These are automation-return times, not exact presentation latency, and this is not a prolonged input/usage benchmark.
Recorded evidence and integrity limits
Installed-code lead
app-shared-19f7cd6bb8b6.js: trace zero-based line 289, columns 118457 (Vst) and 118661 (Hst). Hst recursively maps arrays and copies object fields in sorted-key order; Vst JSON-stringifies the result unless a custom key is supplied. The eA family factory computes this key before its Map lookup, including cache hits. The vA hook also computes the key and resolves the family before useMemo.app-initial-9e0f03d3c485.js: Jcs at trace zero-based line 4589, column 68387. The sidebar builds parameters containing chatGptSource with chatTargets, pinnedTargets, pinnedProjects and projects, then calls If($0n, parameters). Import mapping is If=vA, Ta=aA. $0n uses the two-argument Ta factory without a custom key/excludeFieldsFromKey. Mode-dependent filtering occurs inside the derived callback, after key construction. Nls likewise receives the expansion-group array without a custom key. ct/dt already have compiler-generated memoization; the concern is repeated structural key calculation even on family cache hits, not an unproven claim that they are always new objects.No argument payloads were captured, so actual input size, growth cause and precise contribution by family remain open. This does not prove that full chat transcripts are serialized or that specific conversations are corrupted.
Suggested investigation
Please measure payload shape/size, key recomputation count and time for $0n/Nls. Consider stable identifiers plus versioned store dependencies instead of serializing a growing source object for family lookup. Identity-only/global WeakMap caching is not a validated drop-in fix: immutability, invalidation, equal-content distinct objects, in-place updates and disposal must be checked.
Existing user conversations, projects, sidebar organization, plugins and skills need to remain intact. A reset/purge is not an acceptable permanent workaround for this installation. Raw traces, transcripts, account/conversation IDs, credentials, local paths and screenshots with private chat titles are deliberately not attached. Please investigate the measured code path and provide a fix or a data-preserving workaround.
zekai7261-stack commentedon Oct 4, 2026
Consolidated follow-up (2026-10-05): startup improved after local-data reduction, but cumulative UI stalls remain
This combines the earlier renderer/code-path findings in my previous comment with new user observations and a separate local storage analysis by DeepSeek Harness (DSH). The desktop performance problem remains unresolved.
Environment: Windows 10 Pro 10.0.19045 x64, i7-10700, 32 GB RAM, RTX 2070 SUPER, system/client on SSD. Installed package OpenAI.Codex 26.928.4866.0, rechecked on October 5. The affected surface is primarily ChatGPT mode inside the desktop app; Codex mode was substantially faster in the earlier comparison.
1. New reproduction: degradation accumulates across opened conversations and affects Settings too
The user reports this sequence after the local-data reduction:
These are user-observed thresholds and timings, not instrumented click-to-paint measurements. The new report describes approximately single-core saturation; the earlier independent trace below directly recorded almost one full CPU core for a 4.9-second main-thread task. We have not captured a new timestamp-aligned CPU trace of the October 5 Settings clicks.
The Settings symptom establishes that the slowdown affects navigation outside the conversation body. It strengthens the case for shared UI/main-thread or shared-state work, and for accumulation within a client run. It does not by itself prove that every interaction synchronously recomputes all loaded conversations; that precise scope still needs instrumentation.
2. Renderer evidence, with the existing corrections preserved
October 2 event trace: the longest recorded renderer-main-thread task was 4,896.835 ms wall time, with 4,858.061 ms thread CPU time (99.2%). Identified GC scopes occupied 340.858 ms and Layout/Paint 83.822 ms (scope unions, overlapping with JavaScript; do not add them as separate CPU components). Seven tasks exceeded one second. The user subsequently confirmed repeated Settings/Voice/Settings switches and 4–5-second stalls during this capture, but individual clicks were not timestamp-aligned to individual tasks.
October 3 CPU-profile task windows: recorded wall/CPU times were approximately 3,767/3,629 ms, 11,039/10,678 ms, and 9,065/8,777 ms. In those three windows, canonical-key functions Vst + Hst represented 86.86% / 86.48% / 86.54% of self samples; GC was approximately 7–10%. These are sampling proportions, not precise per-function CPU seconds.
The whole profile failed strict completion validation: automatic cutoff omitted End records, and there were 100 small negative deltas outside the selected windows (maximum magnitude 18 µs; total magnitudes 763 µs). The three reported windows had complete node/parent references, matched samples/timeDeltas, recorded coverage, and zero negative-delta samples, using signed deltas without clamping. Profiling overhead prevents treating this as an unprofiled speed benchmark.
Ancestor-chain correction: of the four highest-self-count Vst nodes examined per task, 11 of 12 complete chains reach sidebar component Jcs. One does not: it reaches a layout-effect/React commit path. The entire serialization share must not be attributed exclusively to Jcs.
An earlier unprofiled 90-second lag window averaged 1.59 renderer core equivalents, with working set 1662 → 3054 MiB, at least 11810 MiB available RAM, and zero sampled disk queues. This supports CPU-heavy UI work in that window; it does not prove absence of locks, transient I/O, or leaks.
3. Installed-code lead: cache hits still pay for canonical JSON keys
In app-shared-19f7cd6bb8b6.js, trace zero-based line 289, columns 118457 (Vst) and 118661 (Hst):
In app-initial-9e0f03d3c485.js, Jcs at trace zero-based line 4589, column 68387:
No runtime argument payloads were captured. Their actual size, growth with opened conversations, and the respective costs of $0n/Nls remain unmeasured; this is not proof that complete chat transcripts enter these keys.
4. Independent storage findings and intervention result
DSH supplied aggregate measurements from local SQLite/rollout analysis. Scripts were reviewed locally; the original pre/post experiment was not independently rerun for this comment.
The database baseline varies slightly by snapshot (another retained pre-trim copy was 1067.1 MiB). These binary units correct the scripts' original “MB/GB” labels. The web-profile total includes retained business storage; it is not all disposable cache. The logs reduction was VACUUM, with reported free-page ratio 31% → 0.
DSH's pre-trim thread_items analysis reported 58,746 rows / 199 threads, approximately 17.1 KiB per item:
The item-type totals use SQLite LENGTH(TEXT)/2^20, so they are character-count-based size estimates, not exact UTF-8 byte totals.
The sessions directory was 3.36 GiB / 183 files. Among the 40 largest files (2.80 GiB), 84.4% of bytes matched long base64-like runs. This was a regex estimate with image signatures, not complete image decoding/classification. The largest rollout was 303.9 MiB, with 2,127 Screenshot and 610 Snapshot string occurrences; these are marker counts, not unique image/event counts. The next was 242.9 MiB, with a 95.3% base64-like fraction.
Large payload representations were observed in both rollout files and the history projection. No effective size/retention bound was evident in this sample; the analysis does not establish that every payload is duplicated or that the product has no retention policy anywhere.
Outcome: the user estimates roughly 50% improvement immediately after launch, but after opening multiple conversations the lag remains approximately 80–90% of its previous severity. These are subjective estimates. History truncation, logs VACUUM, and cache reduction were combined, so this is not a controlled single-variable benchmark.
The history reduction was not lossless: tool-output records were truncated, and DSH's recursive pass also shortened four old tool-call argument fields. Pre-trim backups and original rollouts were retained; sessions were not stripped. DSH reported quick_check=ok, which establishes structural integrity, not unchanged content. This is diagnostic evidence, not a recommended purge/truncation workaround. Reduced file size persisted during observed subsequent use; that does not guarantee no future backfill/migration.
5. Interpretation and engineering request
There are two distinguishable observations: reduced local-data size improved initial responsiveness, while severe within-run degradation and Settings delays persisted. Reduced read/parse burden is a plausible explanation for the initial improvement, but read costs were not instrumented. Repeated synchronous key/state computation is a measured runtime lead; its precise accumulation mechanism remains open. The storage and computation factors may interact.
Please instrument the 1st, 5th, and 9th opened-conversation stages, including a Settings subsection click at each stage, and correlate each interaction with:
Please investigate bounded stable-ID/version-based family keys and proper invalidation/disposal. Identity-only global WeakMap caching is not a validated drop-in fix.
A reinstall workflow was prepared and tested for data preservation, but stopped while waiting for normal client exit; no uninstall, reinstall, or live restore occurred. It is currently shelved and supplies no performance A/B result. Earlier web comparisons were briefly responsive but are not prolonged benchmarks.
Please provide a fix or a supported workaround that preserves conversations, projects, sidebar organization, plugins, and skills. Only aggregate evidence and installed bundle references are included here; no account identifiers, private chat contents, personal absolute paths, raw traces, or backup contents are attached.
zzzuuunnn6 commentedon Oct 7, 2026
Additional first-hand report: severe sidebar conversation-switching lag remains a separate unresolved problem on Windows, app 26.1002.52244 / build 13536.
The affected user explicitly asks that general UI sluggishness be investigated independently of renderer crashes. Clicking between long-running development conversations is severely delayed, while other applications on the same computer behave normally. This is the user's observation; mouse-click-to-paint latency has not yet been instrumented.
The earlier crash escalation already mentioned switching lag: #51313 (comment) . That report does not establish that every UI stall is an OOM event. I am adding this to the performance issue because the continuing interaction delay also needs its own diagnosis.
Current environment and new observations
Finite passive resource sample, October 8 00:29:24.527-00:29:57.549 UTC+08:00 (33.02 seconds):
This particular post-reload window did not show the earlier multi-GiB renderer pressure or a sustained physical-disk read loop. It also did not measure the user's clicks, so it cannot identify the blocking function or rule out transient stalls, GC, locks, network delays, or GPU/composition problems. A low average total CPU percentage does not exclude a blocked renderer main thread.
Installed-source leads to profile, not claimed causes
Read-only inspection of current app-shared-40678a67f0e3.js still finds:
The installed UI includes Start Performance Trace / Stop Performance Trace and the native recorder enables the V8 CPU-profiler categories. Please confirm the supported recording procedure and what to capture while switching among existing long conversations and opening Settings. We need a safe procedure that does not restart or terminate active development tasks.
Requested help
Please investigate click-to-usable-content latency separately from renderer OOM recovery, correlating renderer long tasks and CPU stacks, canonical family-key calls/cache hits, retained conversation/view subscriptions, history read/parse time and GC. Please identify a build with a verified fix or a supported mitigation that preserves ongoing work and conversation history.
The user authorized seeking official help. No conversation deletion/truncation, profile reset, live database write/VACUUM, signed-bundle modification, forced app restart, or active-task termination has been performed for this follow-up. Raw conversation content, account/thread identifiers, personal filesystem paths, credentials and native dumps are excluded from this public comment. New finite sample artifacts and source observations are retained locally.
Pao070707 commentedon Oct 14, 2026
Additional Windows reproduction: Recents → Chat causes global UI lag (6.6 s renderer stall)
I reproduced a specific variant of this issue on the unified ChatGPT/Codex Windows desktop app.
Environment
OpenAI.Codex 26.930.3930.0Reproduction / controlled comparison
Selecting Recents → Chat slows the whole app, including typing, scrolling, changing conversations, and other UI interactions. Switching back to Work-only restores responsiveness. Thus it is not limited to loading the body of a specific conversation.
Built-in Perfetto performance trace
I captured a trace using Help → Start Performance Trace while testing the fast/slow states. The local trace is about 227 MiB. A renderer main-thread input task contains:
WidgetBaseInputHandler::OnHandleInputEventEventHandler::handleMouseReleaseEventEventDispatchv8.callFunctionFunctionCallRunMicrotasksThese are nested events, not independent durations to add together. This provides direct evidence of a roughly 6.6-second renderer-main-thread input stall, with most time inside JavaScript dispatch/execution. GC also occurs, but is not sufficient to explain the majority of the stall.
Other checks
Interpretation and maintainer request
This is consistent with a costly Chat-conversation sidebar render/state-processing path, potentially related to the serialization/sidebar behavior discussed earlier in this issue. However, the captured slices alone do not identify an application-level JavaScript function, so the exact root cause is not proven.
Please investigate why displaying Recents → Chat makes the entire interface sluggish while Recents → Work remains fast, ideally without requiring deletion of history, projects, custom sections, or Codex sessions.
I have not uploaded the raw
.pftracepublicly because performance profiles may contain sensitive data. I can provide additional sanitized measurements or follow maintainer guidance for secure diagnostics.