model_catalog_json pour changer à tout moment depuis la liste /model).
Installation
Téléchargement officiel (version macOS)
https://openai.com/en/codex/Installation via la ligne de commande
Configuration des variables d’environnement
Configurer à l’aide des fichiers de configuration
- Modifiez le fichier de configuration
~/.codex/config.tomlen ajoutant les paramètres suivants :
- Modifiez le fichier de configuration
~/.codex/auth.jsonpour modifier les paramètres suivants :
Configurer via cc-switch
- Lancez CC-Switch et ajoutez le fournisseur.

- Sélectionnez « AiHubMix » dans la liste prédéfinie.

- Saisissez votre clé dans le champ « API Key » et cliquez sur « Add » pour enregistrer les paramètres.

- Revenez à la page d’accueil, sélectionnez « AiHubMix » dans la liste des fournisseurs et cliquez sur « Enable » pour commencer à l’utiliser.

Utilisation de Codex
Utilisation dans le terminal
- Ouvrez le terminal, accédez au répertoire de votre projet et exécutez la commande
codex.
- Définissez les autorisations selon vos besoins.

- Sélectionnez le modèle dont vous avez besoin en fonction de vos exigences.

- Saisissez du langage naturel ; si vous recevez une réponse normale, la configuration est réussie.

Utilisation dans l’application de bureau Codex
- Ouvrez l’application de bureau Codex et sélectionnez le répertoire de travail.
- Saisissez la tâche dans la zone de saisie ; si vous recevez une réponse normale, la configuration est réussie.

Références de commandes utiles
Commande d’aide
Options de commande complètes
Utiliser des modèles personnalisés dans Codex
Par défaut, Codex n’affiche que les modèles officiels d’OpenAI dans la liste/model. Si vous souhaitez sélectionner directement n’importe quel modèle disponible sur AIHubMix (GLM, Claude, Gemini, DeepSeek, Kimi, Qwen, etc.) depuis cette liste, vous pouvez utiliser le mécanisme officiel de « modèles personnalisés » : déclarez les modèles disponibles via un fichier JSON local (model_catalog_json), puis dirigez les requêtes vers AIHubMix à l’aide de [model_providers.aihubmix].
Documentation officielle : Advanced Configuration · OSS mode / local providers
Deux méthodes d’intégration
La section « Configuration des variables d’environnement » plus haut sur cette page décrit la méthode de base, tandis que cette section décrit la méthode des modèles personnalisés. Voici les différences, à choisir selon vos besoins :
Le processus complet ne comporte que 4 étapes : générer le fichier de catalogue → modifier
config.toml → définir la variable d’environnement → redémarrer et choisir le modèle.
Étape 1 : générer le fichier de catalogue de modèles
Le fichier de catalogue est une structure{ "models": [ ... ] } ; chaque élément du tableau décrit un modèle sélectionnable dans /model. Nous expliquons d’abord les champs avec un modèle fixe, puis nous fournissons un script pour générer en masse les 30 premiers modèles.
1.1 Comprendre d’abord le format : un modèle fixe
Voici un catalogue minimal complet dont la prise en charge par Codex a été vérifiée (ne contenant que le modèleglm-5.2). Enregistrez-le simplement sous ~/.codex/model-catalogs/custom-models.json pour l’utiliser ; pour ajouter d’autres modèles, continuez d’ajouter des entrées de même structure au tableau models.
À propos de
base_instructions : il s’agit du prompt système de ce modèle. L’exemple utilise une simple phrase comme valeur de remplacement, et le modèle fonctionne normalement ; pour obtenir un comportement de codage au plus proche du Codex natif, remplacez-la par les base_instructions complètes de l’un des modèles intégrés listés par codex debug models --bundled (c’est exactement ce que fait le script de génération en masse de la section suivante).
Le catalogue officiel utilise des champs en snake_case (
display_name, supported_in_api, visibility). Deux types d’erreurs font ignorer l’intégralité du catalogue, et les modèles n’apparaissent pas dans /model : l’absence d’un champ obligatoire provoque missing field ... ; l’usage d’un ancien format camelCase comme displayName, hidden, ou d’une valeur non reconnue, provoque unknown variant .... Suivez le jeu de champs présenté dans cet article pour éviter ces écueils.1.2 Générer en masse les 30 premiers modèles
Saisir plusieurs entrées à la main expose à des oublis de champs. Pour écrire en une seule fois dans le catalogue les 30 premiers LLM de l’API de liste des modèles AIHubMix, utilisez le script ci-dessous — il clone un modèle intégré comme modèle de référence, si bien que les champs obligatoires (y compris lesbase_instructions correctes) sont par nature complets, quelle que soit la version de Codex. Nécessite curl, python3 et la CLI codex déjà installée :
slug, display_name, description, context_window, etc.) ; tous les autres champs obligatoires sont clonés depuis le modèle intégré — il s’agit précisément du jeu de champs de la section 1.1, à ceci près que base_instructions utilise le prompt officiel complet.
Le fichier généré est volumineux (chaque entrée contient lesbase_instructionscomplètes, soit environ 1 à 2 Mo), ce qui est normal. Après l’exécution, vérifiez aveccodex debug modelsqu’il est correctement analysé (voir l’étape 5).
La ligne de filtrageimage_generationdu script est intentionnellement conservée : parmi les résultats detype=llm, quelques rares modèles portent aussi le labelimage_generation(par exemplegpt-image-2), qui ne conviennent pas au dialogue ; le script les ignore automatiquement avant de prendre les 30 premiers.
Étape 2 : modifier config.toml
Éditez ~/.codex/config.toml, ajoutez model_catalog_json au niveau racine et définissez le fournisseur aihubmix :
wire_api = "responses" est essentiel : l’omettre ou écrire chat empêche toute connexion. Les versions récentes de Codex n’utilisent que l’API Responses d’OpenAI (/v1/responses) ; AIHubMix étant nativement compatible avec l’API Responses, il suffit de pointer directement vers https://aihubmix.com/v1, sans avoir à mettre en place votre propre proxy de conversion.config.toml ressemblera à ceci (les cadres rouges indiquent les éléments clés de cette étape : model / model_provider / model_catalog_json au niveau racine, ainsi que la section [model_providers.aihubmix]) :

Étape 3 : définir la variable d’environnement
Configurez la variable d’environnement spécifiée parenv_key ci-dessus (attention à ne pas mettre d’espaces de part et d’autre du =) :
~/.zshrc / ~/.bashrc pour la rendre persistante. Récupérez votre clé dans la console AIHubMix.
Étape 4 : redémarrer et choisir le modèle
Redémarrez l’application / le TUI Codex pour que le fichier de catalogue prenne effet, puis :/model, tous les modèles déclarés dans le catalogue s’affichent ; sélectionnez avec les flèches et confirmez avec Entrée :

/model vous permet aussi de choisir le niveau de raisonnement (effort) ; choisissez low / medium / high selon vos besoins.
Étape 5 : vérifier la prise en compte
- Une fois dans Codex, saisissez
/model, vérifiez que vous voyez bien les modèles déclarés dans le catalogue et basculez sur l’un d’eux (par exempleglm-5.2). - Posez une question quelconque pour vérifier que la chaîne fonctionne. Attention : ne vous fiez pas à la question « quel modèle es-tu ? » —
base_instructionsindique « You are Codex… based on GPT-5 », si bien que tous les modèles se présenteront comme GPT-5 ; la question ne permet pas de distinguer le modèle réel. Pour confirmer le modèle réellement appelé, connectez-vous à la console AIHubMix, ouvrez la page « Journaux » et consultez lemodel_idde cette requête : c’est cela qui fait foi.
Model changed to ... s’affiche en haut, et la barre d’état en bas indique le modèle courant ainsi que la fenêtre de contexte (sur l’image ci-dessous, le modèle a été basculé sur glm-5.2, avec une fenêtre de 258K) :

Questions fréquentes sur les modèles personnalisés
-
Vous ne voyez pas les modèles personnalisés dans
/model? Vérifiez dans l’ordre suivant :- Exécutez d’abord
codex debug models. S’il signalemissing field ...(le plus fréquent, champ obligatoire manquant) ouunknown variant ...(nom de champ / valeur incorrect), c’est que l’intégralité du catalogue a échoué à l’analyse et a été ignorée — régénérez-le avec le script « cloner le modèle intégré » de l’étape 1. - Vérifiez que
model_catalog_jsonest bien au niveau racine deconfig.toml, et non dans une section[model_providers.*]; - Vérifiez que le JSON utilise les champs officiels en snake_case et que
visibilityvautlist; - Si
codex debug modelsaffiche déjà tous les modèles mais que, dans l’application de bureau (Desktop App), il n’en reste qu’un ou deux et que le modèle courant s’affiche comme « personnalisé », il s’agit d’un bug connu de l’application de bureau : elle superpose, au-dessus du catalogue local, un filtre par liste blanche de slugs officiels, qui supprime du sélecteur les modèles non officiels (voir les GitHub Issues #19694 et #15138). Dans ce cas, le modèle est en réalité toujours appelé conformément aumodel = "..."deconfig.toml(les journaux AIHubMix le confirment) ; seul son nom ne s’affiche pas. Pour un affichage correct, utilisez la CLIcodex/ le TUI dans le terminal ; sur l’application de bureau, vous ne pouvez que coder en durmodel = "le modèle souhaité"dansconfig.toml, en attendant un correctif officiel.
- Exécutez d’abord
-
Le catalogue « remplace », il ne « fusionne » pas.
model_catalog_jsonremplace l’intégralité de la liste de modèles au lieu d’y ajouter des entrées (vérifié : avec seulement 2 modèles dans le catalogue,codex debug modelsn’en montre plus que 2, tous lesgpt-5.xintégrés ayant disparu). Si vous voulez les deux types, écrivez-les ensemble dans votre catalogue personnalisé. -
La requête signale une erreur de protocole / impossible de se connecter. C’est le plus souvent que le
base_urlou lewire_apidu fournisseur n’est pas correctement apparié. Pour AIHubMix, il faut impérativementwire_api = "responses"+base_url = "https://aihubmix.com/v1". Si vous intégrez un tiers ne prenant en charge que Chat Completions, un proxy de conversion local est nécessaire ; les utilisateurs d’AIHubMix n’ont pas besoin de cette étape. -
Reconnexions « Reconnecting » fréquentes. Dans certains environnements réseau / proxy, le WebSocket (WSS) ne passe pas ; vous pouvez ajouter
supports_websockets = falsedans la section du fournisseur pour forcer l’usage de HTTP. -
L’analyse signale
missing field ...(par exemplemissing field base_instructions). Une entrée n’a pas de champ obligatoire. Les versions récentes de Codex appliquent une analyse stricte :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., doivent tous être présents. Le script « cloner le modèle intégré » de l’étape 1 permet de tout compléter en une fois. -
L’analyse signale
unknown variant. Le JSON du catalogue contient un nom de champ ou une valeur que Codex ne reconnaît pas (souvent des anciens formats camelCase commedisplayName/hidden). Passez au jeu de champs snake_case présenté dans cet article.
Articles de référence
- Documentation officielle : Advanced Configuration | Configuration Reference
- Format de référence du catalogue officiel intégré : codex-rs/models-manager/models.json
- Guide communautaire : Codex config.toml : intégrer n’importe quel fournisseur personnalisé en 6 lignes
Dernière mise à jour : 2026-06-25