Codex CLI vs Claude Code: probé 7 tareas reales en el mismo repo (guía LatAm 2026-08)
Mismo monorepo. Los mismos 7 tickets. 31 días. Codex CLI en una rama, Claude Code en la otra. Solo 4 tickets terminaron limpios en cualquiera de los dos agentes, y los fallos no se traslaparon como yo esperaba. El marcador total es casi irrelevante. El reparto por tipo de tarea es lo que decide a qué agente le paso un ticket un miércoles a las 4 de la tarde.
Antes de entrar: “Codex CLI” acá significa el binario codex actual (v0.147.0, agosto de 2026), no el flujo viejo codex exec --full-auto. OpenAI quitó --full-auto y encauzó ese mismo comportamiento por --sandbox workspace-write. Si tu memoria muscular todavía escribe la bandera vieja, el CLI te lo va a decir.
El experimento, para que puedas cuestionarlo
Elegí 7 tickets de iris-hub que ya estaban en el backlog, etiquetados y lo bastante chicos como para cerrarse en una tarde cada uno. Las categorías:
- Refactor — partir una función de 300 líneas en tres archivos, dejar las pruebas en verde
- Generar pruebas — escribir los tests unitarios que faltan para un módulo wrapper de
pinchtab - Corrección de bug — un flake real de Playwright que llevaba una semana ignorando
- Migración — cambiar un cargador YAML propio por
pyyamlen 14 puntos de llamada - Revisión de PR — auditar un PR abierto que tocaba código cercano a autenticación
- Sincronización de docs — regenerar el bloque
--helpdel README desde el mismo CLI - Script nuevo — un scraper Notion → Zenn de una sola pasada, unas 120 líneas
Para cada ticket abrí dos ramas: codex/<slug> y claude/<slug>. Cada agente recibió el mismo prompt, el mismo archivo AGENTS.md / CLAUDE.md y los mismos permisos. La misma persona manejando los dos, con la misma tendencia a decir “ya, mérgealo” a las 5 de la tarde un viernes. Si algún veredicto suena duro con uno de los dos agentes, es porque quería que ganaran los dos.
El marcador

| Tarea | Codex CLI | Claude Code | Ganador |
|---|---|---|---|
| Refactor (partición en 3 archivos) | Aterrizó, pero rompió 2 pruebas que tuve que arreglar | Aterrizó limpio, pruebas en verde | Claude Code |
| Generar pruebas (wrapper) | 41 tests generados, 6 tautologías | 28 tests generados, 1 tautología | Claude Code |
| Bug fix (flake de Playwright) | Adivinó con reintentos, no llegó a la causa raíz | Rastreó una condición de carrera y la parchó | Claude Code |
| Migración (14 puntos de llamada) | Terminó en 11 min, diff 100% limpio | 18 min, se saltó un punto de llamada | Codex CLI |
| Revisión de PR (auth) | Revisión larga y estructurada, 2 hallazgos reales | Más seca, 3 hallazgos reales, 0 falsos positivos | Claude Code |
Doc sync (bloque --help) | De un tiro, correcto | Dos rondas, correcto | Codex CLI |
| Script nuevo | Script funcional en una ronda | Script funcional en una ronda | Empate |
Si sumas: Claude Code 4, Codex CLI 2, empate 1. Ese número aislado engaña; puedes invertirlo cambiando dos de mis tickets por otros dos, y no te discutiría. Lo que importa es la forma de la columna de victorias. Claude Code ganó donde el agente tenía que dudar: revisiones, cacería de bugs, refactors donde una decisión mala se multiplica. Codex CLI ganó donde dudar solo agrega latencia: migraciones mecánicas y generaciones de una pasada.
Dónde Claude Code se negó a perder
Hay dos tipos de ticket que sobresalen: el bug fix y la revisión de PR. Los dos tenían la misma forma — superficie chica, primera hipótesis plausible pero equivocada, y el arreglo correcto escondido un nivel más abajo.
Con el flake de Playwright, Codex CLI llegó, agregó reintentos y un waitForSelector más largo, corrió el test dos veces, vio verde y abrió el PR. Eso oculta el problema, no lo arregla. Claude Code abrió el test, leyó la fixture, notó que dos llamadas a page.goto competían por un frasco de cookies compartido y las separó. El PR fueron tres líneas y el flake desapareció. Cuando volví a correr el “arreglo” de Codex CLI la semana siguiente, el flake reapareció a menor frecuencia. El test refactorizado por Claude Code lleva 21 días en verde.
La revisión de PR fue peor. La de Codex CLI era larga — encabezados, subtítulos, bloques de código — y correctamente marcó dos temas reales. También marcó cuatro cosas que estaban bien, y pasé 20 minutos explicándome a mí mismo por qué estaban bien. La de Claude Code fue seca, marcó tres temas reales y no marcó nada que tuviera que defender.
Este es el patrón aburrido que los benchmarks no capturan. Terminal-Bench 2.0 premia la decisión rápida. El trabajo de revisión real premia una herramienta que no te dé una respuesta plausible cuando no la tiene.
Dónde Codex CLI se negó a perder
En el ticket de migración dejé de defender mis prejuicios. 14 puntos de llamada, un solo cambio del cargador YAML. Codex CLI terminó en 11 minutos con un diff limpio — un commit, sin imports muertos, sin shims sobrantes. Claude Code tardó 18 minutos y se saltó un punto de llamada que estaba dentro de un bloque try/except ImportError. No era un salto sutil, pero fue real. Los otros cuatro puntos en el mismo archivo se reescribieron bien.
El bloque --help fue la misma historia a menor escala. Codex CLI ejecutó el CLI, capturó la salida y la puso en el README entre las cercas — listo. Claude Code quiso razonar sobre cómo debería lucir el bloque --help y reescribió algunas descripciones de opciones antes de que le pidiera que solo pegara lo que imprime la herramienta. Dos rondas en vez de una.
Ninguna de estas historias sirve como benchmark. Todas son historias de tiempo. Cuando el ticket no tiene decisiones interesantes adentro, Codex CLI lo cierra 30-50% más rápido que Claude Code, y el diff queda más limpio porque hay menos “déjame pensarlo” en el medio.
Costo en USD (y qué significa en MXN/COP/ARS)
En 31 días, Codex CLI me costó cerca de US$ 58 en llamadas a la API (voy por pago por uso, no por Codex Pro). Claude Code no me costó nada extra sobre los US$ 100 del plan Max 5x que ya pagaba. Si prorrateo el gasto del plan, digamos US$ 30 para este experimento.
Referencia rápida al tipo de cambio de agosto de 2026 (aproximado, para dimensionar):
- US$ 58 ≈ MX$ 1,050 · COP 240,000 · AR$ 78,000
- US$ 100 ≈ MX$ 1,800 · COP 415,000 · AR$ 135,000
No es una comparación justa. Codex Pro a US$ 200/mes aplanaría la línea de API a cero también. Pero sí es la forma que vio mi billetera. Ninguno de los dos agentes cuesta lo suficiente por sí solo como para cambiar la respuesta. La pregunta real es cuál tienes a la mano en el momento en que llega el ticket.
Qué hago hoy
- Refactors que tocan comportamiento, revisiones de PR y cacería de bugs: Claude Code. El reconocimiento de patrones sobre “esto se ve bien pero no lo está” es donde la duda paga.
- Migraciones, regeneración de docs, generación de una pasada, cualquier cosa mecánica que pueda encolar y dejar corriendo: Codex CLI. La falta de duda es una característica cuando no hay nada que dudar.
- Scripts nuevos: el que abra primero. A ese tamaño no se distinguen.
- Flujos de CI: Claude Code Action para revisión de PR, Codex para PRs de mantenimiento agendados. No se pisan.
Uso los dos. Dejé de correr experimentos para elegir un ganador cerca del día 18, cuando me di cuenta de que agarraba uno u otro sin revisar el marcador. Si todavía usas uno solo, el siguiente paso es instalar el otro por una semana y ver qué tickets dejan de doler.
ken imoto · WebRTC & Voice AI engineer · kenimoto.dev
Libro relacionado Practical Claude Code Claude Code desde cero hasta producción — CLAUDE.md, Plan Mode y workflows de equipo, desde un año de uso real Ver la página del libro → ¿Te resultó útil este artículo?