MCP server that lets Claude Code read and continue existing OpenAI Codex sessions, via codex app-server. Zero dependencies.
codex-bridge defines 4 tools with complete input schemas and detailed descriptions (avg 180 chars, well above 10-char minimum). Naming follows verb_noun convention (codex_list, codex_read, codex_send, codex_start). However, output schemas are not documented in the source, LLMs cannot predict return structure. Parameter descriptions are thorough but lack explicit constraints (enums, ranges, patterns). No error handling guidance visible. Risk annotations (READ_ONLY, WRITE) are present but not formalized as tool annotations per MCP spec.
List recent Codex CLI/IDE sessions (threads) from local storage, including sessions the Codex picker hides (exec/subagent). Returns id, name, preview, cwd, source, last-activity time, status, and lineage. Sub-agent and forked threads replay their parent's history, so several rows sharing near-identical previews is normal — the "child of / forked from" line says which thread each came from. Read-only, no token cost.
Read a Codex thread's conversation history by thread id WITHOUT resuming it. Rehydrates from disk (works on threads created by any other Codex process). No model call, no token cost. Returns thread metadata (including lineage: which thread it was forked from or spawned by) plus user/assistant messages, reasoning, commands and file changes.
Send a new prompt into an existing Codex thread: resumes it from disk, runs one turn in Codex, and returns Codex's reasoning, executed commands, file changes and final answer. The turn is appended to the ORIGINAL thread (visible in the Codex app). Costs Codex-side tokens (it reloads full history). Default sandbox is read-only; pass write:true to allow file edits.
Start a NEW Codex thread and run its first turn, returning the new thread id along with Codex's reasoning, executed commands, file changes and final answer. The thread is written to Codex's session store, so it appears in the Codex app and in codex_list, and codex_send can continue it later. Use this for fresh work; use codex_send to continue an existing thread. Costs Codex-side tokens. Default sandbox is read-only; pass write:true to allow file edits.
Output schemas not documented. LLMs cannot predict return structure (reasoning, commands, file changes, thread metadata). Forces agents to guess field names and types.
Parameter constraints missing. 'limit' (codex_list) has no min/max bounds; 'effort' (codex_send, codex_start) lacks enum declaration; 'model' accepts free-form strings with no validation guidance.
No error handling guidance. Descriptions do not explain failure modes (invalid threadId, Codex unavailable, sandbox permission denied) or recovery steps.
Risk annotations (READ_ONLY, WRITE) are informal. Should be formalized as MCP tool annotations (readOnlyHint, destructiveHint) per spec.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Pagination not addressed. codex_list returns 'limit' but no 'offset', 'cursor', or 'total_count'. Large result sets risk context window exhaustion.