Skip to content

Using the Codex App

Once the shim and exports are installed and the adapter is built:

  1. In Codex App, add a Remote connection to the host (or localhost). The app runs its native SSH probe and bootstrap; the shim routes codex app-server into the adapter.
  2. Start a thread and send a prompt. Claude Code runs the turn:
    • Agent text and reasoning stream into the conversation.
    • Bash calls surface as Codex command approvals.
    • Edit / Write / MultiEdit surface as file-change approvals with a live diff.
  3. Approve actions in the Codex App UI as usual.
  4. Disconnecting closes the proxy. Once no turn is active, the daemon idles out and the in-process Claude runtime is reclaimed.

Picking a model

Codex App's model menu stays a model selector only — pick Claude Sonnet, Claude Opus, Claude Haiku, etc. The active Claude Code route (which backend serves the turn) is chosen outside the App with the shim mode; see Backends.

Localhost GUI testing on macOS

For localhost GUI testing, the adapter is launched by SSH and the in-process TS runtime invokes the Claude Code CLI directly — no external daemon to manage. Put these lightweight exports in ~/.zshenv:

bash
REPO="$HOME/path/to/claude-codex"
export PATH="$HOME/bin:$PATH"
export CLAUDE_CODEX_ADAPTER="$REPO/dist/src/adapter.mjs"
export CLAUDE_CODEX_NODE="$(command -v node)"
export CLAUDE_CODEX_CLI="$(command -v claude)"
export CODEX_REAL="$(command -v codex)"

npm run acceptance:gui-ssh-localhost drives this exact path end-to-end (real daemon + proxy over SSH, real Claude turn, approval bridge, diff events) and is the closest automated check to the GUI Remote experience.

Released under the MIT License.