Windows Codex freezes with UGREEN USB switch and recovers immediately when unplugged
What version of the Codex App are you using (From “About Codex” dialog)?
OpenAI Codex Desktop 26.715.2305.0 Microsoft Store version
What subscription do you have?
Plus Plan
What platform is your computer?
Windows 11 x64 OS build: 10.0.26200.8875
What issue are you seeing?
Codex Desktop becomes completely unresponsive and Windows displays
"(Not Responding)" whenever the USB switch and its keyboard/mouse are connected.
As soon as I unplug the USB switch, Codex immediately begins responding again.
Reconnecting the switch causes the problem to return.
This was not happening one or two weeks ago.
What steps can reproduce the bug?
- Connect the Corsair K68 keyboard and Glaive mouse through the UGREEN USB switch.
- Start Codex Desktop.
- Use Codex normally or leave it open.
- Codex becomes unresponsive.
- Unplug the UGREEN switch from the computer.
- Codex immediately recovers.
What is the expected behavior?
HID enumeration or hardware discovery should not block the Codex UI.
Additional information
Hardware
- UGREEN USB switch using Genesys Logic hubs:
- VID_05E3 / PID_0610
- VID_05E3 / PID_0626
- Corsair K68 keyboard:
- VID_1B1C / PID_1B3F
- Corsair Glaive RGB mouse:
- VID_1B1C / PID_1B34
- Corsair iCUE 5.46.67
Actual behavior
The Codex main UI process becomes unresponsive until the USB devices are
physically disconnected.
Windows recorded four matching MoAppHang reports on July 17, 2026, at
approximately:
- 5:43 PM ET
- 5:46 PM ET
- 6:10 PM ET
- 6:41 PM ET
WER fault bucket:
61cf54cf289d829fbc09b36f63f5c8e0
Technical findings
Local inspection of the installed Codex package indicates that the Codex
Micro/Work Louder device-discovery service calls synchronousnodeHID.devices() to enumerate all attached HID devices before filtering for
supported hardware.
When no supported device is found, discovery appears to be retried every
10 seconds.
The Codex main process has the native HID.node module loaded. The node-hid
documentation warns that its synchronous API can block application execution
and that HID.devices() performs a relatively costly USB/Bluetooth
enumeration.
Corsair iCUE also logs repeated communication failures involving the K68 while
the switch is connected, including Windows errors 433 and 1167. This may cause
the synchronous HID enumeration to become stuck on a stale or malfunctioning
device path.
Disconnecting the USB switch removes the affected HID endpoints and immediately
releases the Codex UI.
Suggested fix
Please move HID enumeration off the Electron main/UI thread and usedevicesAsync() or event-based USB arrival/removal detection instead of
synchronously polling every attached HID device.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Independent reproduction on 26.715.4045.0 (Corsair K68, no USB switch)
I reproduced the same failure mode on a separate Windows system with a directly connected Corsair K68. A controlled gate-off A/B test strongly isolates the freeze to the Codex Micro HID-discovery path.
Environment
OpenAI.Codex_26.715.4045.0_x64__2p2nqsd0c76g010.0.26200VID_1B1C / PID_1B3FVID_05E3hub was presentUnmodified-build observations
On the unmodified Store build:
HID.nodeandhid.dllthrough the bundled@worklouder/device-kit-oaidependency chain.Responding=Falseafter approximately 15 seconds.--disable-gpudid not remove it either (27 of 48 samples were nonresponsive over 20 seconds).taskkill.exeexecutions or WMI CPU spike occurred during the fresh reproduction, which distinguishes this instance from the separate process-storm behavior reported elsewhere.Inspection of the packaged JavaScript showed this sequence:
3207467860mounts the Codex Micro bridge.codexMicro.getState().@worklouder/device-kit-oaiand callsWLDeviceDiscovery.findWLDevices([DeviceType.Project2077]).10,000 ms.That timing matches the observed periodic loss of responsiveness.
Controlled gate-off A/B
I copied the same installed build to a user-local directory, retained the same Codex user profile, and changed only the two renderer expressions checking gate
3207467860to the boolean constantfalse. The Microsoft Store package itself was not modified.Archive identifiers:
Results with the gate disabled:
Responding=FalseobservationsSendMessageTimeout(WM_NULL)failures using a 250 ms timeoutChatGPT.exeduring the measured process runHID.nodenorhid.dllwas loaded in the repaired main processThis test does not identify which individual K68 HID collection stalls enumeration. It does show that, on this machine, preventing the Codex Micro bridge from mounting removes the freeze while keeping the same application build, profile, account, keyboard, and other configuration.
This also suggests the issue is not limited to UGREEN/Genesys USB switches. Moving HID enumeration off the Electron main thread, using the asynchronous node-hid API, and backing off or disabling discovery after a stalled/failed attempt would prevent an optional hardware integration from blocking the desktop UI.