> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Codex CLI

> Configurer OpenAI Codex CLI pour utiliser l'API TokenLab

## Aperçu

<Note>
  **Type**: Outil de programmation

  **Chemin principal**: OpenAI Responses (chemin optionnel avancé)

  **Niveau de prise en charge**: Pris en charge avec limitations selon le modèle/chemin
</Note>

OpenAI Codex est un outil en ligne de commande open-source (CLI) qui sert d'agent de codage léger, capable de lire, modifier et exécuter du code dans le terminal. Il est construit sur des modèles GPT et optimisé pour la génération de code.

Pour TokenLab, Codex CLI peut utiliser `/v1/responses`, mais vous devez le considérer comme un chemin de compatibilité avancé. Certaines fonctionnalités spécifiques à Responses ne sont pas garanties sur tous les modèles et chemins routés.

La compaction distante de Codex CLI est prise en charge sur `POST /v1/responses/compact`. Codex envoie le `model` de la session courante dans `body.model` pour `/compact` et l'auto-compactage, donc le modèle utilisé pour compacter doit être disponible sur le chemin Responses. Ne configurez pas `/v1/compact`.

## Configuration requise

* **OS**: macOS, Linux (prise en charge officielle), Windows via WSL
* **Node.js**: Version 18+
* **npm**: Version 10.x.x ou supérieure

## Installation

```bash theme={null}
npm install -g @openai/codex
```

Vérifier l'installation :

```bash theme={null}
codex --version
```

## Configuration

### Étape 1 : Définir la clé API

**Temporaire (session en cours) :**

```bash theme={null}
export OPENAI_API_KEY="sk-your-tokenlab-key"
```

**Configuration permanente :**

Ajouter à `~/.bashrc`, `~/.zshrc` ou `~/.bash_profile` :

```bash theme={null}
export OPENAI_API_KEY="sk-your-tokenlab-key"
```

Puis rechargez :

```bash theme={null}
source ~/.zshrc  # or source ~/.bashrc
```

### Étape 2 : Configurer config.toml

Éditez `~/.codex/config.toml` :

```toml theme={null}
model_provider = "tokenlab"
model = "gpt-5.4"
model_reasoning_effort = "xhigh"
plan_mode_reasoning_effort = "xhigh"
fast_mode = true
model_context_window = 1000000
model_auto_compact_token_limit = 900000
sandbox_mode = "danger-full-access"
approval_policy = "never"

disable_response_storage = false
personality = "friendly"
service_tier = "fast"

[model_providers.tokenlab]
env_key = "OPENAI_API_KEY"
name = "TokenLab"
base_url = "https://api.tokenlab.sh/v1"
wire_api = "responses"
supports_websockets = true
websocket_connect_timeout_ms = 15000

[features]
responses_websockets = true
responses_websockets_v2 = true
```

Ce mode WebSocket est un pont Responses-over-WebSocket pour les clients Codex. Il accepte `response.create` et `response.cancel` ; ce n’est pas l’API OpenAI Realtime et il n’accepte pas `session.update`, `conversation.item.*`, `input_audio_buffer.*`, l’audio binaire ni les enveloppes Realtime imbriquées `response.create.response`.

<Note>
  Si le fichier de configuration n'existe pas, exécutez `codex` une fois pour le générer, puis modifiez le fichier. Redémarrez complètement Codex après avoir modifié `config.toml` afin que les nouveaux paramètres du fournisseur soient rechargés.
</Note>

<Warning>
  Codex déprécie la prise en charge de `chat/completions` pour les fournisseurs personnalisés. Conservez `wire_api = "responses"` pour TokenLab à moins que vous n'utilisiez intentionnellement un ancien chemin de compatibilité.
</Warning>

<Note>
  Si une requête utilise des champs spécifiques à Responses qui ne sont pas pris en charge par le modèle ou le chemin sélectionné, TokenLab retourne une erreur explicite au lieu de rétrograder silencieusement la requête.
</Note>

## Utilisation de base

**Démarrer le mode interactif :**

```bash theme={null}
codex
```

**Commande directe :**

```bash theme={null}
codex "Fix the bug in main.py line 42"
```

**Spécifier le modèle :**

```bash theme={null}
codex -m gpt-5.4 "Build a REST API server"
```

## Modèles recommandés

| Modèle              | Idéal pour                                                                         |
| ------------------- | ---------------------------------------------------------------------------------- |
| `gpt-5.4`           | Choix par défaut optimal pour le codage et le raisonnement                         |
| `gpt-5-mini`        | Solution de repli plus rapide et moins coûteuse pour les flux de travail de codage |
| `claude-sonnet-4-6` | Revue de code, documentation                                                       |
| `deepseek-r1`       | Conception d'algorithmes, raisonnement                                             |

## Commandes interactives

| Commande            | Description                   |
| ------------------- | ----------------------------- |
| `/help`             | Afficher l'aide               |
| `/exit` or `Ctrl+C` | Quitter                       |
| `/clear`            | Effacer la conversation       |
| `/config`           | Voir la configuration         |
| `/model <name>`     | Changer de modèle             |
| `/tokens`           | Voir l'utilisation des tokens |

## Vérifier la configuration

```bash theme={null}
# Check environment variable
echo $OPENAI_API_KEY

# Test API connection
codex "Hello, Codex!"

# View configuration
cat ~/.codex/config.toml
```

## Cas d'utilisation courants

**Revue de code :**

```bash theme={null}
git diff | codex "Review these code changes"
```

**Générer des messages de commit :**

```bash theme={null}
git diff --staged | codex "Generate a commit message for these changes"
```

**Corriger les erreurs :**

```bash theme={null}
codex "Fix the TypeScript errors in src/components/"
```

**Expliquer le code :**

```bash theme={null}
cat main.py | codex "Explain what this code does"
```

## Dépannage

<AccordionGroup>
  <Accordion title="Erreur de connexion">
    * Vérifiez que `base_url` dans config.toml est exactement `https://api.tokenlab.sh/v1`
    * Vérifiez la connectivité réseau
    * Assurez-vous qu'aucun proxy n'interfère
  </Accordion>

  <Accordion title="Échec d'authentification">
    * Vérifiez que `env_key = "OPENAI_API_KEY"` est présent dans `~/.codex/config.toml`
    * Vérifiez que la variable d'environnement `OPENAI_API_KEY` est définie
    * Vérifiez que la clé commence par `sk-`
    * Assurez-vous que la clé est active dans le tableau de bord TokenLab
  </Accordion>

  <Accordion title="Modèle introuvable">
    * Vérifiez que le nom du modèle correspond exactement
    * Vérifiez la disponibilité du modèle sur [tokenlab.sh/en/models](https://tokenlab.sh/fr/models)
  </Accordion>

  <Accordion title="Champ natif Responses rejeté">
    * Certains champs ne sont disponibles que sur `/v1/responses` lorsque TokenLab peut garantir ce comportement pour le modèle et le chemin sélectionnés
    * Si vous voyez `unsupported_request_field`, supprimez ce champ ou passez à un flux de travail qui n'en dépend pas
  </Accordion>

  <Accordion title="/compact ou l'auto-compactage échoue">
    * Codex CLI appelle `POST /v1/responses/compact`, pas `/v1/compact`
    * La requête de compaction utilise le `model` de la session courante, ce modèle doit donc être disponible sur le chemin Responses
    * Conservez `wire_api = "responses"` et `base_url = "https://api.tokenlab.sh/v1"`
  </Accordion>
</AccordionGroup>
