Skip to main content
Codex CLI ist das offizielle Terminal-Coding-Tool von OpenAI. Nach der Anbindung von AIHubMix genügt ein einziger API-Key, um im Terminal Modelle von GLM, Claude, Gemini, DeepSeek u. a. aufzurufen und frei zu wechseln – ohne Bindung an einen einzigen Anbieter. Dieser Leitfaden behandelt zwei Wege: den Basis-Weg (ein festes Modell, am schnellsten) und den Weg mit benutzerdefinierten Modellen (eine model_catalog_json-Katalogdatei, um jederzeit aus der /model-Liste zu wechseln).

Installation

Offizieller Download (macOS-Version)

https://openai.com/en/codex/

Installation per Kommandozeile

Basiskonfiguration

Konfiguration über Konfigurationsdateien

  1. Bearbeiten Sie die Konfigurationsdatei ~/.codex/config.toml und fügen Sie die folgenden Einstellungen hinzu:
  1. Setzen Sie die mit env_key angegebene Umgebungsvariable auf Ihren AIHubMix-API-Key (achten Sie darauf, dass um das = herum keine Leerzeichen stehen):
Es empfiehlt sich, sie zur Persistenz in ~/.zshrc / ~/.bashrc einzutragen. Den Key erhalten Sie in der AIHubMix-Konsole.
Ein benutzerdefinierter Provider liest standardmäßig nicht den OPENAI_API_KEY aus ~/.codex/auth.json. Übergeben Sie den Key über die mit env_key angegebene Umgebungsvariable – andernfalls werden die Anfragen ohne Key gesendet und mit 401 abgewiesen.
Seit Codex 0.134.0 werden profile = "..." und [profiles.xxx] nicht mehr unterstützt. Alte Konfigurationen brechen beim Start mit legacy profile = "..." config is no longer supported ab. Wenn Sie einer früheren Version dieses Leitfadens gefolgt sind, löschen Sie beide Teile und verwenden Sie die Konfiguration oben. Wenn Sie mehrere Konfigurationen benötigen, legen Sie die abweichenden Einstellungen in ~/.codex/<name>.config.toml ab (als Schlüssel auf Wurzelebene, nicht unter [profiles.xxx]) und starten Sie Codex mit codex --profile <name>.
Sie können model in jede andere Modell-ID auf AIHubMix ändern. Bei Nicht-OpenAI-Modellen wie GLM oder Claude meldet Codex Model metadata for ... not found und fällt auf Standardeinstellungen zurück; nutzen Sie in diesem Fall den unten beschriebenen Weg über benutzerdefinierte Modelle.

Konfiguration via cc-switch

  1. Starten Sie CC-Switch und fügen Sie den Anbieter hinzu.
CC-Switch: Anbieter hinzufügen
  1. Wählen Sie aus der Voreinstellungsliste „AiHubMix”.
AiHubMix in der CC-Switch-Voreinstellungsliste auswählen
  1. Geben Sie Ihren Key in das Feld „API Key” ein und klicken Sie auf „Add”, um die Einstellungen zu speichern.
API-Key in CC-Switch eingeben und speichern
  1. Kehren Sie zur Startseite zurück, wählen Sie „AiHubMix” aus der Anbieterliste und klicken Sie auf „Enable”, um es zu verwenden.
AiHubMix-Anbieter in CC-Switch aktivieren

Codex verwenden

Verwendung im Terminal

  1. Öffnen Sie das Terminal, navigieren Sie in Ihr Projektverzeichnis und führen Sie den Befehl codex aus.
  1. Legen Sie die Berechtigungen nach Bedarf fest; mit /permissions können Sie sie jederzeit ändern.
  2. Wählen Sie das benötigte Modell. Die Statusleiste unten zeigt das aktuelle Modell; mit /model wechseln Sie es.
Codex-Startbildschirm mit dem aktuellen Modell in der Statusleiste
  1. Geben Sie natürliche Sprache ein; wenn Sie eine normale Antwort erhalten, war die Konfiguration erfolgreich.
Eingabe in natürlicher Sprache im Codex-Terminal mit normaler Antwort

Verwendung in der Codex-Desktop-App

  1. Öffnen Sie die Codex-Desktop-App und wählen Sie das Arbeitsverzeichnis.
  2. Geben Sie die Aufgabe in das Eingabefeld ein; wenn Sie eine normale Antwort erhalten, war die Konfiguration erfolgreich.
Aufgabe in Codex Desktop eingeben mit normaler Antwort

Nützliche Befehlsreferenzen

Die vollständige Liste zeigt codex --help. Die gängigsten Befehle und Optionen:

Benutzerdefinierte Modelle in Codex verwenden

Standardmäßig zeigt Codex in der /model-Liste nur die offiziellen OpenAI-Modelle an. Wenn Sie direkt aus der Liste ein beliebiges Modell auf AIHubMix auswählen möchten (GLM, Claude, Gemini, DeepSeek, Kimi, Qwen …), können Sie den offiziell unterstützten Mechanismus für „benutzerdefinierte Modelle” nutzen: Sie deklarieren die auswählbaren Modelle über eine lokale JSON-Datei (model_catalog_json) und leiten die Anfragen mit [model_providers.aihubmix] an AIHubMix weiter.
Offizielle Dokumentation: Advanced Configuration · Custom model providers

Zwei Anbindungswege

Der Abschnitt „Basiskonfiguration” weiter oben beschreibt den grundlegenden Weg, dieser Abschnitt beschreibt den Weg über benutzerdefinierte Modelle. Die Unterschiede sind wie folgt – wählen Sie nach Bedarf: Der gesamte Ablauf besteht aus nur 4 Schritten: Katalogdatei erzeugen → config.toml anpassen → Umgebungsvariable setzen → neu starten und Modell auswählen.

Schritt 1: Modellkatalog-Datei erzeugen

Die Katalogdatei hat die Struktur { "models": [ ... ] }, wobei jedes Element im Array ein Modell beschreibt, das in /model ausgewählt werden kann. Im Folgenden erklären wir zunächst die Felder anhand eines festen Modells und geben anschließend ein Skript zum Batch-Generieren der Top 30.

1.1 Zuerst das Format verstehen: ein festes Modell

Im Folgenden sehen Sie einen nachweislich von Codex parsbaren minimalen vollständigen Katalog (enthält nur das eine Modell glm-5.2). Speichern Sie ihn einfach als ~/.codex/model-catalogs/custom-models.json, dann ist er einsatzbereit; für weitere Modelle hängen Sie einfach weitere Einträge mit derselben Struktur an das models-Array an.
Felderläuterung (die Felder, die Sie üblicherweise ändern):
Die übrigen Felder sind verpflichtend und haben feste Werte: 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. Neuere Codex-Versionen (codex-cli 0.130.0 und neuer, erneut geprüft mit 0.162.1) parsen streng – fehlt auch nur eines davon, wird der gesamte Katalog verworfen und auf den integrierten Katalog zurückgefallen, mit einer Fehlermeldung in der Art missing field base_instructions; das äußert sich darin, dass „in /model kein einziges benutzerdefiniertes Modell zu sehen ist”. Aus diesem Beispiel dürfen daher keine weiteren Felder entfernt werden.
Zu base_instructions: Dies ist der System-Prompt des jeweiligen Modells. Im Beispiel steht ein Platzhaltersatz, mit dem das Modell normal läuft; wenn Sie ein Codierverhalten möglichst nah am nativen Codex möchten, ersetzen Sie ihn durch die vollständigen base_instructions eines beliebigen integrierten Modells aus codex debug models --bundled (genau das macht das Batch-Skript im nächsten Abschnitt).
Der offizielle Katalog verwendet snake_case-Felder (display_name, supported_in_api, visibility). Zwei Fehlerarten führen dazu, dass der gesamte Katalog verworfen wird und in /model keine Modelle erscheinen: fehlende Pflichtfelder melden missing field ...; veraltete camelCase-Formate wie displayName, hidden oder unbekannte Werte melden unknown variant .... Halten Sie sich einfach an den Feldsatz in diesem Artikel, um beides zu vermeiden.

1.2 Top 30 im Batch generieren

Mehrere Einträge von Hand zu schreiben, führt leicht zu fehlenden Feldern. Um die ersten 30 LLMs aus der AIHubMix-Modelllisten-API auf einen Schlag in den Katalog zu schreiben, verwenden Sie das folgende Skript – es klont ein integriertes Modell als Vorlage, sodass die Pflichtfelder (einschließlich der korrekten base_instructions) von Haus aus vollständig sind und über alle Codex-Versionen hinweg nicht fehlen. Benötigt werden curl, python3 und die installierte codex-CLI:
Das Skript überschreibt nur die je Modell spezifischen Felder (slug, display_name, description, context_window usw.) und beschränkt die Reasoning-Stufen auf low / medium / high; alle übrigen Pflichtfelder werden aus der integrierten Vorlage geklont – genau der Feldsatz aus Abschnitt 1.1, nur dass base_instructions der vollständige offizielle Prompt ist.
Die erzeugte Datei ist relativ groß (jeder Eintrag enthält die vollständigen base_instructions, etwa 1–2 MB), das ist normal. Prüfen Sie nach dem Ausführen mit codex debug models, ob sie korrekt geparst wird (siehe Schritt 5).
Die Zeile mit dem image_generation-Filter im Skript ist bewusst beibehalten: In der Antwort von type=llm tragen einige wenige Modelle gleichzeitig das image_generation-Label (z. B. gemini-3.1-flash-image), die nicht für Dialoge geeignet sind; das Skript überspringt diese automatisch und nimmt dann die ersten 30.

Schritt 2: config.toml anpassen

Bearbeiten Sie ~/.codex/config.toml, fügen Sie auf Wurzelebene model_catalog_json hinzu und definieren Sie den aihubmix-Provider:
wire_api unterstützt nur noch responses (das ist auch der Standardwert, wenn es fehlt); chat wird nicht mehr unterstützt. Codex nutzt ausschließlich OpenAIs Responses API (/v1/responses), und AIHubMix ist nativ mit der Responses API kompatibel – daher genügt es, direkt auf https://aihubmix.com/v1 zu verweisen, ohne einen eigenen Konvertierungs-Proxy aufzusetzen.
Wenn Sie zugleich ein Standardmodell und eine Standard-Reasoning-Stufe festlegen möchten (direkt beim Start aktiv, ohne jedes Mal manuell auszuwählen), können Sie diese vollständigere Konfiguration verwenden:
model muss ein Modell sein, das in Ihrem Katalog vorhanden ist. Haben Sie den Katalog aus 1.1 von Hand geschrieben, tragen Sie glm-5.2 ein. Haben Sie das Skript aus 1.2 verwendet, enthält der Katalog die aktuellen Top 30 der API, und diese Liste ändert sich. Führen Sie daher zuerst codex debug models | grep -o '"slug":"[^"]*"' aus und wählen Sie ein Modell aus der Ausgabe (diese Anleitung verwendet claude-opus-5-5). Nach der Konfiguration sieht config.toml ungefähr so aus (die roten Rahmen markieren die Kernpunkte dieses Schritts: die model / model_provider / model_catalog_json auf Wurzelebene sowie den Abschnitt [model_providers.aihubmix]): model_catalog_json und aihubmix-Provider-Konfiguration in config.toml

Schritt 3: Umgebungsvariable setzen

Setzen Sie die oben mit env_key angegebene Umgebungsvariable (achten Sie darauf, dass um das = herum keine Leerzeichen stehen):
Es empfiehlt sich, sie zur Persistenz in ~/.zshrc / ~/.bashrc einzutragen. Den Key erhalten Sie in der AIHubMix-Konsole.

Schritt 4: Neu starten und Modell auswählen

Starten Sie die Codex-App / das TUI neu, damit die Katalogdatei wirksam wird, dann:
Nach Eingabe von /model werden alle in der Katalogdatei deklarierten Modelle aufgelistet; mit den Pfeiltasten auswählen und mit Enter bestätigen: Codex /model-Auswahl mit der AIHubMix-Liste benutzerdefinierter Modelle Nach Auswahl eines Modells lässt /model Sie zusätzlich die Reasoning-Stufe (Effort) wählen; wählen Sie je nach Bedarf low / medium / high. Reasoning-Stufe für claude-opus-5-5 auswählen

Schritt 5: Überprüfen, ob es wirkt

  1. Geben Sie nach dem Start von Codex /model ein, vergewissern Sie sich, dass die in der Katalogdatei deklarierten Modelle sichtbar sind, und wechseln Sie zu einem davon (z. B. claude-opus-5-5).
  2. Stellen Sie eine beliebige Frage, um die Verbindung zu prüfen. Beachten Sie: Verlassen Sie sich nicht auf „Welches Modell bist du?” – in base_instructions steht „You are Codex… based on GPT-5”, sodass sich alle Modelle entsprechend als GPT-5 ausgeben; die Frage gibt also keinen Aufschluss über das tatsächliche Modell. Um das wirklich aufgerufene Modell zu bestätigen, melden Sie sich in der AIHubMix-Konsole an und sehen Sie auf der Seite „Logs” die model_id dieses Anfrageeintrags – das ist die Wahrheit.
Nach erfolgreichem Wechsel erscheint oben der Hinweis Model changed to ..., und die Statusleiste unten zeigt ebenfalls das aktuelle Modell und das Kontextfenster an (im Bild unten wurde zu claude-opus-5-5 gewechselt, Fenster 950K): Codex-Sitzung und Statusleiste nach Wechsel zu claude-opus-5-5

Häufige Fragen zu benutzerdefinierten Modellen

  • Der Start bricht mit legacy profile = "..." config is no longer supported ab. Seit Codex 0.134.0 werden profile = und [profiles.xxx] nicht mehr unterstützt. Löschen Sie beide Teile und schreiben Sie die Konfiguration wie im Abschnitt „Basiskonfiguration” oben neu.
  • Katalog mit dem alten Skript erzeugt. Das alte Skript hat den Code-Modus der integrierten Vorlage nicht abgeschaltet. Nach Codex-Updates ist das erste integrierte Modell nun eines der gpt-6-Serie: Der so erzeugte Katalog wird zwar weiterhin geparst, die Anfragen enthalten aber keine Standard-Tool-Liste. Erzeugen Sie den Katalog mit dem neuen Skript aus Schritt 1 neu.
  • In /model sind die benutzerdefinierten Modelle nicht zu sehen? Gehen Sie der Reihe nach vor:
    1. Führen Sie zuerst codex debug models aus. Meldet es missing field ... (am häufigsten, fehlendes Pflichtfeld) oder unknown variant ... (falscher Feldname / Wert), ist der gesamte Katalog beim Parsen fehlgeschlagen und wurde verworfen – erzeugen Sie ihn mit dem Skript „integrierte Vorlage klonen” aus Schritt 1 einfach neu.
    2. Vergewissern Sie sich, dass model_catalog_json in config.toml auf Wurzelebene steht und nicht in einem [model_providers.*]-Abschnitt;
    3. Vergewissern Sie sich, dass das JSON die offiziellen snake_case-Felder verwendet und visibility auf list steht;
    4. Wenn codex debug models bereits alle Modelle anzeigt, in der Desktop-App aber nur ein oder zwei übrig bleiben und das aktuelle Modell als „benutzerdefiniert” erscheint – das ist ein bekannter Bug der Desktop-App: Sie legt über den lokalen Katalog hinaus noch eine Whitelist-Filterung auf offizielle Slugs und entfernt nicht-offizielle Modelle aus dem Auswahlmenü (siehe GitHub Issue #19694, #15138). Das Modell wird dabei tatsächlich weiterhin gemäß dem model = "..." in config.toml korrekt aufgerufen (in den AIHubMix-Logs nachweisbar), nur der Name wird nicht angezeigt. Für die korrekte Anzeige verwenden Sie die Terminal-codex-CLI / das TUI; in der Desktop-App können Sie nur direkt in config.toml ein festes model = "Ihr gewünschtes Modell" eintragen, bis es offiziell behoben ist.
  • Der Katalog „ersetzt”, nicht „ergänzt”. model_catalog_json ersetzt die gesamte Modellliste, statt anzuhängen (in der Praxis getestet: stehen im Katalog nur 2 Modelle, zeigt codex debug models auch nur diese 2 – die integrierten gpt-5.x verschwinden alle). Wenn Sie beides möchten, schreiben Sie sie zusammen in den benutzerdefinierten Katalog.
  • Anfrage meldet Protokollfehler / keine Verbindung. Meist ist base_url oder wire_api des Providers falsch konfiguriert. Für AIHubMix muss es wire_api = "responses" + base_url = "https://aihubmix.com/v1" sein. Wenn Sie einen Drittanbieter anbinden, der nur Chat Completions unterstützt, benötigen Sie einen lokalen Konvertierungs-Proxy; AIHubMix-Nutzer brauchen diesen Schritt nicht.
  • Dauerhaftes „Reconnecting”, danach ein Fehler. Prüfen Sie zuerst die letzte Fehlerzeile. 401 Unauthorized bedeutet, dass die Anfrage ohne Key gesendet wurde: Vergewissern Sie sich, dass im Provider-Abschnitt env_key gesetzt ist und die Variable in dem Terminal gesetzt ist, aus dem Sie Codex starten (öffnen Sie ein neues Terminal oder führen Sie source ~/.zshrc aus). Ein Key, der nur in auth.json steht, wird von benutzerdefinierten Providern nicht verwendet.
  • Parsing meldet missing field ... (z. B. missing field base_instructions). Dem Eintrag fehlt ein Pflichtfeld. Neuere Codex-Versionen parsen streng; 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 usw. müssen alle vorhanden sein. Mit dem Skript „integrierte Vorlage klonen” aus Schritt 1 lässt sich das auf einen Schlag ergänzen.
  • Parsing meldet unknown variant. Im Katalog-JSON gibt es einen Feldnamen oder Wert, den Codex nicht kennt (häufig veraltete camelCase-Formate wie displayName / hidden). Wechseln Sie einfach zum snake_case-Feldsatz aus diesem Artikel.

Referenzartikel


Zuletzt aktualisiert: 2026-10-15