Passer au contenu principal
Codex CLI est l’outil de programmation en terminal officiel d’OpenAI. Après connexion à AIHubMix, une seule clé API suffit pour appeler et changer librement entre les modèles GLM, Claude, Gemini, DeepSeek et d’autres, sans dépendre d’un seul fournisseur. Ce guide couvre deux approches : l’approche de base (profile + un modèle fixe, la plus rapide) et l’approche modèles personnalisés (un fichier catalogue 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

  1. Modifiez le fichier de configuration ~/.codex/config.toml en ajoutant les paramètres suivants :
  1. Modifiez le fichier de configuration ~/.codex/auth.json pour modifier les paramètres suivants :

Configurer via cc-switch

  1. Lancez CC-Switch et ajoutez le fournisseur.
Écran d'ajout de fournisseur dans CC-Switch
  1. Sélectionnez « AiHubMix » dans la liste prédéfinie.
Sélection d'AiHubMix dans la liste de préréglages CC-Switch
  1. Saisissez votre clé dans le champ « API Key » et cliquez sur « Add » pour enregistrer les paramètres.
Saisie de la clé API et enregistrement dans CC-Switch
  1. Revenez à la page d’accueil, sélectionnez « AiHubMix » dans la liste des fournisseurs et cliquez sur « Enable » pour commencer à l’utiliser.
Activation du fournisseur AiHubMix dans CC-Switch

Utilisation de Codex

Utilisation dans le terminal

  1. Ouvrez le terminal, accédez au répertoire de votre projet et exécutez la commande codex.
  1. Définissez les autorisations selon vos besoins.
Définition des autorisations au démarrage de Codex
  1. Sélectionnez le modèle dont vous avez besoin en fonction de vos exigences.
Choix du modèle à utiliser dans Codex
  1. Saisissez du langage naturel ; si vous recevez une réponse normale, la configuration est réussie.
Saisie en langage naturel dans le terminal Codex avec réponse normale

Utilisation dans l’application de bureau Codex

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

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èle glm-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.
Description des champs (ceux que vous modifierez généralement) :
Les autres champs sont obligatoires et leurs valeurs sont fixes : 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. Les versions récentes de Codex (vérifié sur codex-cli 0.130.0) appliquent une analyse stricte : s’il manque ne serait-ce qu’un seul champ, l’intégralité du catalogue est ignorée et Codex revient au catalogue intégré, avec une erreur du type missing field base_instructions, qui se traduit par « aucun modèle personnalisé visible dans /model ». Vous ne pouvez donc plus supprimer de champ de l’exemple ci-dessus.
À 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 les base_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 :
Le script ne remplace que les champs propres à chaque modèle (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 les base_instructions complètes, soit environ 1 à 2 Mo), ce qui est normal. Après l’exécution, vérifiez avec codex debug models qu’il est correctement analysé (voir l’étape 5).
La ligne de filtrage image_generation du script est intentionnellement conservée : parmi les résultats de type=llm, quelques rares modèles portent aussi le label image_generation (par exemple gpt-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.
Si vous souhaitez par la même occasion définir un modèle par défaut et un niveau de raisonnement par défaut (utilisés directement au démarrage, sans sélection manuelle à chaque fois), vous pouvez utiliser cette configuration plus complète :
Une fois configuré, votre 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]) : Config model_catalog_json et fournisseur aihubmix dans config.toml

Étape 3 : définir la variable d’environnement

Configurez la variable d’environnement spécifiée par env_key ci-dessus (attention à ne pas mettre d’espaces de part et d’autre du =) :
Il est recommandé de l’ajouter à ~/.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 :
Après avoir saisi /model, tous les modèles déclarés dans le catalogue s’affichent ; sélectionnez avec les flèches et confirmez avec Entrée : Sélecteur /model de Codex affichant la liste des modèles personnalisés AIHubMix Une fois le modèle sélectionné, /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

  1. 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 exemple glm-5.2).
  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_instructions indique « 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 le model_id de cette requête : c’est cela qui fait foi.
Une fois le changement réussi, un message 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) : Session Codex et barre d'état après passage à glm-5.2

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 :
    1. Exécutez d’abord codex debug models. S’il signale missing field ... (le plus fréquent, champ obligatoire manquant) ou unknown 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.
    2. Vérifiez que model_catalog_json est bien au niveau racine de config.toml, et non dans une section [model_providers.*] ;
    3. Vérifiez que le JSON utilise les champs officiels en snake_case et que visibility vaut list ;
    4. Si codex debug models affiche 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 au model = "..." de config.toml (les journaux AIHubMix le confirment) ; seul son nom ne s’affiche pas. Pour un affichage correct, utilisez la CLI codex / le TUI dans le terminal ; sur l’application de bureau, vous ne pouvez que coder en dur model = "le modèle souhaité" dans config.toml, en attendant un correctif officiel.
  • Le catalogue « remplace », il ne « fusionne » pas. model_catalog_json remplace 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 models n’en montre plus que 2, tous les gpt-5.x inté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_url ou le wire_api du fournisseur n’est pas correctement apparié. Pour AIHubMix, il faut impérativement wire_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 = false dans la section du fournisseur pour forcer l’usage de HTTP.
  • L’analyse signale missing field ... (par exemple missing 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 comme displayName / hidden). Passez au jeu de champs snake_case présenté dans cet article.

Articles de référence


Dernière mise à jour : 2026-06-25