Windows: pet/avatar overlay makes task switching and mouse dragging freeze
Summary
On Windows, opening the Codex pet/avatar overlay causes severe UI stuttering. Switching tasks from the sidebar becomes laggy, and mouse dragging can become nearly unresponsive while the pet overlay is open.
Steps to reproduce
- Open Codex desktop on Windows.
- Enable or open the pet/avatar overlay.
- Switch repeatedly between tasks in the left sidebar.
- Try to drag the mouse or interact with the window.
Actual behavior
- Task switching stutters or freezes.
- Mouse movement/dragging becomes difficult or temporarily unresponsive.
- The issue persists after restarting Codex.
- It reproduces with Clash TUN disabled and Windows system proxy enabled, so it is not specific to TUN mode.
Expected behavior
The pet overlay should not affect sidebar task switching, mouse input, or desktop UI responsiveness.
Environment
- Codex desktop: 26.707.12708.0
- OS: Windows 11 x64
- GPU: NVIDIA GeForce RTX 5060 Laptop GPU + Intel integrated graphics
Relevant diagnostics
The desktop log reports an unhandled rejection during avatarOverlay initialization:
A dynamic link library (DLL) initialization routine failed.
@worklouder/wl-device-kit/.../@serialport/bindings-cpp/build/Release/serialport.node
Windows Application Error also repeatedly records:
ChatGPT.exe
Exception code: 0xc06d007f
During the affected session, local capability refreshes were also unusually slow:
mcpServerStatus/list: 17,916 msplugin/list: 16,948 msapp/list: 12,795 ms
Normal conversation data reads were much faster (typically around 270 ms), suggesting the stall is associated with overlay/native-module or capability initialization rather than loading the conversation itself.
Additional notes
The Microsoft Visual C++ runtime is installed and current. No full logs are attached because they may contain local paths or conversation metadata.
13 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Additional isolation results from my Windows setup:
This suggests that the Pet/avatarOverlay rendering itself is sufficient to trigger the stutter, separately from the earlier ESET/serialport crash issue.
Expected behavior:
Keeping a Pet visible should not degrade cursor movement or desktop UI responsiveness.
Have this issue aswell
26.715.2305.026200.8875This appears consistent with the Pet/avatar overlay triggering periodic system-wide input stalls specifically while an agent task is active. In my case, it is not limited to slow rendering or task switching within the Codex window.
Expected behavior:
Keeping the Pet visible while a task runs should not interrupt physical mouse input or degrade responsiveness elsewhere in Windows.
I’m experiencing the same severe mouse lag and performance problems when Codex Pets is enabled.
My system is a Windows 11 desktop/tower PC with an NVIDIA RTX 5080, Intel Core Ultra 9 processor and 32 GB DDR5 RAM. This is a dedicated desktop GPU rather than a laptop with hybrid graphics. Disabling the pet resolves the problem.
Also reproducing on Windows with Codex Desktop package
26.715.4045.0.In this case the pet was enabled unintentionally because the account menu shifted while trying to click Remaining usage (the UX path discussed in #32069). Once the pet appeared, the computer became noticeably laggy.
This links the performance problem to a frequent account-menu action: a layout-shift misclick can enable an overlay that immediately degrades system responsiveness. Expected behavior is that the pet overlay should not make the computer lag, and users should be able to disable the pet entry persistently.
Additional Windows data point: the pet/avatar overlay can still affect mouse input even after it appears to be disabled/hidden.
Environment:
26.715.4045.0ChatGPT.exefile version:150.0.7871.1242620032.0.16.1074, primary display2560x1440 @ 299 Hz32.0.21043.19003Observed behavior:
ChatGPT.exeshowed a hidden Electron/Chromium window that looked like the pet overlay:CodexChrome_WidgetWin_1408 x 400falseChatGPT.exeprocesspet,avatar, oroverlayprocess; the residual overlay window was insideChatGPT.exe.Isolation result:
WM_CLOSEonly to that hiddenCodex408x400 window removed it from the window list.ChatGPT.exe/ Codex stayed running.This suggests the UI toggle may hide the pet/avatar overlay window without destroying it, and the hidden overlay window can still participate in Chromium/GPU/DWM/input handling enough to cause system-wide mouse stalls.
One extra note: this machine also had many MCP/tool child processes at the time, but the stutter stopped after closing only the hidden pet window, without killing the main app or changing MCP configuration. So the hidden overlay window appears to be independently capable of triggering the lag on this setup.
I can reproduce the same issue on a newer Windows desktop build.
Environment
OpenAI.Codex 26.810.4967.0Reproduction and A/B result
This makes the Pet overlay a strong causal trigger rather than general Codex background work.
Performance samples while affected
ChatGPT.exeprocess: approximately 100–126% Processor Time (about one full logical CPU core)dwm.exe): approximately 14–20%The foreground-only behavior plus high CPU and relatively low GPU usage suggests a high-frequency Pet animation/render loop or a software-rendering path. Backgrounding the window appears to throttle that rendering work.
Workaround
Use Tuck Away Pet. This fully resolves the mouse stutter in this reproduction.
No raw logs, files, user paths, or session transcript are attached.
I can reproduce a system-wide mouse/input regression on the current Windows desktop build, even with the Pet tucked away.
Environment
OpenAI.Codex 26.810.4967.0Reproduction and behavior
This is not limited to rendering or interaction inside the Codex window. The unchanged hardware worked correctly before the update, so the app update is the trigger.
The running app loads
hid-topology-watcher.node, WindowsHID.DLL, and the WorkLouder device-kit / serialport native binding. I did not observe a corresponding Codex application crash in Windows Event Viewer. This may be related to a residual hidden Pet overlay or native HID/device-topology polling, but that is only a hypothesis.Expected behavior
Codex should never stall system-wide physical mouse input, including when the Pet is hidden.
No raw logs, user paths, files, or conversation data are attached.
During an affected session, I found a hidden ChatGPT.exe top-level window titled Codex, class Chrome_WidgetWin_1, size 419x411, visible=false. Sending WM_CLOSE only to that hidden window removed it while the main Codex window and active task remained running. System-wide mouse stutter stopped immediately.
Additional controlled reproduction on the current Windows build, with a few
A/B results that may help separate the overlay/input symptom from the concurrent
main-process CPU regression.
Environment:
I reproduced sustained system-wide mouse stutter with the Pet visually hidden.
During the affected state there was a hidden top-level window:
I sent WM_CLOSE only to that hidden window. It disappeared, the main ChatGPT
window and application remained running, and the system-wide mouse stutter
stopped immediately and did not return during subsequent observation.
A useful control is that the hidden 408x400 window is not sufficient by itself:
I also observed it throughout known-smooth operation with the same static window
properties.
There is a lifecycle difference between "persisted hidden" and explicitly
tucking the Pet in this build:
408x400 Codex window;
visually tucked.
I also captured the concurrent main-process CPU behavior. During the bad
recurrence, main-process CPU remained above 100% for about 14.6 seconds.
However, after closing only the hidden overlay and eliminating the mouse
stutter, the main ChatGPT process was still using about 136% CPU.
So in this reproduction the cursor symptom and sustained main-process CPU
condition were separable: destroying the hidden overlay fixed the cursor
stutter without stopping the CPU condition. That CPU behavior may therefore
overlap with #38547 rather than fully explain the overlay/input symptom.
One other A/B result while the stutter was active:
So ordinary focus or topmost state alone did not suppress the symptom.
This also seems relevant to the avatar-overlay lifecycle described in #36980.
I retained raw sampler/log evidence locally but am not attaching it because it
contains local telemetry.
Follow-up: I was able to independently reproduce the same isolation result in
a second affected session.
This recurrence began naturally after extended normal use. I had not opened
Settings, changed Pet visibility, or otherwise interacted with the Pet during
that session.
During sustained system-wide mouse stutter:
Codex/Chrome_WidgetWin_1window was again present408x400andvisible=falseI again sent
WM_CLOSEonly to that hidden Codex window.Result:
Importantly, after the overlay was destroyed, the main ChatGPT process was
still using about 136% CPU.
I then measured approximately 16.3 GB of process reads over 10 seconds
(~1.63 GB/s) while:
I captured a built-in performance trace in exactly that separated state.
Sanitized analysis showed approximately:
ThreadControllerImpl::RunTaskeventsRunMicrotaskseventsupdate: ~7.27 s CPUcreateUnsafeArrayBuffer: ~5.50 s CPUreadFileHandle,createUnsafeBuffer,Hash,digest,and
allocUnsafeSlowactivitynode:internal/fs/promises,node:internal/buffer, andnode:internal/crypto/hashThat main-process behavior appears closely related to #38547.
The useful distinction is that the cursor symptom was removed while this
high-CPU/read/hash/buffer activity continued.
This is now two independent affected sessions where destroying only the hidden
Pet/avatar overlay immediately removed the system-wide cursor stutter.
Raw sampler and performance-trace data remain local because they contain
potentially sensitive telemetry.
Follow-up on the newer build, with the two symptoms isolated:
Environment
OpenAI.Codex 26.810.6296.0x64After sending
WM_CLOSEonly to the hiddenCodex/Chrome_WidgetWin_1overlay window, the system-wide mouse stutter stopped immediately while the main app and active task remained running. However, a separate Codex-local responsiveness problem remained: typing in the composer and dragging the main Codex window were still visibly laggy.Measurements in that separated state
ChatGPT.exeaveraged approximately 133–157% CPU across multiple idle samples.ChatGPT/Chrome_WidgetWin_1window) used approximately 65% of one logical core, with roughly 2.8k context switches/s.@serialport/bindings-cpp/.../bindings.node) andnative/hid-topology-watcher.node.This independently confirms the separability noted above: destroying the hidden Pet/avatar overlay fixes the system-wide cursor symptom, but does not fix the persistent Electron main/UI-thread loop that makes typing and window dragging laggy. The latter may overlap with #38547 and/or the Codex Micro native HID/device service.
A useful short-term mitigation would be a supported toggle/feature gate to fully disable Codex Micro/native HID monitoring on Windows systems without the hardware. Please also investigate the main UI-thread loop in
26.810.6296.0.[Windows Desktop] Sustained high CPU and mouse stutter while Pet is tucked away; hidden avatar overlay remains active
Summary
Codex Desktop for Windows entered a sustained high-CPU state while the Pet was configured as Tuck Away. The Electron main process (
ChatGPT.exe, inside the Codex package) and a renderer process consumed substantial CPU while avatar-overlay logs reportedrendererWindowVisible=false. The mouse visibly stuttered. Fully quitting Codex stopped the problem.The problem was observed again after updating Codex and rebooting Windows. CPU was initially low after reboot, then rose later while the persisted Pet state still said closed. A deterministic minimal reproduction has not yet been established.
Existing tracker
performance,pets, andwindows-os).avatarOverlayrenderer can keep receiving task events: #35948 (different bug; not evidence of this root cause).The new evidence in this report is that the problem persists with the Pet state explicitly set to tucked/false, while hidden avatar-overlay activity continues. This should likely be added to #33565 rather than filed as an unrelated duplicate.
Environment
OpenAI.Codex 26.810.6296.0(x64)ProductName: Windows 10 EnterpriseDisplayVersion: 25H2User-visible symptoms
Current measurements
An 8-second CPU-time sample while the issue was active showed:
| Codex process | Role | CPU normalized to one logical core | Share of total 16-thread CPU |
|---|---|---:|---:|
|
ChatGPT.exe| Electron main process | 141.8% | 8.9% ||
ChatGPT.exe| Renderer process | 31.1% | 1.9% ||
codex.exe| App server | 0.2% | ~0% |The main process had an 837 MB working set; the renderer had 676 MB. Immediately after reboot/fresh launch, the same main process was measured around 0.8% of one logical core. At approximately 14:20 local time, its lifetime average was about 72.3% of one logical core (7,479.8 CPU-seconds over 172.4 minutes); that lifetime number includes normal app use and is provided only as evidence that the load was sustained.
Persisted Codex state at the same time:
In a timestamped snapshot during the high-CPU state, the active desktop log was about 2.0 MB and contained 1,841
avatarOverlaymentions and 1,837 entries markedrendererWindowVisible=false. Avatar-overlay log activity continued while the renderer window was reported hidden. This is correlated with the CPU spike but does not by itself prove causation.Packaged-code observations
Read-only inspection of the installed
app.asarfound:avatarOverlayCpuOptimizationsexists but defaults tofalseand is controlled by a remote gate.tuck()cleanup pauses the recovery supervisor and detaches the coordinator, which clears both intervals.compositionHost.wake()independently of the persisted Pet-open intent.Relevant packaged bundles in this version:
Supported-setting audit
No supported permanent Pet-disable or CPU-optimization override was found in the UI, command-line flags, environment variables, or persisted user settings. The internal feature-override path is restricted to developer builds; forcing developer mode in the production package is not a safe workaround. Reduced Motion changes animation but does not prevent Pet prewarming or disable the native coordinator.
Leading root-cause hypothesis
This is an inference from the measurements and packaged code, not yet a proven minimal reproduction:
A stale presentation owner may leave the hidden Pet composition coordinator awake after a presentation path (possibly realtime voice) ends. If that is happening, the disabled
avatarOverlayCpuOptimizationsgate makes the 32 ms and 8 ms polling loops a plausible source of the main-process CPU load while background throttling is disabled. The packaged code proves the wake path and the expensive behavior if the coordinator is awake; available logs do not directly prove that the timers were running during the measured spike.One realtime start/stop pair occurred in the log after the low-CPU reboot and before the later high-CPU observation. That is a correlation worth testing, not proof that realtime voice is the trigger.
Observed sequence
Candidate trigger test
/petopen and then closed, and check whether CPU returns to baseline and the extra renderer exits.Voice alone has not yet reproduced the problem in a controlled test.
Expected result
Tucking away the Pet must stop/detach all native Pet polling, and its hidden renderer should either be destroyed or genuinely background-throttled. Starting and stopping another presentation mode must not reactivate it unless the Pet is actually open.
Actual result
The Pet remains configured as closed, but the hidden avatar subsystem continues processing events and Codex sustains high CPU use, causing system input stutter.
Suggested product fixes
petOpenIntent || activePresentationOwners.avatarOverlayCpuOptimizationsby default on Windows as a mitigation while the lifecycle bug is fixed.Candidate workaround / test
Toggle
/petonce to open it, then/petagain to tuck it away. This should exercise the normal close path and may detach a stale coordinator, but it is not yet verified. Fully quitting Codex is the only confirmed workaround so far.Privacy note for logs
The raw Codex desktop log can contain conversation text, thread identifiers, and local paths. It should be reviewed/redacted before public attachment, or shared only through the private in-app feedback flow.