openai / openai/codex

[macOS] Codex Micro lighting and battery fail with IOHIDDeviceSetReport “not permitted”

Open
#41,737 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using (From “About Codex” dialog)?

26.825.51511 (build 7377)

What subscription do you have?

ChatGPT Pro

What platform is your computer?

Darwin 25.5.0 arm64 arm

What issue are you seeing?

Codex Micro connects over USB and all physical input remains available, but Codex shows “Connected with limited functionality.” Agent-status lighting and battery updates are unavailable.

Codex repeatedly fails when it tries to send the RGB configuration RPC:

v.oai.rgbcfg — WRITE_FAILED
Cannot write to hid device: IOHIDDeviceSetReport failed: (0xE00002E2) (iokit/common) not permitted

The device is detected correctly by macOS and by Codex. Work Louder Input can communicate with, update, configure, and factory-reset the same device.

What steps can reproduce the bug?
  1. Install Codex desktop 26.825.51511 on macOS 26.5.2 (25F84).
  2. Update Work Louder Input to 0.18.4 and update Codex Micro to the latest firmware offered by that app.
  3. Connect Codex Micro directly over USB.
  4. Fully quit Work Louder Input so Codex is the only device-management app running.
  5. Enable Input Monitoring for ChatGPT.app (bundle identifier com.openai.codex).
  6. Launch Codex and open the Codex Micro connection status.
  7. Observe “Connected with limited functionality.”
  8. Inspect the Codex desktop log: every v.oai.rgbcfg request fails immediately with IOHIDDeviceSetReport error 0xE00002E2 (“not permitted”).

The result persists after restarting macOS/Codex, unplugging and reconnecting the device, factory-resetting the device, toggling Input Monitoring, and completely removing/re-adding ChatGPT.app in Input Monitoring.

What is the expected behavior?

When Codex Micro is connected over USB, Codex should be able to send lighting updates and read battery status. The connection should show fully connected, while all keys, dial, joystick, lighting, and battery reporting remain functional.

Additional information

Hardware and permission checks performed:

  • Codex Micro enumerates over USB as VID/PID 0x303A:0x8360.
  • macOS exposes the expected 64-byte HID input and output reports.
  • Input Monitoring is enabled for ChatGPT.app.
  • The permission entry was toggled, then removed and re-added from /Applications/ChatGPT.app before relaunching Codex.
  • Chrome has no saved WebHID device permissions.
  • Work Louder Input 0.18.4 is fully quit while reproducing.
  • Work Louder Input can write to and factory-reset the device, so the device's writable HID path is functional.
  • Codex successfully connects to HID and registers v.oai.hid and v.oai.rad handlers, but every v.oai.rgbcfg write fails with kIOReturnNotPermitted.

This appears to be a Codex desktop/macOS HID write-permission bug rather than a cable, firmware, or device failure.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the macOS HID integration and the v.oai.rgbcfg write path, then reproduce the failure with Codex Micro using the reported steps and inspect the desktop log. Done means RGB configuration writes and battery updates succeed without kIOReturnNotPermitted, and the connection reports fully connected while input remains functional.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, rust
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.