model_catalog_json para cambiar en cualquier momento desde la lista /model).
Instalación
Descarga oficial (versión macOS)
https://openai.com/en/codex/Instalación mediante línea de comandos
Configuración de variables de entorno
Configuración mediante archivos de configuración
- Modifica el archivo de configuración
~/.codex/config.tomlpara añadir los siguientes ajustes:
- Modifica el archivo de configuración
~/.codex/auth.jsonpara cambiar los siguientes ajustes:
Configuración mediante cc-switch
- Ejecuta CC-Switch y añade el proveedor.

- Selecciona “AiHubMix” de la lista predefinida.

- Introduce tu clave en el campo “API Key” y haz clic en “Add” para guardar los ajustes.

- Vuelve a la página de inicio, selecciona “AiHubMix” de la lista de proveedores y haz clic en “Enable” para empezar a usarlo.

Uso de Codex
Uso en la terminal
- Abre la terminal, navega al directorio de tu proyecto y ejecuta el comando
codex.
- Configura los permisos según sea necesario.

- Selecciona el modelo que necesites en función de tus requisitos.

- Introduce lenguaje natural; si recibes una respuesta normal, la configuración es correcta.

Uso en la aplicación de escritorio Codex
- Abre la aplicación de escritorio Codex y selecciona el directorio de trabajo.
- Introduce la tarea en el cuadro de entrada; si recibes una respuesta normal, la configuración es correcta.

Referencias de comandos útiles
Comando de ayuda
Opciones completas del comando
Usar modelos personalizados en Codex
Por defecto, Codex solo muestra los modelos oficiales de OpenAI en la lista/model. Si quieres seleccionar directamente desde la lista cualquier modelo disponible en AIHubMix (GLM, Claude, Gemini, DeepSeek, Kimi, Qwen…), puedes usar el mecanismo de «modelos personalizados» que ofrece el soporte oficial: declara los modelos disponibles mediante un archivo JSON local (model_catalog_json) y, con [model_providers.aihubmix], dirige las solicitudes a AIHubMix.
Documentación oficial: Advanced Configuration · OSS mode / local providers
Dos formas de integración
La sección «Configuración de variables de entorno» anterior describe la forma básica, mientras que esta sección describe la forma con modelos personalizados. Las diferencias son las siguientes; elige según tus necesidades:
El flujo completo consta solo de 4 pasos: generar el archivo de catálogo → editar
config.toml → definir la variable de entorno → reiniciar y seleccionar el modelo.
Paso 1: Generar el archivo de catálogo de modelos
El archivo de catálogo tiene una estructura{ "models": [ ... ] }, donde cada elemento del array describe un modelo seleccionable en /model. A continuación explicaremos los campos con un único modelo fijo y después daremos el script para generar por lotes los 30 modelos principales.
1.1 Primero, entender el formato: un modelo fijo
A continuación se muestra un catálogo mínimo completo verificado como analizable por Codex (que contiene solo el modeloglm-5.2). Basta con guardarlo como ~/.codex/model-catalogs/custom-models.json para usarlo; si quieres más modelos, sigue añadiendo entradas con la misma estructura al array models.
Sobre
base_instructions: es el prompt de sistema de ese modelo. En el ejemplo se usa una sola frase como marcador de posición y el modelo funciona con normalidad; si quieres un rendimiento de codificación lo más parecido posible al Codex nativo, sustitúyelo por las base_instructions completas de cualquier modelo integrado de codex debug models --bundled (eso es justo lo que hace el script por lotes de la siguiente sección).
El catálogo oficial usa campos en snake_case (
display_name, supported_in_api, visibility). Dos tipos de errores hacen que se descarte todo el catálogo y que no aparezcan modelos en /model: la falta de campos obligatorios provoca missing field ...; el uso de formatos antiguos en camelCase como displayName, hidden o de valores no reconocidos provoca unknown variant .... Atente al conjunto de campos de este documento para evitarlo.1.2 Generar por lotes los 30 principales
Escribir varias entradas a mano hace fácil olvidar campos. Para escribir de una sola vez en el catálogo los 30 primeros LLM de la API de la lista de modelos de AIHubMix, usa el siguiente script: clona una plantilla a partir de un modelo integrado, de modo que los campos obligatorios (incluido elbase_instructions correcto) están presentes por naturaleza y nunca faltan entre versiones de Codex. Requiere curl, python3 y la CLI codex ya instalada:
slug, display_name, description, context_window, etc.); todos los demás campos obligatorios se clonan de la plantilla integrada, que es exactamente el mismo conjunto de campos de 1.1, solo que base_instructions usa el prompt oficial completo.
El archivo generado es bastante grande (cada entrada contiene lasbase_instructionscompletas, alrededor de 1 a 2 MB), lo cual es normal. Tras ejecutarlo, usacodex debug modelspara verificar que se analiza correctamente (ver el Paso 5).
La línea del filtroimage_generationdel script se conserva a propósito: en la respuesta detype=llmhay unos pocos modelos que también llevan la etiquetaimage_generation(comogpt-image-2), no aptos para conversación; el script los omite automáticamente antes de tomar los 30 primeros.
Paso 2: Modificar config.toml
Edita ~/.codex/config.toml, añade model_catalog_json a nivel raíz y define el proveedor aihubmix:
wire_api = "responses" es clave: si lo omites o lo pones como chat, no podrás conectarte. Las versiones nuevas de Codex solo usan la Responses API de OpenAI (/v1/responses), y AIHubMix ya es compatible de forma nativa con la Responses API, por lo que basta con apuntar directamente a https://aihubmix.com/v1 sin necesidad de montar un proxy de conversión propio.config.toml se verá aproximadamente así (los recuadros rojos son los elementos clave de este paso: el model / model_provider / model_catalog_json a nivel raíz y la sección [model_providers.aihubmix]):

Paso 3: Definir la variable de entorno
Configura la variable de entorno indicada enenv_key anterior (ten en cuenta que no debe haber espacios a ambos lados del =):
~/.zshrc / ~/.bashrc para persistirla. Obtén tu Key en la consola de AIHubMix.
Paso 4: Reiniciar y seleccionar el modelo
Reinicia la app / TUI de Codex para que surta efecto el archivo de catálogo y, luego:/model, se mostrarán todos los modelos declarados en el catálogo; usa las teclas de dirección para seleccionar y Enter para confirmar:

/model también te permitirá elegir el nivel de razonamiento (effort); selecciona low / medium / high según tus necesidades.
Paso 5: Verificar que funciona
- Tras entrar en Codex, escribe
/model, confirma que ves los modelos declarados en el catálogo y cambia a uno de ellos (por ejemplo,glm-5.2). - Haz una pregunta cualquiera para verificar que el enlace funciona. Atención: no te fíes de «¿qué modelo eres?» para determinarlo: en
base_instructionsfigura «You are Codex… based on GPT-5», por lo que todos los modelos se presentarán como GPT-5 y preguntarlo no te permitirá distinguir el modelo real. Para confirmar qué modelo se llama realmente, inicia sesión en la consola de AIHubMix, ve a la página «Logs» y mira elmodel_idde ese registro de solicitud: esa es la verdad.
Model changed to ..., y la barra de estado inferior también mostrará el modelo actual y la ventana de contexto (en la imagen siguiente se cambió a glm-5.2, con una ventana de 258K):

Preguntas frecuentes sobre modelos personalizados
-
¿No ves los modelos personalizados en
/model? Soluciona el problema en este orden:- Primero ejecuta
codex debug models. Si informa demissing field ...(lo más común, falta un campo obligatorio) ounknown variant ...(nombre/valor de campo incorrecto), significa que todo el catálogo no se pudo analizar y se descartó; vuelve a generarlo con el script «clonar la plantilla integrada» del Paso 1. - Confirma que
model_catalog_jsonestá escrito a nivel raíz deconfig.toml, no dentro de la sección[model_providers.*]; - Confirma que el JSON usa los campos oficiales en snake_case y que
visibilityeslist; - Si
codex debug modelsya muestra todos los modelos, pero en la aplicación de escritorio (Desktop App) solo quedan uno o dos y el modelo actual se muestra como «personalizado», se trata de un bug conocido de la aplicación de escritorio: aplica, por encima del catálogo local, otra capa de filtrado con una lista blanca de slugs oficiales que elimina los modelos no oficiales del selector (ver los GitHub Issue #19694, #15138). En este caso, el modelo en realidad se sigue llamando con normalidad según elmodel = "..."deconfig.toml(puedes confirmarlo en los logs de AIHubMix), solo que el nombre no se muestra. Para que se muestre correctamente, usa la CLI / TUIcodexen el terminal; en la aplicación de escritorio solo puedes fijar directamentemodel = "el modelo que quieras"enconfig.tomly esperar a que lo arreglen oficialmente.
- Primero ejecuta
-
El catálogo «reemplaza», no «fusiona».
model_catalog_jsonreemplaza toda la lista de modelos, en lugar de añadirse a ella (comprobado: si pones solo 2 modelos en el catálogo,codex debug modelssolo deja esos 2 y todos losgpt-5.xintegrados desaparecen). Si quieres ambos tipos, escríbelos todos juntos en el catálogo personalizado. -
La solicitud informa de un error de protocolo / no se conecta. Lo más probable es que el
base_urlo elwire_apidel proveedor no estén bien emparejados. AIHubMix requierewire_api = "responses"+base_url = "https://aihubmix.com/v1". Si te conectas a un tercero que solo admite Chat Completions, necesitarás un proxy de conversión local; los usuarios de AIHubMix no necesitan este paso. -
Reconexiones frecuentes con “Reconnecting”. En algunos entornos de red/proxy, WebSocket (WSS) no funciona; puedes añadir
supports_websockets = falseen la sección del proveedor para forzar el uso de HTTP. -
El análisis informa de
missing field ...(comomissing field base_instructions). A la entrada le falta un campo obligatorio. Las versiones nuevas de Codex analizan de forma estricta:base_instructions,availability_nux,upgrade,supports_reasoning_summaries,support_verbosity,default_verbosity,apply_patch_tool_type,truncation_policy,supports_parallel_tool_calls,experimental_supported_tools, etc., todos deben estar presentes. El script «clonar la plantilla integrada» del Paso 1 puede completarlos todos de una sola vez. -
El análisis informa de
unknown variant. El JSON del catálogo contiene un nombre o valor de campo que Codex no reconoce (común con formatos antiguos en camelCase comodisplayName/hidden). Cambia al conjunto de campos en snake_case de este documento.
Artículos de referencia
- Documentación oficial: Advanced Configuration | Configuration Reference
- Referencia del formato del catálogo oficial integrado: codex-rs/models-manager/models.json
- Guía de la comunidad: Codex config.toml: integra cualquier proveedor personalizado en 6 líneas
Última actualización: 2026-06-25