Codex Computer Use parity reference

August 14, 2026 · View on GitHub

This reference records the comparison between @zibokapi/dsh-codex-computer-use and OpenAI's Codex Computer Use plugin: the observation base, the delivery architecture, and the API-parity table. Every behavior gap catalogued from the pinned observation below is implemented; entries that closed over time left this document. All Codex behavior is stated in dsh's own words; the Codex plugin is proprietary, so none of its text is imported verbatim (see Licensing stance).

Observation base

The statements about Codex behavior come from three pinned artifacts, not from disassembly output distributed here:

  • The bundled plugin at ~/.codex/plugins/cache/openai-bundled/computer-use/1.0.1000633: plugin.json, .mcp.json, the launcher script, and skills/computer-use/SKILL.md (the model-facing API and confirmations policy).
  • The installed desktop apps the launcher execs: SkyComputerUseClient (MCP server, approval UI, recording, presence overlay) and SkyComputerUseService (accessibility capture, input synthesis, screenshots, app indexing) under ~/.codex/computer-use/Codex Computer Use.app.
  • Exportable symbol and string tables of both binaries, which name the mechanisms the prose below attributes to them (settle waits, invalidation refetch, denylist entries, private-window detection).

Delivery architecture

PieceCodexdsh
Model-facing APInode_repl importing @oai/sky, whose ten window operations the SKILL.md documentsThe computer_use_* tools over ctx.computer
EngineSkyComputerUseService resident processResident Swift daemon (dsh-computer-daemon) over stdio JSON-RPC
ScreenshotScreenCaptureKit window capture written to a file; the model reads the file:// URL and emits the image itselfScreenCaptureKit window capture attached as an image block when the model route carries images
App indexSpotlight query over all application bundles, 14-day last-used windowGlobal Spotlight query over every application bundle, 14-day window
External MCP surfaceThe plugin's own MCP server@zibokapi/dsh-codex-computer-use/computer-mcp stdio server
Approval UXClient-side app picker with session or persistent approval, send-approval for composed messages@zibokapi/dsh-codex-computer-use/computer-policy ask-per-app gate; grants persist through the settings user layer

API parity

OperationCodex paramsdsh toolDelta
clickapp, element_index?, x?/y?, mouse_button?, click_count?computer_use_clickdsh adds click_method (auto/accessibility/app_post/sky_click/global)
dragapp, from_x, from_y, to_x, to_ycomputer_use_dragmatch
get_app_stateapp, disableDiff?computer_use_get_app_statedsh adds text_limit, max_tree_nodes, max_tree_depth
list_appsnonecomputer_use_list_appsdsh adds order
perform_secondary_actionapp, element_index, actioncomputer_use_perform_secondary_actionmatch
press_keyapp, keycomputer_use_press_keydsh additionally returns selected_text
scrollapp, element_index, direction, pages?computer_use_scrollmatch
select_textapp, element_index, text, prefix?, suffix?, selection_type?computer_use_select_textmatch
set_valueapp, element_index, valuecomputer_use_set_valuematch
type_textapp, textcomputer_use_type_textmatch
— (permissions)client-driven permission windowcomputer_use_request_accessdsh only
— (approval list)client app picker statecomputer_use_list_granted_applicationsdsh only
Action resultsvoid; the model calls get_app_state nextpost-action state in every action resultdsh exceeds

Gap catalog

Every gap catalogued from the observation base is closed: capture and timing (settle wait, invalidation refetch, diff markers, cumulative diff, selected-text and per-app notes), safety (denylist and dynamic security-process refusal, private-window and URL policy, organization policy, once/always grants, send approval, confirmations policy, lock-screen pause), presence (action banner, Esc-to-cancel, software cursor), and Record & Replay (event_stream_start / event_stream_status / event_stream_stop over the same seam, tools, and MCP surfaces).

What dsh already exceeds

These exist in dsh only; parity work must not regress them:

  • Every action tool returns the post-action state, while Codex actions return void and the model re-fetches.
  • Capture controls: text_limit, max_tree_nodes, max_tree_depth, and the cumulative_diff baseline switch.
  • Click delivery selection: click_method with sky_click/app_post running the stamped background recipe and global as the explicit, config-gated foreground escape hatch.
  • Permission tools: computer_use_request_access, computer_use_list_granted_applications.
  • Typing robustness: pasteboard strategy with clipboard restore for non-ASCII text and Electron-family apps.
  • Screenshots attached directly to tool results as image blocks instead of a file:// URL the model must read and re-emit.

Licensing stance

The Codex plugin and its desktop apps are proprietary. Parity work reimplements the behavior catalogued here; it never imports Codex text, icons, or code. The SkyLight background-delivery bridge ports its mechanism from the MIT-licensed trycua/cua project (libs/cua-driver/rust/crates/platform-macos/src/input/), which reimplements the same private-API recipe permissively; the port carries the MIT attribution in native/Sources/dsh-computer-daemon/SkyLight.swift and FocusStealPreventer.swift. Model-facing prose — the skill, tier guidance, and any future confirmations policy — is written by dsh and expresses the same rules, not the same words.