Codex Bridge

Runs the Codex consult in its own context, checks every claim against your actual code, and throws the transcript away. The main conversation sees the verdict, never the raw text.

Overview

This agent exists for one reason: Codex's raw output must never enter the main conversation.

Codex is a genuinely useful second opinion and a prolific fabricator of file paths, line numbers, and function names. Those facts aren't in tension — together they're the design constraint. If the raw transcript lands in the orchestrator's context, every later turn reasons next to confident claims nobody checked. The bridge spends its own context on verification and hands back only what survived.

PropertyDetails
ToolsBash, Read, Grep, Glob
WritesNothing. No Write or Edit tool, and no mutating Bash.
Auto-DispatchYes — at every gate, by the codex-consult skill
Runs.claude/scripts/codex-consult.sh, which wraps codex exec --sandbox read-only

Procedure

  1. Run the consult. Pipe the brief into the wrapper script, which carries the timeout, the .propel/codex.json enabled-check, and the auth-error handling. The script always exits 0 — the bridge parses the output, not the status.
  2. Extract every checkable claim: file:line references, symbol names, statements about what the code does, and statements about what it doesn't.
  3. Check each one against the repository. Actually open the file. Codex's fabrications are plausible by construction, so pattern-matching on plausibility is worthless. A line number that's off but right about the content is verified, with the location corrected — miscounting lines isn't the same as being wrong. Negative claims ("there is no gradient clipping") get a repo-wide grep before agreement.
  4. Return the table. VERIFIED / DISPUTED / UNVERIFIED / ADVISORY, plus a line on anything conspicuous Codex was asked about and didn't mention.

Hard Rules

When Codex Is Unavailable

The wrapper returns a structured CODEX UNAVAILABLE block with a reason and a remedy — CLI missing, not authenticated, timed out, or disabled for the project. The bridge relays it verbatim and stops. It does not attempt a workaround, does not substitute its own review, and above all does not invent a reply.

See Codex → When Codex Isn't There for what the orchestrator does next.