Windows ARM64 UI freezes caused by synchronous Codex Micro HID discovery
Summary
Codex Desktop on Windows ARM64 repeatedly became extremely slow or unresponsive: multi-second UI freezes, delayed typing, slow thread switching, white/unresponsive views, and occasional system-wide input stutter.
A clean reinstall, full AppX profile reset, cache cleanup, plugin-runtime rebuild, a completely isolated profile/CODEX_HOME, and disabling GPU acceleration did not help.
Disabling only the Codex Micro HID discovery call fixed the problem immediately and completely.
Environment
- Codex/ChatGPT Windows app: 26.715.4045.0 (ARM64)
- Chromium/Electron runtime reported by Crashpad: 150.0.7871.124
- Windows 11 Home, build 26200
- Device: Microsoft Surface Laptop 13-inch, Snapdragon/ARM64
- RAM: 16 GB
- GPU: Qualcomm Adreno X1-45, driver 31.0.105.0
Reproduction
- Launch the official Microsoft Store build.
- Open or switch between Codex threads and type/send messages.
- The UI repeatedly stalls or becomes unresponsive. Input may appear only after a delay.
- The issue persists with a fresh AppX profile, fresh Store reinstall, empty Codex home, no plugins, and software rendering.
HID evidence
Windows Device Manager shows numerous Surface HID, touch, button, sensor, and VHF devices. The System event log repeatedly records Kernel-PnP event 219 / WudfRd load failures (status 0xC0000365) for HID/touch/sensor/display-related devices.
The installed resources/app.asar contains exactly one occurrence of:
this.discovery.findWLDevices([a.Project2077])
Original app.asar SHA-256:
ED0C1C045A322EF1ABB58BC56B910AF3A5CAAA19B36D76C2D122A8A890D778A7
Confirmed workaround
I created a writable side-by-side copy of the app, preserved a hash-verified backup of app.asar, and replaced only the unique expression above with [] padded with ASCII spaces to the exact original byte length.
- Original and patched file length: 201,157,631 bytes
- Patch offset: 2,441,341
- No Store package files were modified
- After launching the side-by-side copy, all freezing and lag stopped immediately
Expected behavior
Codex Micro discovery should not synchronously enumerate HID/serial devices on the Electron main thread. It should be opt-in, asynchronous/off-thread, bounded by a short timeout, and disabled when no Codex Micro is configured.
Please disable this feature gate by default on Windows or move device discovery off the UI/main thread. A supported setting to disable Codex Micro discovery would also provide a safe fallback.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗