Repository navigation
Windows app hangs ("not responding") after launch — main process blocks forever in HID device enumeration (HID.node → hid.dll) when one HID device doesn't respond #33780
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.715.2305.0 (Microsoft Store package; internal release 26.715.21425 per desktop logs)
What subscription do you have?
ChatGPT Pro
What platform is your computer?
Windows 11 Home 10.0.26200 x64
What issue are you seeing?
Summary
Since the mid-July update (first 26.707.x, still present in 26.715.2305.0), the Codex Windows desktop app (ChatGPT.exe) becomes unresponsive ("stopped interacting with Windows") shortly after every launch. Windows Application event log fills with Application Hang (Event ID 1002, MoAppHang) entries; on 26.707.x builds the same condition crashed the app instead (exception 0xc06d007f). The app worked fine for months before this update on the same machine.
Root cause (diagnosed locally)
I sampled the hung UI thread's native stack of the main process:
ntdll.dll (blocked in kernel device I/O wait)
KERNELBASE/KERNEL32
hid.dll
HID.node <- bundled native module in app.asar build
chrome.dll (Electron main)
The main process enumerates HID devices on the UI thread (presumably the Codex Micro / accessory-detection path added in the July builds). One of my HID devices — a Corsair composite mouse, VID_1B1C&PID_1B75, exposing 4 HID interfaces — was in a bad state where opening its HID interfaces blocks indefinitely: CreateFileW (even with access mask 0, share RW) never returns. I verified this with an out-of-process probe: all other 30 HID interfaces on the system open + HidD_GetProductString in <100 ms, while all 4 interfaces of that device hang past any timeout.
The UI thread blocks in roughly 60-second cycles (window briefly becomes responsive between cycles, then blocks again). Because the main thread is blocked, worker/IPC traffic piles up and times out, producing misleading secondary log errors such as:
Timed out waiting for MCP response to plugin/listworker_rpc_response_error "Failed to resolve git common dir: git process timed out after 60000ms"mcpServerStatus/list ... durationMs=65209
Verification
Unplugging the offending HID device immediately and completely fixes the hang; the app then runs normally. No other software on the machine was affected by this device, since ordinary apps don't enumerate HID.
Expected behavior
HID enumeration should not run (or synchronously block) on the main thread, and per-device opens should be wrapped with timeouts — a single unresponsive HID device shouldn't freeze the entire app window.
Related issues
This looks closely related to the Codex Micro / Work Louder device-kit reports #33606, #33375, #33518, #33567, #33409 — my 0xc06d007f Application Error events on 26.707.x (17 events on Jul 16 alone) match the serialport.node delay-load failures described there. This report adds the 26.715 manifestation with a captured native stack: the HID.node path blocks the UI thread indefinitely on a real, unresponsive HID device, with a confirmed hardware trigger and unplug-verification.
Additional note (possibly a separate issue)
While diagnosing this I also found: if the MSIX package is installed on a secondary drive (Windows EFS-encrypts package files there by design), every "bundled executable relocation" copy fails with errno -4094 (ERROR_ENCRYPTION_FAILED surfaced as UNKNOWN, bundled_executable_relocation_failed ... during copy_directory) and the app retries endlessly on every focus event; on Windows Home (no EFS support) this is unrecoverable until the app is reinstalled on the system drive. Consider COPY_FILE_ALLOW_DECRYPTED_DESTINATION or a read+write fallback for that copy path.
What steps can reproduce the bug?
- Use a Windows machine with a HID device whose interfaces do not answer open requests. In my case: a Corsair composite mouse (
VID_1B1C&PID_1B75, 4 HID interfaces) in a wedged state —CreateFileWon any of its HID interface paths never returns (verified with an out-of-process probe; every other HID interface on the system opens in <100 ms). - Launch the Codex Windows app (26.715.2305.0, Microsoft Store).
- The window renders, then goes "Not responding" within seconds, and stays in ~60-second block cycles (briefly responsive between cycles). Windows logs Event ID 1002 (MoAppHang) for ChatGPT.exe on every launch.
- Unplug the offending HID device — the app immediately and permanently becomes responsive again.
Note: reproducing requires a HID device in this stuck state, which is why the bug appears hardware-random across users. Any HID device whose driver stalls opens will trigger it, since the enumeration happens on the main thread. On 26.707.x the same code path crashed instead (0xc06d007f, 17 Application Error events on Jul 16 alone on my machine).
What is the expected behavior?
HID/accessory detection (Codex Micro / device-kit path) should run off the main thread and wrap per-device opens with timeouts. A single unresponsive HID device should never freeze the entire app window, and its failure should degrade gracefully (skip the device, log once, no endless retry).
Additional information
No response
Activity
github-actions commentedon Jul 17, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
iAlexNT commentedon Jul 17, 2026
Same, After the update, it's impossible to work.
chrislopez24 commentedon Jul 17, 2026
Impossible to work after the update, same problem
victorsbd commentedon Jul 17, 2026
I can reproduce a closely related issue with a Corsair Gaming K63 keyboard on the exact same Codex Desktop package.
Environment
OpenAI.Codex_26.715.2305.0_x64__2p2nqsd0c76g0VID_1B1C&PID_1B403.0.88.0(2022-07-27)Normal-mode HID layout
In normal mode, Windows exposes the physical keyboard as a composite device with two USB interfaces and several HID collections:
The Corsair software stack also exposes:
Reproduction and A/B isolation
This has been reproduced more than once. Other USB devices can remain connected; disconnecting the Corsair keyboard alone is sufficient to recover Codex.
I also performed all of the following:
These actions temporarily improved the behavior, but the severe stalls returned in normal keyboard mode.
BIOS-mode comparison
After switching the K63 to BIOS mode, Windows exposes a much simpler physical HID layout:
The
MI_00,MI_01,COL01,COL02,COL03, andCOL04child interfaces disappear.Corsair composite virtual input deviceandCorsair Busremain present.With the keyboard in BIOS mode:
I tested that remaining first-open stall with the K63 physically disconnected. It still occurs without the keyboard and disappears on subsequent switches after the conversation has been loaded. That remaining symptom therefore appears to be a separate conversation-history loading/caching issue, not part of the Corsair HID problem.
I also queried the Windows Application event log immediately after one of the stalls for
ChatGPT.exe,HID.node,serialport.node,0xC06D007F, andMoAppHang. No matching Application events were recorded in the checked ten-minute window, possibly because these shorter stalls recover before Windows records an application hang.This appears consistent with the synchronous HID enumeration problem described in this issue, but with a Corsair composite keyboard rather than the Corsair composite mouse in the original report. BIOS mode is currently an effective mitigation for the severe stalls on this system.
A supported temporary option to disable Codex Micro/accessory discovery would be useful until HID enumeration is moved off the main thread and protected by per-device timeouts.
chrislopez24 commentedon Jul 17, 2026
Just tested again and it’s also happening with my Corsair K70 keyboard and Scimitar mouse when connected
iAlexNT commentedon Jul 17, 2026
I have all Razer peripherals, plus a Lian Li LED controller.
I'm not sure which device is actually causing the issue, but it's extremely frustrating. Everything worked flawlessly before the update.
Tomk77 commentedon Jul 17, 2026
I can reproduce a closely related Windows failure on a different hardware configuration, with a useful version and workaround comparison.
Environment
10.0.26100, build2610032.0.16.1047OpenAI.Codex_26.707.9564.0_x64__2p2nqsd0c76g0Version history and observed failures
26.707.9981.0Windows repeatedly recorded Application Error Event ID 1000:
This coincided with severe Codex UI lag and brief system-wide mouse/input freezing. It reproduced many times on July 15 and 16.
26.715.2305.0After updating to the current Store build, the app became nonresponsive shortly after launch and had to be closed. Windows recorded Application Hang Event ID 1002 for
ChatGPT.exeversion150.0.7871.124at:The affected-build desktop log contains repeated warnings matching the secondary symptom described in this issue:
The stack traces point into the packaged
26.715.2305.0Electron worker. I have not sampled the native UI-thread stack, so I cannot independently confirm that HID enumeration is the root cause on this machine.Controlled GPU workaround on the older build
On
26.707.9564.0, disabling Chromium hardware acceleration in Codex's persisted Electron profile and recreating the GPU/shader caches resolves the severe renderer/GPU pressure:Caches recreated:
GPUPersistentCacheGrShaderCacheShaderCacheDefault/DawnGraphiteCacheDefault/DawnWebGPUCacheDefault/GPUCacheControlled send capture before the change:
Controlled send capture after the change:
No new
ChatGPT.exeEvent ID 1000 or 1002 entries have appeared since downgrading to26.707.9564.0. The currently running process started at 15:58:44 and remains responsive.The hardware-acceleration preference survived the update and downgrade and is still
false. Despite that,26.715.2305.0still became nonresponsive at launch. This suggests the newer launch hang is separate from, or occurs before, the renderer/GPU workaround can help.Requested fixes
I have retained the local desktop logs and Windows event details. I have not uploaded raw logs because they contain task/session identifiers, but I can provide sanitized excerpts if maintainers request them.
Gjalswns commentedon Jul 17, 2026
Adding a device-specific confirmation for the Corsair K70 LUX, plus a handle-level isolation result and a control run with Codex features restored.
Environment
26200.8875OpenAI.Codex_26.715.2305.0_x64__2p2nqsd0c76g0VID_1B1C&PID_1B36Reinstalling Codex and resetting its local Electron profile did not stop the intermittent hangs.
Main-thread and device-handle isolation
Repeated live stack samples while
ChatGPT.exewas non-responsive showed its main/UI thread blocked in this path:The packaged
HID.nodeis under the bundled@worklouder/device-kit-oai/node-hidintegration.I resolved the remote device handles back to their Windows PnP PDOs. The useful isolation result was:
HID\VID_1B1C&PID_1B36&MI_00&COL04(\Device\0000006f).COL04, the block moved toHID\VID_1B1C&PID_1B36&MI_01(\Device\00000071).MI_01, the block moved again toMI_00&COL01(\Device\0000006c), the actual keyboard collection.All temporarily disabled interfaces were restored afterward. This shows that disabling a single vendor-defined collection is not a reliable workaround: the synchronous scan simply proceeds to another interface, eventually including the keyboard collection itself.
BIOS-mode A/B result
In normal mode, Windows exposed eight K70-related PnP entries: the USB composite device, two USB input interfaces, and five HID collections (
COL01throughCOL04, plusMI_01).Moving the K70 LUX hardware polling switch to
BIOSreduced that layout to two entries:The already-hung Codex process became responsive immediately, without first restarting it.
For a final control run, I restored the Codex features I had temporarily disabled during diagnosis:
apps,plugins, andremote_pluginwere all enabled again. I then fully restarted Codex with the K70 still in BIOS mode and sampled the main process every two seconds for approximately 102 seconds:app/listcompleted in 10.566 seconds, subsequent calls in 254–272 ms;plugin/listcompleted in 365–568 ms;This complements the K63 BIOS-mode report above with the K70 LUX PID, direct handle-to-interface mapping, and a final run showing that stability followed the HID layout change rather than disabling apps or plugins. On this system, the observed freeze was an HID I/O wait and was not correlated with monotonic memory growth during the validation window.
daleforbes commentedon Jul 17, 2026
Adding a controlled iCUE startup-order A/B reproduction and descriptor-level timing for the same Corsair Harpoon PID reported here.
Environment
26200.8875, x64OpenAI.Codex_26.715.2305.0_x64__2p2nqsd0c76g05.11.953.0.88.0VID_1B1C&PID_1B75, HIDbcdDevice/VER_0314Main-thread evidence
Three consecutive dumps of the non-responsive Codex main process, captured over approximately nine seconds, showed the same main/UI-thread path:
The bundled module path is under
@worklouder/device-kit-oai -> @worklouder/wl-device-kit -> node-hid.Inspection of the packaged application flow showed:
The global HID enumeration occurs synchronously even though discovery is looking for a Work Louder device. With no matching device, the service schedules another discovery attempt approximately every 10 seconds.
Per-interface timing
An out-of-process probe tested all 17 present HID interfaces individually.
HidD_GetAttributes, specifically insideHidD_GetManufacturerString, until the probe's 4,000 ms timeout:MI_01MI_00&COL01MI_00&COL02MI_00&COL03Controlled startup-order reproduction
This makes iCUE's presence specifically during Codex startup a reliable trigger on this configuration. The lower-level Corsair defect may be in iCUE, mouse firmware, or their driver interaction, but optional device discovery in Codex should still be isolated from the Electron main thread and bounded by timeouts.
Confirmed workaround
Disable iCUE automatic startup, launch Codex first, and only start iCUE afterward if needed. Close iCUE before restarting Codex.
Raw dumps were retained locally but are intentionally not attached publicly because they may contain process-memory data. Sanitized excerpts can be provided if maintainers request them.
daleforbes commentedon Jul 17, 2026
In-app
/feedbackhas now been submitted with the current ChatGPT session logs for this reproduction.Feedback/session ID:
019f6e4e-b91f-7f92-b50a-c7eede7d000cThis corresponds to the controlled iCUE startup-order and HID timing evidence in my diagnostic comment above.
daleforbes commentedon Jul 17, 2026
Important correction to my earlier iCUE startup-order report: iCUE is not required for the fault to recur.
After a clean reboot with iCUE automatic startup disabled:
A fresh per-interface probe at that point again showed exactly four timeouts, all on the Harpoon
VID_1B1C&PID_1B75interfaces:MI_01MI_00&COL01MI_00&COL02MI_00&COL03Each reached the probe's 4,000 ms timeout immediately after
HidD_GetAttributes; the K100 interfaces remained healthy. The Codex main window was non-responsive during the same capture.After disconnecting the Harpoon and switching to a Dell USB mouse (
VID_413C&PID_3029):Revised conclusion and workaround
iCUE can accelerate or reliably trigger the bad Harpoon state during Codex startup, but it is not the sole cause. The Harpoon can re-enter the stalled descriptor state while iCUE is completely absent, plausibly after repeated global HID discovery calls.
The reliable temporary workaround is to leave the Harpoon disconnected and use a different non-Corsair mouse until Codex moves accessory discovery off the main thread, adds timeouts/filtering, or provides a supported opt-out.
24 remaining items
DrB1961 commentedon Jul 19, 2026
Switch out the KB and Mouse to anything else or, as one user reported, plug the Corsair KB into USB3. The fan controller should not be an issue.
edwardchan999-hash commentedon Jul 19, 2026
Follow-up: disabling one K55 collection only moved the main-thread block
I previously reported a narrow workaround on this same CNU system: disabling the Corsair K55 vendor-defined
Col03collection while preserving typing and volume controls. That was only a temporary/partial success.Codex Desktop froze again on package
OpenAI.Codex_26.715.4045.0_x64__2p2nqsd0c76g0(ChatGPT.exe150.0.7871.124). A fresh ProcDump hung-window capture shows the same cause, now on a different collection from the same keyboard.Fresh main-thread evidence
The triggered main-process dump caught Electron's main thread in:
A companion full main-process dump independently caught the same thread in
hid.dll!HidD_GetManufacturerString.The exact interface path present on the blocked stack was:
Windows identifies this instance as the K55 HID-compliant consumer control device (
COL02). This collection carries the user's working volume/media controls, so disabling it is not an acceptable workaround.Col03remained disabled throughout this fresh reproduction.Both renderer first threads were waiting normally in
ZwWaitForSingleObject; the whole-window hang was the main-thread HID request. A PowerPoint artifact preview happened to be visible at the time, but it was not the blocking renderer path.Activation/retry finding
Read-only inspection of the packaged app confirms that the Codex Micro / Work Louder service calls
WLDeviceDiscovery.findWLDevices([DeviceType.Project2077])and schedules another attempt after 10 seconds when no supported device is found. The Codex Micro bridge/UI is enabled by a remotely evaluated feature gate on this client, and package 4045 exposes no supported local off switch.This result demonstrates that disabling unrelated HID collections one by one only moves the synchronous global scan to another interface. The most useful immediate mitigation would be to gate Codex Micro discovery off on affected Windows clients or expose a supported user setting. The durable fix remains to prefilter supported devices before descriptor access, run discovery outside Electron's main process/thread, and enforce hard per-interface timeouts/circuit breaking.
Raw full-memory dumps remain local because they may contain private task data, but sanitized stack/module details can be provided if maintainers need more.
mm0nst3r commentedon Jul 19, 2026
Follow-up with the sustained result: the Codex Micro discovery bypass fully eliminated the HID-related freezes on this machine.
Tested package:
OpenAI.Codex 26.715.3651.0.Unsupported, version-specific procedure:
Fully close Codex.
Work on a writable copy of the application directory and keep a byte-for-byte backup of
resources/app.asar; leave the registered Store package untouched.Replace the single expression:
with
[], padded with ASCII spaces to exactly the original byte length. This makes discovery report no Codex Micro without changing ASAR size or offsets.Launch that copied runtime normally.
Controlled A/B result using independent window-message-loop probes:
The original produced three long pauses during a 26-second window; the patched runtime produced none. With this bypass included in the final workaround configuration, the machine then completed almost 24 hours of real, heavy Codex use without the periodic HID stalls or hangs.
The intentional limitation is that Codex Micro / Work Louder discovery is disabled. This is not a suitable product fix, but the A/B result is conclusive for this failure path: preventing
findWLDevices()from entering synchronousnode-hidenumeration removed the symptom. The product fix should move HID discovery off the Electron main thread, add bounded per-device timeouts, and avoid fixed-interval polling when optional hardware is absent.jtabox commentedon Jul 20, 2026
I mean sure but this doesn't seem like a viable solution. If every time I have to open this one specific app I need to switch out both my keyboard and mouse then I'm gonna cancel my sub and move on to something else, f that noise.
theslamduncan commentedon Jul 20, 2026
Windows Codex desktop app 26.715.4045.0 causes system-wide keyboard and mouse stalls. WPR UIDelay traces show repeated approximately 1.8-second input delays every approximately 11.8 seconds. The issue persists with --disable-gpu and disappears immediately when Codex is closed. The installed app contains @worklouder/device-kit-oai, wl-device-kit, and node-hid. Wi-Fi, USBXHCI, and NVIDIA DPC traces show no multi-second stalls. Please investigate the Work Louder/Codex Micro HID discovery path and advise whether a build or workaround disables synchronous HID enumeration.
memesalot commentedon Jul 20, 2026
Same issue here.
enguerrand1985-cloud commentedon Jul 20, 2026
Reproducible K55 trigger and software recovery workaround
I can confirm this issue with a Corsair Gaming K55 RGB Keyboard (
VID_1B1C&PID_1B3D) on the Windows Codex/ChatGPT desktop app.Controlled observations:
.codexprofile, account reconnect, repair, reset, reinstall, and app updates did not resolve it.A useful temporary workaround is a targeted PnP restart of the physical K55 device. This reproduces the effect of unplugging/replugging the keyboard without physically disconnecting it and without restarting Codex. It has successfully recovered the frozen UI five times so far.
Run from an elevated PowerShell prompt:
Notes:
victorsbd commentedon Jul 20, 2026
Preliminary positive result on
26.715.7063.0I have now updated the same affected Windows installation from
26.715.2305.0to:This is the same system and Corsair Gaming K63 (
VID_1B1C&PID_1B40) described in my earlier comment.After installing
26.715.7063.0:This is a preliminary observation immediately after updating, not yet a long-duration soak result. I will follow up if the HID-related stalls or freezes return, but
26.715.7063.0currently appears to mitigate both the severe Corsair/HID behavior and the separate first-load conversation stall on this machine.jtabox commentedon Jul 20, 2026
Aye, updated to the latest version from Store and it seems to have been fixed. At least it won't hang directly at boot as it did with the previous version.
daleforbes commentedon Jul 20, 2026
Preliminary positive result on
26.715.7063.0I reconnected the original Corsair Harpoon RGB PRO (
VID_1B1C&PID_1B75) that previously reproduced the HID-related Codex freezes. It is operating in its normal composite configuration with all seven USB/HID entries present.So far, the prior hangs and system-input stalls have not returned during normal Codex use. A separate 90-second responsiveness probe collected 308 samples with zero nonresponsive samples while the Harpoon remained connected. No new
ChatGPT.exeApplication Hang or Application Error events were recorded.This is an initial smoke test rather than a long-duration soak result. I’ll follow up if the problem returns or after several extended Unity/Codex sessions.
Tauri-EPO commentedon Jul 21, 2026
Updated independent reproduction: K70 RGB
PID_1B13still correlates with hangs on26.715.8383.0, but the Windows discovery implementation has changedI am amending this report after inspecting the currently installed
26.715.8383.0package. The keyboard A/B remains valid, but the current build no longer follows the same Windowsnode-hiddiscovery path documented for the earlier builds.Environment
OpenAI.Codex_26.715.8383.0_x64__2p2nqsd0c76g026200.8894VID_1B1C / PID_1B13 / REV_03085.48.58VID8086 / PID7A60), ACPI portXHCI.RHUB.HS04Current user-observed A/B
In BIOS mode, current PnP state is:
Important implementation difference in
26.715.8383.0Inspection of the packaged
codex-micro-serviceshows:WLDeviceDiscovery.findWLDevices()ornodeHID.devices().await hid-topology-watcher.node.findCodexMicroInterfaces().node-hid.devicesAsync(VID, PID)is now used only on Linux in this service.napi_create_async_work,napi_queue_async_work, etc.), which is evidence that interface discovery is already dispatched as asynchronous native work.VID_303A / PID_8360) before callingCreateFileW; the topology callback uses the same matcher. The K70 (VID_1B1C) is therefore rejected before the addon opens or queries the interface.HidD_GetAttributes,HidD_GetPreparsedData, andHidP_GetCaps, but not the manufacturer/product/serial string probes implicated in the earlier global enumeration path.hid-topology-watcher.nodeandHID.DLL.This materially changes the diagnosis for the latest build: the K70/BIOS correlation still points toward HID topology or descriptor handling, but there is no new native stack or Event ID 1002 proving that
26.715.8383.0blocks the Electron main thread in the same oldHID.node -> hid.dllcall chain.Also, the Event ID 1001 entries timestamped July 21 on this machine are reprocessing an older WER report from
26.715.4045.0; they are not fresh WER proof for26.715.8383.0. The current-build recurrence is a live user observation, not a captured stack.Maintainer request and proposed hardening
Could a maintainer provide a diagnostic build/symbols or guidance for capturing a safe stack when the
26.715.8383.0UI hangs? The next capture should determine whether the block is in:If any native HID operation can remain stuck after asynchronous work has started, a JavaScript
Promise.race()timeout cannot cancel it. A robust boundary would be:utilityProcess.Tauri-EPO commentedon Jul 21, 2026
Small evidence correction to my comment above: the Windows Event ID 1001 entries timestamped July 21 are reprocessing an older WER report from package
26.715.4045.0; they are not fresh WER confirmation of a hang in26.715.8383.0. The latest separately confirmed Application Hang/Event ID 1002 on this machine was July 20 at 16:06 on26.715.4045.0.The
26.715.8383.0recurrence reported above is a live user-observed A/B result (normal mode hangs; switching the same K70 to BIOS mode restores usability), corroborated by the current process/package path and the current BIOS-mode PnP topology, but no new native stack or Event ID 1002 was captured for that build.gilbertgiles commentedon Jul 22, 2026
this still happens to me impossible to work
chess-oai commentedon Aug 15, 2026
thanks for the detailed diagnostics here: the hid enumeration hang was fixed, and affected users confirmed it was resolved in
26.715.7063.0closing as completed: please open a new issue with a current stack if this still reproduces