Feature Request: Official Codex Desktop external control API for hardware controllers

Open 💬 1 comment Opened Jul 16, 2026 by ssm-0123

What variant of Codex are you using?

App

What feature would you like to see?

Feature Request: Official Codex Desktop external control API for hardware controllers

I attempted to build a Stream Deck plugin for Codex Desktop that can control a live Codex task from hardware buttons: run a prompt, submit the current draft, stop a turn, show task status, and approve or reject permission requests.

With the currently public integration surfaces, this is difficult to implement reliably without private IPC reverse engineering, Windows UI Automation, or keyboard macros. Those approaches are fragile and not appropriate for security-sensitive actions like approving command execution.

The main blockers observed while developing the plugin were:

  • No stable documented local control API for Codex Desktop.
  • No first-class API for listing and responding to approval requests.
  • No documented task/approval event stream for reliable hardware status indicators.
  • No official way to discover the active Codex task.
  • No official way to submit the current composer draft without fake keyboard input.

The three P0 requests that would make a production-quality Stream Deck plugin possible are:

  1. Stable Local Control API
  2. Approval Request/Response API
  3. Task/Approval Event Stream

Codex Micro appears to highlight that hardware-assisted Codex workflows can be valuable. Without making assumptions about its implementation, similar workflows could be enabled for existing hardware such as Stream Deck, Loupedeck, QMK keyboards, and other local controllers if Codex Desktop exposed a stable, permissioned external-control API.

I have a longer RFC with concrete API examples, permission model suggestions, idempotency/audit-log requirements, and implementation pain points observed during development:

Full RFC with detailed API examples and implementation notes:
OPENAI_FEATURE_REQUEST.md

Additional information

_No response_

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗