Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

OpenAI Codex con una suscripción a ChatGPT

Ejecuta un agente en el slot openai, pagado a través de una suscripción de ChatGPT en lugar de la facturación medida por OPENAI_API_KEY. El agente es un modelo Codex de GPT-5.x que controla las herramientas de ZeroClaw, autenticado mediante tu inicio de sesión de Codex en lugar de una clave de API. La facturación sigue tu plan de ChatGPT: primero se consume el uso incluido con tu suscripción, y el uso de Codex que exceda esa cuota incluida se descuenta de los créditos flexibles de tu cuenta según las tarifas por token de cada modelo de OpenAI. No es una ruta fija de $0 por llamada una vez que superas la cuota incluida.

Esta página cubre la configuración de slots, las cadenas de modelos servidos, las implicaciones de coste y enrutamiento, y la integración de OAuth. Para los campos universales del proveedor, consulta Configuration; para la entrada del catálogo de una línea, consulta el Provider Catalog.

Config

La autenticación de la suscripción de Codex reside en la ranura openai. Establece wire_api = "responses" para enrutar a través de POST /v1/responses (el backend de Codex, no la API de completions de chat) y requires_openai_auth = true para obtener las credenciales del perfil de autenticación openai-codex almacenado de ZeroClaw en lugar de un campo api_key:

# Reutilizar un inicio de sesión existente de Codex CLI:
zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json

# O inicia el flujo de inicio de sesión de OpenAI Codex propio de ZeroClaw:
zeroclaw auth login --model-provider openai-codex

Quickstart puede escribir la entrada del proveedor por ti:

zeroclaw quickstart --model-provider openai-codex --model gpt-5.4

La configuración manual utiliza la misma ranura canónica de OpenAI:

[providers.models.openai.coding]
model                = "gpt-5.4"
wire_api             = "responses"
requires_openai_auth = true

[providers.models.openai.review]
model                = "codex-auto-review"
wire_api             = "responses"
requires_openai_auth = true

No existe el campo api_key; requires_openai_auth = true es el conmutador que lee el inicio de sesión de Codex almacenado en lugar de una clave en la entrada. Consulta Configuration → OAuth and subscription auth.

La mitad del alias (coding, review) la elige el operador; escoge lo que mejor se adapte. Haz referencia a ella desde un agente con model_provider = "openai.coding".

Modelos

La API wire de responses accede directamente al backend de Codex, por lo que el valor de model debe ser un ID servido exacto: los alias del lado del cliente de Codex CLI (gpt-5, gpt-5.3, instant, gpt-5.5-instant) no se resuelven aquí y fallan con un 400.

Trate el catálogo servido como volátil. Consúltelo en lugar de confiar en cualquier lista codificada, incluida esta:

# Los nombres de los campos coinciden con el archivo activo ~/.codex/auth.json (verifícalos contra el propio archivo;
# the layout has shifted across Codex versions).
AT=$(jq -r .tokens.access_token ~/.codex/auth.json)
# account_id es OPCIONAL en auth.json; ZeroClaw recurre al JWT de OAuth cuando
# it is absent. `// empty` keeps jq from emitting the literal string "null", and
# el encabezado se envía solo cuando el campo está realmente presente. Después de una importación, tú
# can also read the resolved id from `zeroclaw auth status`.
ACC=$(jq -r '.tokens.account_id // empty' ~/.codex/auth.json)
curl -s https://chatgpt.com/backend-api/codex/models?client_version=1.0.0 \
  -H "Authorization: Bearer ${AT}" \
  ${ACC:+-H "chatgpt-account-id: ${ACC}"} \
  -H "originator: pi" | jq -r '.models[].slug'

client_version es obligatorio y está restringido: un valor obsoleto o demasiado bajo devuelve un {"models": []} vacío sin error. Usa una versión de cliente actual (por ejemplo 1.0.0) si la lista vuelve vacía.

Catálogo servido (2026-06-02; verifíquelo con el endpoint antes de fijarlo):

ID de ServicioRol
gpt-5.4programación diaria (caballo de batalla predeterminado)
gpt-5.5frontera: programación / razonamiento complejos
gpt-5.4-minipequeño, rápido y económico; tareas más simples y subagentes
gpt-5.3-codex-sparkiteración de código ultrarrápida
codex-auto-reviewmodelo de revisión de código automática

GPT-5.5 Instant y GPT-5.3 son modelos de ChatGPT-app, un espacio de nombres diferente que no se sirve en el backend de Codex, por lo que no se pueden usar desde esta ranura.

Para evitar editar la configuración en cada actualización de modelo, resuelve los roles a los IDs servidos actuales de forma dinámica (enumera codex/models, elige la coincidencia más reciente por rol) en lugar de fijar una versión.

Costo y enrutamiento

Cómo factura OpenAI esta ruta (consulta la documentación actual de facturación de planes de Codex / ChatGPT de OpenAI, que prevalece sobre cualquier cifra fijada aquí):

  1. Uso incluido en el plan primero. Cada plan de ChatGPT incluye una asignación de uso de Codex que se renueva en una ventana móvil. Mientras estés dentro de ella, las solicitudes de Codex no generan cargos adicionales.
  2. Créditos flexibles después de la asignación incluida. Una vez que se agota el uso incluido, el uso de Codex se descuenta del saldo de créditos de tu cuenta cuando el plan lo admite. La entrada, la entrada en caché y la salida se cobran como créditos por cada 1M de tokens, por lo que lo que consume una tarea depende de su combinación de tokens y del modelo utilizado.
  3. Opciones al superar el límite. Cuando se agota la asignación incluida y todos los créditos, las opciones de OpenAI son añadir créditos, mejorar el plan o esperar a que se restablezca el período.

Por lo tanto, los niveles de plan que se muestran a continuación son multiplicadores de la asignación de uso, no una garantía de costo cero por llamada.

Seguimiento de costos de ZeroClaw

ZeroClaw registra esta ranura a $0 por llamada. Esto es una limitación contable local, no un hecho de facturación de OpenAI: ZeroClaw no puede ver el medidor de uso incluido ni el saldo de créditos de tu plan de ChatGPT, por lo que no puede atribuir el coste de tokens por llamada a una solicitud de suscripción. Interpreta el $0 como “no medido por ZeroClaw”, y consulta el estado real de la asignación / créditos en tu cuenta de OpenAI. Mantén separadas las clases de suscripción y de medición (api-key) en la contabilidad; consulta Seguimiento de costes.

ClaseSeñal de presupuesto de ZeroClawFacturación real
Suscripción (slot openai, autenticación de Codex)margen de uso renovable de Codexuso del plan incluido y, posteriormente, créditos flexibles por token
Por uso (proveedores de api-key)ejecutando $ balanceper-token

Así que el enrutamiento consiste en gastar la asignación incluida de forma deliberada y mantener una alternativa para cuando la hayas superado, tanto para evitar el consumo de créditos a las tarifas de tokens por modelo como para sobrevivir a una interrupción total. No es “gratis por token” una vez que estás fuera del uso incluido.

El enrutamiento es por agente (consulta Routing): define un alias de agente por rol, cada uno apuntando a una entrada de Codex openai, y dirige los canales hacia el agente que debe gestionar su tráfico.

RolModelo servido
programación diaria (predeterminado)gpt-5.4
revisión de código / adversarialcodex-auto-review
pesado / razonamiento de fronteragpt-5.5
light / narrow / subagentgpt-5.4-mini

Mantén un mecanismo de respaldo medido para cuando la suscripción no pueda atender la solicitud: cuota agotada (429), actualización de token en backoff (ver más abajo) o una cadena de modelo no disponible. El respaldo es por token, así que debería ser la excepción. Qué proveedores forman parte de ese conjunto de respaldo depende del entorno; configúralo en tu propio enrutamiento, no aquí.

Niveles de suscripción y límites

Niveles de ChatGPT relevantes para este espacio (a fecha de 2026-06). La columna “allowance” es el multiplicador de uso incluido, no un límite de llamadas gratuitas: más allá de la asignación incluida, cada nivel recurre a créditos flexibles por token según las tarifas publicadas de Codex de OpenAI. Un nivel superior aumenta el multiplicador incluido; no hace que el uso sea gratuito.

NivelPrecioAsignación de uso incluido en Codex
Plus$20/meslínea base
Pro$100/mesLímites de Plus 5×
Pro$200/mesLímites de Plus 20×

Ambos planes Pro ofrecen el mismo conjunto de modelos y funciones; solo se diferencian en el volumen de la asignación incluida.

El nivel de $100 se redujo el 2026-06-01. Hasta el 2026-05-31 tuvo una promoción de lanzamiento a 10× Plus, luego volvió al estándar de 5×. Los recuentos de mensajes por modelo registrados antes de esa fecha incluían un aumento temporal de 2× y ya no son precisos.

OpenAI no publica recuentos de mensajes de Codex fijos por nivel, ni asocia el término «ilimitado» a nombres de modelo específicos; la página de precios pública muestra una tarjeta «Pro» («Desde $100», con el titular «5x o 20x más de uso») con la frase genérica «ilimitado, sujeto a medidas de protección contra abusos». Considera no autorizado cualquier recuento específico por modelo procedente de documentación antigua u otras fuentes. El modelo insignia de razonamiento Pro es GPT-5.5 Pro.

Las cifras de ventana de contexto 128K / 400K y ~680 pages de la página de precios describen los modelos GPT Instant / GPT Reasoning de la app ChatGPT, un espacio de nombres distinto del backend responses de Codex que usa este slot. No las interpretes como límites del backend de Codex.

Importación del token

Importa el token existente de Codex-CLI de forma no interactiva en lugar de iniciar un flujo en el navegador:

zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json
zeroclaw auth status   # openai-codex:default kind=OAuth account=... expires=...

(Alternativas interactivas: zeroclaw auth login sin --import, o --device-code.)

Ejecuta el daemon desde el config-dir predeterminado (~/.zeroclaw). El perfil de autenticación se almacena ahí de forma nativa y los comandos zeroclaw auth lo usan por defecto; apuntar el daemon a un directorio personalizado significa que el perfil también debe colocarse ahí y, como está cifrado por config-dir (más abajo), ahí es donde empiezan los problemas.

Dos cosas que pillan por sorpresa

Los perfiles de autenticación no son portables. auth-profiles.json está cifrado (enc2:) con la .secret_key del directorio de configuración. No puedes copiar el perfil de un host a otro, porque el destino no puede descifrarlo; el runtime registra enc2: decryption failed (wrong `.secret_key` or tampered ciphertext) (la cláusula or tampered ciphertext comparte esta ruta de error, por lo que el mensaje por sí solo no distingue un perfil ajeno de un blob corrupto). Cada host importa su propio perfil desde un ~/.codex/auth.json sin procesar. Si ya hay presente un auth-profiles.json ajeno, muévelo a un lado primero o la importación fallará al intentar cargarlo:

mv ~/.zeroclaw/auth-profiles.json ~/.zeroclaw/auth-profiles.json.foreign 2>/dev/null
zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json

Los tokens de actualización rotan, un solo propietario. Cada actualización exitosa invalida el token de actualización anterior. Si dos hosts actualizan la misma cuenta de forma independiente, se invalidan mutuamente:

error=OpenAI token refresh is in backoff for 9s due to previous failures

El patrón que funciona en más de un host, estrictamente limitado a máquinas que poseas bajo la misma cuenta de OpenAI:

⚠️ Límite de credenciales. ~/.codex/auth.json contiene credenciales activas de tipo bearer y refresh para tu cuenta de OpenAI. Distribúyela solo a tus propios hosts, a través de un canal privado y cifrado: un gestor de secretos, un transporte cifrado o un pull exclusivo por SSH. Nunca la subas a un repositorio, la publiques, la pegues en un chat o un ticket, ni la compartas con otro usuario o un equipo. Los términos de OpenAI prohíben compartir credenciales de cuenta o poner una cuenta a disposición de otra persona, y un punto de pull de auth.json sin procesar es por sí mismo un secreto de alto valor. Esta es una guía de manejo de credenciales dirigida al operador; el código en tiempo de ejecución no la modifica.

  1. Un host es el propietario de la actualización (p. ej., el que ejecuta la actualización en segundo plano de la CLI de Codex) y mantiene ~/.codex/auth.json al día.
  2. Ese host publica el archivo ~/.codex/auth.json sin procesar en un punto de extracción privado (gestor de secretos o canal cifrado/solo SSH), accesible únicamente por tus propios hosts.
  3. Cualquier otro host extrae el auth.json sin procesar (portátil, es solo el token) y lo vuelve a importar localmente, lo que lo vuelve a cifrar con la propia .secret_key de ese host.
  4. Otros hosts no se actualizan de forma independiente.

El artefacto que distribuyes es el ~/.codex/auth.json sin procesar, nunca el auth-profiles.json cifrado, y solo a tus propias máquinas a través de un canal privado y cifrado.

Verificando

zeroclaw auth status   # presente y no vencido
# then drive the agent once against the local gateway

Una ejecución correcta devuelve la salida del modelo con exit_code=0. Dos firmas de error:

  • ... token refresh in backoff: token obsoleto o rotado; vuelve a obtener el archivo auth.json sin procesar y reimpórtalo.
  • model=<x> ... 400: cadena de modelo no admitida; usa un ID servido exacto.

Lista de verificación para nuevo host

  1. ~/.codex/auth.json presente y actualizado (obtenido del propietario de la actualización).
  2. zeroclaw auth login --model-provider openai-codex --import ~/.codex/auth.json (primero aparta cualquier auth-profiles.json ajeno).
  3. zeroclaw auth status muestra openai-codex:default ... kind=OAuth ... expires=<future>.
  4. Una entrada openai con wire_api = "responses", requires_openai_auth = true y un ID exacto del modelo servido.
  5. Daemon en --config-dir ~/.zeroclaw (el valor predeterminado).
  6. Ejecuta el agente una vez → exit_code=0 con salida real.
  7. El enrutador asigna roles a los IDs servidos actuales (no fijes una versión que tendrás que perseguir).