Saltar al contenido
artículos
CodexClaude CodeAI CodingBenchmarksDeveloper Tools

Codex vs Claude Code: 48 ejecuciones en tickets reales, y el ticket decidió

Corrí Codex y Claude Code en 8 tickets reales de un repo en producción, 48 ejecuciones al mismo precio por token, evaluadas con los tests ocultos de los commits reales. Los dos escriben código que funciona a partir de un ticket claro. Se diferencian en velocidad, cuidado y factura, y donde los dos fallaron, mi ticket no decía nada.

Los dos agentes escribieron código que funciona para cada ticket que decía lo que quería. Donde fallaron, mi ticket no decía nada.

Elige Claude Code si te sientas con el agente y lo vas guiando. Elige Codex si le pasas el ticket y te vas. Los dos escriben código que funciona a partir de un ticket claro: les di 8 tickets reales del código de este sitio, 48 ejecuciones en total, y revisé cada resultado con tests que nunca vieron.

Claude Code es mi herramienta de todos los días. La fintech cripto de 13 apps que entregué solo en 70 días corrió sobre él. A Codex lo conozco por esta prueba: 24 ejecuciones headless en los mismos tickets, más su documentación y su código fuente. Lee el lado de Codex con eso en mente.

Libro gratis · en inglés · 169 páginas

Codex y Claude Code resolvieron cada ticket que dejaba claro el comportamiento. El libro está en inglés; sus plantillas de spec te ayudan a dejarlo claro en los tuyos.

Recibir el libro gratis

Los dos escriben código que funciona a partir de un ticket claro

En un ticket que dice lo que quiere, todos los modelos que corrí escribieron código que pasó: Sonnet 5.5 y Haiku 5.5 en Claude Code, GPT-6.1 Sol y GPT-6 Luna en Codex, incluidos los baratos. Para el código en sí no estás eligiendo un modelo. Estás eligiendo velocidad, cuidado y un plan.

Regresé el código de este sitio a justo antes de 8 cambios que había puesto en producción, le di el ticket a cada agente y califiqué su código con los tests de mi cambio real, que nunca vio. Cada herramienta corrió un modelo de precio medio y uno barato, emparejados por precio por token. El método completo está al final. Siete tickets, las dos herramientas, todos los modelos, todas las ejecuciones: resueltos. Juega con el corte que te importa:

48 ejecuciones, desglosadas

Cada ejecución es un agente, un ticket, un intento. Resuelto significa que pasaron todos los tests ocultos del commit real.

Nivel del modelo
Tamaño de la tarea
Medida
Nota según

Resueltas · mayor es mejor

Claude Code22 de 24
Codex21 de 24

Por tarea (✓ resuelta, ✗ no)

Tamaño de la tareaClaude CodeCodex
El registro mantiene el idiomapequeña 3 de 3 3 de 3
Deduplicar por 10 minutospequeña 3 de 3 3 de 3
HEAD en el lectorpequeña 3 de 3 3 de 3
IDs de clic de anunciosmediana 3 de 3 3 de 3
Cache de un añomediana 3 de 3 3 de 3
País y UTMsmediana 3 de 3 3 de 3
Header de preview de GTMmediana 3 de 3 3 de 3
Sitio del libro desde el bucketgrande 1 de 3 0 de 3
El costo es el precio de lista de la API por ejecución. Las líneas son agregadas más borradas, tests y docs incluidos. El ticket grande cuenta con uno de mis tests corregido; la sección Cómo lo probé explica por qué. Cambia a Test original para ver los totales sin esa corrección.

Un leaderboard público, el Coding Agent Index de Artificial Analysis, pone adelante a Codex con GPT-6.1 Sol, 60 a 55, a US$ 0,89 contra US$ 1,24 por tarea. Sus tareas son más difíciles y las escriben desconocidos. Las mías son tickets de un repo real, escritos como yo los escribo. Si tus tickets se parecen a los míos, confía en el empate. Si les das a los agentes problemas que nadie especificó, confía en su ranking.

Fallan donde tu ticket no dice nada

Donde el ticket no dice nada, decide el agente, y su elección es sensata pero no es la tuya. Diez de los catorce fallos en mi ticket grande vinieron de un valor que nunca escribí.

El ticket grande pedía un módulo entero: servir el sitio estático de un libro desde un bucket privado bajo /read, con cache, analítica, paths seguros y un noindex en cada respuesta. Entregué la sección del README que salió con el módulo real, 464 palabras. Aquí está junto a dos tickets para la misma ruta que pasaron en todas las ejecuciones:

Dos formas de escribir el mismo ticket

Qué fijaTicket claro, 6 de 6 pasaronTicket grande, 1 de 6Lo que adivinaron los agentes
El header“the browser should keep it for a year with Cache-Control: public, max-age=31536000, immutable”“assets/site.css|js one year when the URL has the content hash ?v=”Sus propios headers de assets, en 5 de 6 ejecuciones
El body“A HEAD request must answer with the same status and headers a GET would get (including Content-Type and X-Robots-Tag), with an empty body”“A missing or forbidden object is a plain 404”Un 404 que dice Not found, en 2 de 6 ejecuciones
Cada path“pagefind/pagefind.js, pagefind/pagefind-worker.js, pagefind/wasm.<lang>.pagefind ... one day, public, max-age=86400”“/read/<slug>/<lang>/[<page>] serves a book as a website.”Una carpeta pagefind/ que no sirve su index.html, en 3 de 6 ejecuciones
Líneas reales. Ticket claro: los tickets que mi agente escribió a partir de dos fixes que puse en producción más tarde ese día en esta ruta, el cache de un año (filas 1 y 3) y HEAD (fila 2), cada uno aprobado en las 6 ejecuciones. Ticket grande: el README que escribí para el ticket grande. Los conteos vienen de la tabla de fallos que sigue.

Escribe tu ticket como el claro. Cada valor que dejas fuera, el agente lo elige por ti. Y termina cada ticket con las cuatro líneas que le daría a un colega:

Work in this repository and follow AGENTS.md. Update or add tests for the
new behavior, and update any docs in the repo that describe it. Before you
finish, run `pnpm verify` and make sure it passes. Do not commit and do not push.

Aquí están los catorce fallos, uno por uno:

Por qué falló el ticket grande

Lo que quería el testClaude CodeCodexPor qué
Una carpeta como pagefind/ sirve su index.html12Mi ticket: nunca lo dijo
Headers exactos de assets: immutable, nosniff, los tipos de wasm y CSS23Mi ticket: dijo un año, nunca el header
Una página que no existe responde con el body vacío02Mi ticket: dijo solo un 404 simple
El contexto de la página escrito como texto JSON20Mi test: buscaba texto exacto, y el código estaba bien
No contar mis propias visitas en la analítica02El agente: el ticket lo decía
Tests ocultos fallados en las 3 ejecuciones por herramienta (2 con el modelo de precio medio, 1 con el barato); una ejecución cuenta una vez por cada test que falló. La fila de texto JSON es una ejecución de Haiku que falló dos tests por la misma razón. Clasifiqué cada fallo leyendo el código del agente contra las palabras del ticket.

Diez de los catorce son míos. Dos vienen de una ejecución y de un test que leía el código como texto. Dos fallos fueron del propio agente: Codex omitió una regla que el ticket sí decía, así que mis propias visitas habrían terminado en la analítica. Un check de mi propio test también estaba mal; lo corregí y califiqué el ticket grande contra el test corregido, y Cómo lo probé tiene los detalles.

Ninguna herramienta lee la mente. Las dos construyen lo que dice el ticket, y la distancia entre “lo que escribí” y “lo que quise decir” es donde falla un ticket grande. Escribo specs justamente por eso, y este benchmark es la prueba más limpia que tengo: en los siete tickets que fijaban el comportamiento, pasaron 42 de 42 ejecuciones. Esos siete se escribieron para cubrir sus tests, así que ese número es en parte por diseño. El ticket grande es el honesto: escrito por una persona con prisa, con huecos que nadie notó hasta que dos agentes cayeron en ellos.

Reescribe el ticket, no lo vuelvas a correr

Cuando un agente falla tu ticket, reescribe el ticket antes de correrlo otra vez. En mis ejecuciones, un fallo se pegaba al ticket, no a la suerte: siete tickets pasaron todas las veces, y el grande pasó una vez de seis.

El consejo habitual es volver a correr un agente inestable y quedarte con el mejor resultado. Esa cuenta supone que cada ejecución es una moneda lanzada de nuevo: con el 90% de mis ejecuciones aprobadas, dos intentos resolverían el 99% de las veces. Mueve los tickets difíciles y mira cómo se encoge esa promesa:

pass@k vs pass^k

Los demás tickets pasan en 100% de las ejecuciones.

Tasa promedio por ejecución: 90%

Al menos una pasa (pass@k)

Si cada ejecución fuera lanzar una moneda a la tasa promedio99%

En estos tickets91%

Todas pasan (pass^k)

En estos tickets88%

43 de mis 48 ejecuciones pasaron, cerca del 90%. Siete tickets pasaron todas las veces y el grande 1 vez de 6, así que un segundo intento sube la tasa real a cerca del 91%, no al 99%.

El reintento sí cambió un veredicto: las dos ejecuciones de precio medio de Claude Code en el ticket grande se dividieron, una pasó y una falló, y esa que pasó es la diferencia entre 22 y 21.

Libro gratis · en inglés · 169 páginas

En mi ticket más grande, Codex y Claude Code fallaron en decisiones que la spec nunca escribió. Las plantillas del libro te las piden por escrito antes de empezar.

Recibir el libro gratis

Claude Code volvió el doble de rápido

En Claude Code, un ticket típico volvió en menos de dos minutos. En Codex, más cerca de cuatro. Si esperas en la terminal mientras trabaja, lo vas a sentir en cada ticket. Con los modelos baratos la diferencia crece a 2,3 minutos contra 7,6, tiempo suficiente para ir a hacer otra cosa.

A dónde se fue el tiempo

Ejecución mediana, GPT-6.1 Sol vs Sonnet 5.5÷ 2,2
Codex: 3,7 min
Claude Code: 1,7 min
Esperando al modelo, precio medio÷ 3,1
Codex: 2,8 min
Claude Code: 0,9 min
Corriendo comandos, precio mediocasi igual
Codex: 35 s
Claude Code: 38 s
Ejecución mediana, GPT-6 Luna vs Haiku 5.5÷ 3,2
Codex: 7,6 min
Claude Code: 2,3 min
Medianas por ejecución; las partes también son medianas, así que no suman el total. Los comandos incluyen tests, el type checker y las búsquedas del propio agente.

Las dos herramientas registran un timestamp en cada evento, así que dividí cada ejecución en tiempo corriendo comandos y tiempo esperando al modelo. Con los modelos de precio medio, las dos pasaron el mismo tiempo en comandos; toda la diferencia es el modelo. Codex además vuelve al modelo más seguido, unas 18 veces por ticket contra unas 14, y cada vez que vuelve, esperas otra vez. Con los modelos baratos, Luna también pasó el triple de tiempo en comandos, 163 segundos contra 50.

Las llamadas de Codex al modelo pasaron por un gateway, y Artificial Analysis mide a los dos a menos de un minuto de distancia, 12,3 minutos contra 13,3 en sus tareas, así que no bases tu elección en mi reloj. En mi máquina, en mis tickets, Claude Code respondió mientras yo todavía habría estado esperando.

Codex limpia. Claude Code reporta.

Ninguna herramienta se salió del ticket ni dijo listo con un check en rojo. La diferencia aparece cuando algo que no rompió le estorba: Codex lo arregla y te avisa, Claude Code te avisa y lo deja. Si igual revisas cada diff, el cuidado extra de Codex te cuesta dos minutos por ticket. Si no, es la razón para elegir Codex.

Reddit tiene una lista de quejas sobre estos dos. Claude Code edita archivos que nadie pidió. Dice “listo” cuando no lo está. Codex se queda en el alcance. Hice el conteo.

Las quejas, contadas en 24 ejecuciones cada una

Claude CodeCodex
Cambió código que el ticket no pedía00
Dijo listo con los checks en rojo00
Agregó o actualizó tests2424
Actualizó la documentación2424
Ediciones de docs bloqueadas en .claude/, sin nadie que dijera que sí80
Arregló un check fallido que no causó (de 9)59
Dejó los checks del repo pasando2024
Mediana de líneas de test escritas, modelos de precio medio4598
Mediana de comandos de shell, modelos de precio medio1323
Los checks son pnpm verify (tipos, lint, formato, tests), vueltos a correr fuera del sandbox después de cada ejecución. Las ediciones de docs se pidieron en todos los tickets, así que no cuentan como fuera de alcance. Los dos tocaron archivos fuera del commit real solo donde el ticket los necesitaba, como el firmador de URLs que reutilizó el ticket grande.

Tres de mis ocho puntos de partida ya fallaban los checks antes de que el agente tocara algo: un archivo de reglas bajo .claude/ que rompía el formateador, en una parte del repo que el ticket nunca mencionó. Codex lo arregló en las nueve ejecuciones y lo dijo, lo que hace de Codex el que editó un archivo que nadie pidió. Claude Code lo arregló en cinco, siempre corriendo el formateador desde la shell, y en las otras cuatro lo dejó en paz a propósito: fuera de esta tarea, dijo, y los checks fallarían en un archivo que no había tocado.

Esa carpeta le costó a Claude Code más que el formateador. Pregunta antes de editar cualquier cosa bajo .claude/, y en una ejecución headless no hay nadie para decir que sí. En ocho ejecuciones, la documentación que quería actualizar vivía ahí, y en seis de ellas mi commit real había actualizado ese mismo archivo. Codex no perdió ninguna. En una sesión en vivo, esa carpeta te cuesta una tecla. En una ejecución que nadie mira, te cuesta la edición.

Con los modelos de precio medio, Codex escribió el doble de líneas de test; con los baratos, empataron.

La factura empata hasta que bajas al modelo barato

Esta sección es tu factura solo si pagas por token, con una API key o en CI. Si tienes un plan, salta a la siguiente. Por token, los modelos de precio medio empatan en cerca de US$ 0,43 por ticket resuelto. La trampa es Haiku en Claude Code en una tarea larga: pasados los 100K tokens de contexto cobra cinco veces más, y mi única ejecución larga con Haiku costó US$ 1,01 donde Codex con Luna costó US$ 0,10.

El empate tiene historia. Las facturas fueron US$ 6,51 para Claude Code y US$ 6,12 para Codex en 16 ejecuciones de precio medio cada una, y Claude Code empata por ticket resuelto porque resolvió uno más. Fue más barato en cinco de los siete tickets claros y más caro en el grande.

Debajo está el cache. Un agente reenvía toda la conversación en cada turno. Lo que ya envió se lee del prompt cache a un veinteavo del precio de input; la parte nueva primero hay que guardarla, y guardar cuesta más que leer. En mis ejecuciones de precio medio, el 93% de los tokens de input fueron lecturas, y las lecturas cuestan lo mismo en los dos. Guardar no: Anthropic cobra sus escrituras de cache de una hora a 2x el precio de input, OpenAI sus escrituras de cache de 30 minutos a 1,25x. Las escrituras fueron la línea más grande en las dos facturas, US$ 3,49 de los US$ 6,51 de Claude Code y US$ 3,10 de los US$ 6,12 de Codex. Las ejecuciones de Claude Code fueron más cortas, cerca de un tercio menos de tokens leídos y escritos por ejecución, y eso es lo que lo emparejó.

La trampa de Haiku es una línea de precio. Haiku 5.5 cuesta US$ 0,10 por millón de tokens de input hasta 100K tokens de contexto y US$ 0,50 después, y Claude Code le da a Haiku una ventana de un millón de tokens, así que nada impide que una tarea larga cruce esa línea. En el ticket grande, 64 de las 69 llamadas de Claude Code con Haiku llevaron más de 100K tokens, hasta 228K. Codex corre Luna con una ventana de 258.400 tokens, debajo de la línea de 272K donde sube el precio de OpenAI. Esa sola ejecución explica casi todo por qué los modelos baratos marcan US$ 0,19 por ticket resuelto en Claude Code y US$ 0,05 en Codex.

Mismo precio de lista, otra factura

A

Lecturas de caché
0,06 US$
Escrituras en caché
0,17 US$
Salida
0,07 US$

Con la caché0,30 US$

B

Lecturas de caché
0,10 US$
Escrituras en caché
0,18 US$
Salida
0,07 US$

Con la caché0,35 US$

GPT-6.1 Sol, cache de 30 minutos cuesta 15 % más que Sonnet 5.5, cache de 1 hora.

Ajustado a la ejecución mediana de precio medio de cada herramienta: Sonnet 5.5 con 0,69M tokens de input, GPT-6.1 Sol con 1,04M. Dales a los dos los mismos tokens y Sol sale más barato, todo en las escrituras. Elige las dos filas de Haiku para ver la línea de contexto largo. Precios por millón de tokens, 22 de octubre de 2026.

A dónde van los tokens, y por qué la mayoría son el agente releyendo su propio pasado, es el tema de dónde muere la mayoría de los tokens de tu agente.

Quédate con el plan que ya pagas

Resuelven los mismos tickets, así que cambiar te da velocidad o cuidado, no mejor código. Quédate con el plan de US$ 20 que tienes, salvo que quieras que funcione en otras herramientas: un plan de ChatGPT funciona, uno de Claude no. En ChatGPT Plus tienes muchos más mensajes de Luna que de Sol, y en mis tickets claros Luna pasó en todas las ejecuciones. Solo tardó 7,6 minutos por ticket.

Planes que incluyen cada agente

PlanPrecioPara programar
Claude ProUS$ 20/mesClaude Code incluido; un límite por sesión de 5 horas más un límite semanal, compartidos con las apps de Claude
Claude MaxUS$ 100 / US$ 2005x o 20x el uso de Pro
ChatGPT Free y GoUS$ 0 / US$ 8GPT-6 Luna en la app de escritorio de Codex, en despliegue; sin Codex Cloud
ChatGPT PlusUS$ 20/mes15 a 160 mensajes locales de GPT-6.1 Sol cada 5 horas, 350 a 3.000 con Luna
ChatGPT ProUS$ 100 / US$ 200 / US$ 500Sin límite de cinco horas por ahora; puede haber límites semanales
De claude.com/pricing y de la página de precios de Codex de OpenAI, 22 de octubre de 2026. Claude Pro cuesta US$ 17 al mes con facturación anual. Pasados los límites, los dos venden uso extra como créditos.

Ese criterio va a sobrevivir a todos los números de este artículo. Un plan de Claude cubre los productos propios de Anthropic, Claude Code incluido, y Anthropic prohíbe que herramientas de terceros ofrezcan login con Claude. Un plan de ChatGPT funciona en Codex y, desde el 29 de septiembre de 2026, también en herramientas de terceros participantes. Recorrí ese camino en OpenCode vs Claude Code, y la cuenta de un plan fijo contra los precios de API está en ¿vale la pena Claude Max?. Las dos páginas de precios: claude.com/pricing y los precios de Codex de OpenAI.

Las mismas features, defaults opuestos

Cualquier feature que busques está en los dos. Lo que cambia es el default: Codex encierra al agente hasta que lo sueltas, y Claude Code lo deja correr hasta que lo encierras. De fábrica, Claude Code además corre Opus 5.5, que no probé; Sonnet 5.5 alcanzó para todos los tickets claros.

Lado a lado

Claude CodeCodex
Sandbox por defectoApagado, actívalo con /sandboxEncendido: escritura solo en el workspace, red apagada
AprobacionesSeis modos de permiso; auto es el default en la terminal y en VS CodeOn request, never o granular, más un agente opcional de auto-review
Archivo de instruccionesCLAUDE.md, o AGENTS.md cuando no hay unoAGENTS.md, en capas por directorio, hasta 32 KiB
Subagents, skills, hooks, MCPLos cuatroLos cuatro
Agente en la nubeClaude Code on the web, desde ProCodex Cloud, desde Plus
EditoresVS Code, JetBrainsVS Code y sus forks
Headlessclaude -pcodex exec, solo lectura salvo que le digas
GitHubGitHub Actions; Code Review en Team y Enterpriseopenai/codex-action
Modelo por defectoOpus 5.5 con esfuerzo medioNo documentado; el código fuente pone GPT-6.1 Sol primero, con esfuerzo bajo
De code.claude.com/docs y learn.chatgpt.com/docs, 22 de octubre de 2026. Uno de los primeros resultados para esta búsqueda dice que Codex no tiene skills. Sí las tiene, documentadas en la configuración del agente.

Ningún default corrió en mi prueba: les di a los dos un sandbox y esfuerzo high, que es cuánto piensa el modelo antes de cada paso. De fábrica, Codex piensa menos, con esfuerzo bajo, y eso tampoco es lo que medí.

Guía con Claude Code, delega a Codex

Los dos resolvieron los mismos tickets, así que elige según el hábito que ya tienes.

Elige Claude Code si

  1. 01Guías al agente mientras trabaja y quieres la respuesta antes
  2. 02Ya pagas un plan de Claude
  3. 03Igual revisas cada diff tú mismo
  4. 04Quieres soporte para JetBrains

Elige Codex si

  1. 01Le pasas el ticket y vuelves más tarde
  2. 02Ya pagas ChatGPT, o quieres usar el plan en otras herramientas
  3. 03Quieres que corra los checks y los mantenga en verde sin pedírselo
  4. 04Corres modelos pequeños en tareas largas
Comparación entre “Elige Claude Code si” (4 elementos) y “Elige Codex si” (4 elementos).

¿Codex o Claude Code?

Cuatro preguntas sobre cómo trabajas. La respuesta viene con la razón y con qué vigilar.

¿Cómo trabajas con el agente?

El segundo plan te compra un revisor

Si ya pagas uno, el segundo vale la pena como revisor, no como mejor escritor. Deja que Claude Code construya mientras lo guías, y después haz que Codex lea el diff contra el ticket antes del merge.

Los dos leen el mismo AGENTS.md, así que un solo archivo de instrucciones guía a los dos, y cuesta un comando extra. No corrí este pipeline en un equipo; es lo que sugieren mis números. El harness alrededor de los agentes, los checks y el review, hace más por la calidad que el agente que escribe el código.

Dos agentes, un ticket

Entrada

Un ticket que define el comportamiento y la interfaz

  1. túEscribe AGENTS.md una vez

    Las dos herramientas lo leen. Sin CLAUDE.md, o deja uno que apunte a él.

  2. Claude CodeConstruye el cambio

    El loop rápido: lo guías mientras trabaja.

  3. CodexRevisa contra el ticket

    codex exec arranca en solo lectura: lee el diff contra el ticket y reporta lo que falta.

  4. Gate:CICorre los checks completos fuera de cualquier sandbox
  5. Gate:túAprueba el diff

Salida

Un cambio en el que coinciden dos agentes y los checks

Cómo lo probé, para los escépticos

Todo lo anterior se apoya en estos detalles. Si quieres repetirlo en tu propio repo, esta es la receta.

La prueba

tickets reales
8
del Worker de este sitio
ejecuciones
48
24 por herramienta
total a precios de API
US$ 14,33
las 48 ejecuciones
'listo' con un check en rojo
0
en ninguna herramienta

Tomé 8 commits reales del Cloudflare Worker de este sitio (TypeScript: captura de leads, descargas, un lector de libros), desde un fix de 25 líneas hasta un módulo de 647. Para cada uno: un git worktree nuevo en el commit padre, que es una copia limpia del repo tal como estaba justo antes del cambio, un ticket, y el agente solo con él. Cuando el agente para, entra el archivo de tests del commit real y corre. La misma idea de SWE-bench, en mi propio código. Validé los 8 primero: cada test oculto falla en el commit padre y pasa con el fix real. De los 128 tests ocultos, 103 ya pasaban antes del cambio; verifican que el agente no rompió lo que funcionaba. Los otros 25 son el ticket.

Los tickets son de dos tipos, a propósito. Mi agente escribió siete a partir de los commits reales: el comportamiento y la interfaz que verifica el test, nunca el código. El octavo, el grande, es la sección del README que salió con el módulo real, tal como se escribió en su momento, más la interfaz que importa el test. Todos los tickets terminaban con las cuatro líneas de antes.

Los 8 tickets

TicketTamañoDiff realTests ocultos
El registro mantiene el idioma del lectorfix pequeño+34 −1020
Deduplicar un lead por 10 minutos, no 24 horasfix pequeño+30 −1614
Peticiones HEAD en el lector del librofix pequeño+16 −914
Guardar los IDs de clic de anuncios en el contactofeature mediana+106 −3014
Cache de un año para archivos con hashmediano+59 −415
País y UTMs en el contactofeature mediana+96 −4416
Preview de GTM server-side a partir de cookiesfeature mediana+62 −221
Servir el sitio estático de un libro desde el bucketgrande, módulo nuevo+647 −414
El diff real cuenta todos los archivos del commit original, tests y docs incluidos.

El repo tiene un AGENTS.md y ningún CLAUDE.md, así que las dos herramientas leen las mismas instrucciones. Codex lee AGENTS.md de forma nativa. Claude Code lo lee cuando no hay CLAUDE.md.

Los modelos están emparejados por precio, porque el precio es como eliges de verdad. Sonnet 5.5 y GPT-6.1 Sol cuestan de lista US$ 2 por millón de tokens de input, US$ 0,10 en cache y US$ 10 de output (OpenAI, Anthropic), y GPT-6.1 Sol es el modelo que recomienda Codex. Haiku 5.5 y GPT-6 Luna cuestan US$ 0,10, US$ 0,01 y US$ 0,50. El esfuerzo es high en los dos. Las dos herramientas corrieron headless y en sandbox, cada ticket en las dos al mismo tiempo en la misma máquina:

Los dos comandos, por ejecución

  • Claude Code

    claude -p "$TICKET" --model claude-sonnet-5-5 --effort high --permission-mode acceptEdits --settings '{"sandbox":{"enabled":true,"autoAllowBashIfSandboxed":true}}' --setting-sources project --strict-mcp-config --output-format stream-json --verbose
  • Codex

    codex exec -m gpt-6.1-sol -c model_reasoning_effort="high" -s workspace-write --json "$TICKET"

Configuración

Claude CodeCodex
Versión2.1.307 (2.1.308 en las últimas 7 ejecuciones)CLI 0.163.0
Modelo de precio medioSonnet 5.5GPT-6.1 Sol
Modelo baratoHaiku 5.5GPT-6 Luna
Esfuerzohighhigh
Modoclaude -p, ediciones aceptadas automáticamentecodex exec, escritura en el workspace
SandboxEncendido, shell permitida automáticamente dentro de élEncendido, red apagada
Ejecuciones2 por ticket con Sonnet, 1 con Haiku2 por ticket con GPT-6.1 Sol, 1 con Luna
Claude Code se actualizó solo una vez durante la noche. Ninguna herramienta cargó MCP servers, Codex corrió con una API key, y ninguna llegó a un límite de uso. Codex además cargó las skills instaladas en mi carpeta home; Claude Code corrió solo con la configuración del proyecto.

Los dos sandboxes rompieron mis checks, de formas distintas. El sandbox de Codex apaga la red, y pnpm intentó descargar la versión que fija el repo. En 21 de 24 ejecuciones Codex igual logró correr el propio pnpm verify, casi siempre apagando el cambio de versión de pnpm; en las otras 3 corrió los pasos uno por uno. En el sandbox de Claude Code, pnpm no pudo bloquear su store. Claude Code pidió correr fuera del sandbox, el modo headless lo rechazó, y corrió cada paso directo desde node_modules/.bin. En una sesión en vivo apruebas cada uno de estos pedidos con una tecla. Por eso los checks de cada ejecución se volvieron a correr fuera del sandbox.

El costo es el precio de lista de la API, a partir de los conteos de tokens de cada ejecución. Claude Code reporta su propio costo a precio de lista por ejecución. Para Codex, calculé sus conteos de tokens con la lista de OpenAI, escrituras de cache incluidas, a la tarifa de 30 minutos: Codex 0.163.0 es anterior a la opción de cache de 12 horas de OpenAI.

Uno de mis tests estaba mal

En el ticket grande, todas las ejecuciones fallaron la misma aserción: una petición HEAD tenía que llegar al bucket como HEAD. Esa aserción era mi bug. El Worker lee el bucket a través de una URL prefirmada, y la firma cubre el método HTTP, como una entrada sellada para una sola puerta: firmada para GET, el bucket rechaza un HEAD. Lo corregí un commit después, y ese fix es el tercer ticket pequeño de este benchmark. Las seis ejecuciones habían leído “the Worker signs a GET” en el ticket y mantuvieron el GET. Ellas tenían razón y mi test estaba mal.

Así que califico el ticket grande contra su test tal como quedó después de mi corrección, y muestro los dos. Con el test original ninguna ejecución pasa, los totales quedan 21 a 21, y el costo por ticket resuelto de Claude Code con el modelo de precio medio pasa de US$ 0,43 a US$ 0,46. Con el corregido, Claude Code con Sonnet 5.5 pasa una vez de dos ejecuciones, y de ahí sale su 22. Una ejecución de dos no es una victoria por la que apostaría. El explorador del principio alterna entre los dos.

Codex vs Claude Code, respuestas rápidas

¿Es Codex mejor que Claude Code?

No en mis tickets. En 8 tickets reales al mismo precio por token, Claude Code resolvió 22 de 24 ejecuciones y Codex 21 de 24, y el costo por ticket resuelto empató con los modelos de precio medio. Codex fue más minucioso: arregló lo que le estorbaba, escribió el doble de líneas de test con el modelo de precio medio y dejó los checks en verde en todas las ejecuciones. Claude Code terminó en menos de la mitad del tiempo. El índice público de Artificial Analysis pone adelante a Codex, 60 a 55, en tareas públicas más difíciles.

¿Qué modelo escribe mejor código, Codex o Claude Code?

En un ticket claro, ninguno de los cuatro que corrí. Sonnet 5.5 y Haiku 5.5 en Claude Code, GPT-6.1 Sol y GPT-6 Luna en Codex: todas las ejecuciones pasaron en mis siete tickets claros. Todos los fallos fueron en un ticket grande que dejó valores sin decir, y los agentes los llenaron con sus propios defaults.

¿Cuál es más barato, Codex o Claude Code?

Los dos planes empiezan en US$ 20 al mes. A precios de API con modelos del mismo precio de lista, el costo por ticket resuelto empató en mi prueba: US$ 0,43 para Claude Code con Sonnet 5.5 y US$ 0,44 para Codex con GPT-6.1 Sol. Los modelos pequeños son distintos: Haiku 5.5 cobra 5x por token pasados los 100K tokens de contexto, así que en una tarea larga Codex con GPT-6 Luna costó una décima parte.

¿Cuál es más rápido, Codex o Claude Code?

Claude Code, en mis ejecuciones: una mediana de 1,7 minutos por ticket con el modelo de precio medio contra 3,7 de Codex. Los dos pasaron el mismo tiempo corriendo comandos; la diferencia fue la espera del modelo, y las llamadas de Codex pasaron por un gateway. Artificial Analysis mide a los dos a menos de un minuto de distancia.

¿Claude Code edita archivos que no pediste?

No en mis 48 ejecuciones. Ninguna herramienta cambió código fuera de lo que pedía el ticket, y ninguna dijo listo con los checks en rojo. El único archivo que nadie pidió, un archivo de reglas que ya fallaba en el formateador, lo arregló Codex en las nueve ejecuciones que lo encontraron y Claude Code en cinco.

¿Codex y Claude Code pueden compartir un archivo de instrucciones?

Sí. Codex lee AGENTS.md de forma nativa, en capas por directorio. Claude Code lee AGENTS.md cuando el repo no tiene CLAUDE.md. En mi prueba, las dos herramientas leyeron el mismo AGENTS.md.

¿Codex CLI es gratis?

El Codex CLI es open source; los modelos no. Inicia sesión con un plan de ChatGPT o usa una API key. Los planes Free y Go reciben GPT-6 Luna en la app de escritorio de Codex a medida que se despliega, sin Codex Cloud. Plus, a US$ 20 al mes, es el primer plan con GPT-6.1 Sol.