Externe Modelle mit Codex verbinden
Lokale Codex-Clients sind nicht auf von OpenAI gehostete Modelle beschränkt. Mit CC Switch oder einem benutzerdefinierten Codex-model provider können Sie Codex mit einem Drittanbieter für Modelle, einem API-Aggregationsdienst oder einem internen Unternehmens-Gateway verbinden.
Dieser Leitfaden behandelt zwei Integrationswege für gehostete Drittanbietermodelle:
| Integrationsweg | Am besten geeignet für / Protokollkonvertierung |
|---|---|
| CC Switch | Anbieter, die Chat Completions oder Anthropic Messages bereitstellen, oder Benutzer, die über eine grafische Oberfläche zwischen Anbietern wechseln möchten Protokollkonvertierung: CC Switch übernimmt die Konvertierung entsprechend dem Upstream-Protokoll |
Benutzerdefinierter model provider |
Dienste, die die OpenAI Responses API nativ und vollständig implementieren Protokollkonvertierung: Nicht erforderlich |
Zunächst müssen Sie eine wichtige Einschränkung kennen:
Dieser Leitfaden gilt für lokal ausgeführte Codex-Clients, einschließlich Codex CLI, der Codex IDE-Erweiterung und Desktop-Clients, die dieselbe config.toml lesen. In Codex-Cloud-Chats kann derzeit über diese Konfiguration nicht zu einem benutzerdefinierten Modell gewechselt werden.
Vorbereitungen
Codex CLI installieren oder aktualisieren
npm install -g @openai/codex@latest
codex --versionFühren Sie Codex nach der Erstinstallation mindestens einmal aus:
codexDadurch wird das Benutzerkonfigurationsverzeichnis initialisiert.
Speicherorte der Codex-Konfigurationsdatei
macOS und Linux:
~/.codex/config.tomlWindows:
%USERPROFILE%\.codex\config.tomlSichern Sie die Datei, bevor Sie Änderungen vornehmen.
macOS / Linux:
mkdir -p ~/.codex/backup
cp ~/.codex/config.toml \
~/.codex/backup/config.toml.$(date +%Y%m%d-%H%M%S) \
2>/dev/null || truePowerShell:
$codexDir = Join-Path $HOME ".codex"
$backupDir = Join-Path $codexDir "backup"
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null
$configFile = Join-Path $codexDir "config.toml"
if (Test-Path $configFile) {
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
Copy-Item $configFile (Join-Path $backupDir "config.toml.$timestamp")
}Anbieter, MCP und Modell-Gateways sind nicht dasselbe
Diese Konzepte lösen unterschiedliche Probleme:
model_providerbestimmt, wohin Codex Modellanfragen sendet;- MCP fügt Werkzeuge und Kontext wie GitHub, Browser oder Datenbanken hinzu;
- ein Modell-Gateway übernimmt zwischen Codex und einem Upstream-Modell die Protokollkonvertierung, Authentifizierung, Weiterleitung, Protokollierung oder Ratenbegrenzung.
Konfigurieren Sie zum Wechseln des zugrunde liegenden Modells einen Anbieter und nicht MCP.
API keys schützen
Übertragen Sie keine echten API keys in ein Git-Repository und legen Sie vollständige Schlüssel nicht in Screenshots, Protokollen oder Support-Tickets offen.
Bevorzugen Sie bei manuell konfigurierten Anbietern Umgebungsvariablen:
[model_providers.example]
env_key = "EXAMPLE_API_KEY"CC Switch speichert die Anbieterkonfiguration lokal und ändert beim Anbieterwechsel die lokale Codex-Konfiguration. Es handelt sich um ein Open-Source-Werkzeug eines Drittanbieters und nicht um ein OpenAI-Produkt. Installieren Sie es ausschließlich über die offizielle CC Switch-Website oder das GitHub-Repository und schützen Sie seine lokale Datenbank, Konfiguration und Sicherungen.
1. Drittanbietermodelle mit CC Switch verbinden
CC Switch ist für die meisten Drittanbietermodelle die einfachere Option. Es verwaltet Anbieter, API keys, Modelllisten und lokales Routing und kann inkompatible Upstream-Protokolle übersetzen.
1.1 Welche Probleme CC Switch löst
Moderne Codex-Clients senden Anfragen der Responses API, während viele Drittanbieterdienste eine der folgenden Schnittstellen bereitstellen:
- OpenAI Chat Completions;
- Anthropic Messages;
- Modell-IDs, die Codex standardmäßig nicht aufführt;
- anbieterspezifische Reasoning-Parameter oder Formate für Streaming-Ereignisse.
CC Switch kann den Anfragepfad wie folgt übersetzen:
Codex
│ Responses API
▼
CC Switch local route
│ Converts the protocol and model name when required
▼
Third-party model API
│
▼
CC Switch converts JSON, SSE, reasoning data, and tool calls back to Responses
│
▼
CodexEin Anbieter mit nativer Responses-Unterstützung benötigt keine Chat-Protokollkonvertierung. Ein Anbieter für Chat Completions oder Anthropic Messages erfordert lokales Routing.
1.2 CC Switch installieren
Verwenden Sie ausschließlich die offiziellen Vertriebskanäle:
Unter macOS wird Homebrew empfohlen:
brew install --cask cc-switchSo führen Sie ein Update durch:
brew upgrade --cask cc-switchLaden Sie unter Windows das .msi-Installationsprogramm oder das portable Archiv aus den Releases herunter.
Laden Sie unter Linux das .deb-, .rpm- oder AppImage-Paket aus den Releases herunter. Bezeichnungen können sich zwischen Versionen geringfügig ändern. Verwenden Sie daher das neueste stabile Release und betrachten Sie die in der Anwendung angezeigten Optionen als maßgeblich.
1.3 Voraussetzungen
Bereiten Sie Folgendes vor:
- Codex ist installiert und wurde mindestens einmal gestartet;
- CC Switch ist installiert und startet ordnungsgemäß;
- Sie besitzen einen API key für den gewünschten Modelldienst;
- Sie haben Base URL, Modell-ID und Upstream-Protokoll in der Anbieterdokumentation überprüft;
- wenn Sie offizielle Codex-Kontofunktionen benötigen, führen Sie zunächst eine offizielle Anmeldung durch.
Prüfen Sie den aktuellen Codex-Anmeldestatus:
codex login statusMelden Sie sich bei Bedarf an:
codex loginDie Anmeldung per Gerätecode ist ebenfalls verfügbar:
codex login --device-auth1.4 Optional: Offizielle Anmeldung bei Verwendung eines Drittanbieters beibehalten
Dies ist vor allem nützlich, wenn Sie Desktop-Funktionen, offizielle Plugins oder Fernsteuerungsfunktionen beibehalten möchten, während Modellanfragen an einen Drittanbieter gesendet werden. Benutzer, die ausschließlich die CLI verwenden und nicht auf offizielle Kontofunktionen angewiesen sind, können diesen Schritt überspringen.
Empfohlene Reihenfolge:
- wählen Sie im Codex-Bereich von CC Switch OpenAI Official aus;
- starten Sie Codex und melden Sie sich mit einem offiziellen Konto an;
- öffnen Sie in CC Switch Settings → General → Codex App Enhancements;
- aktivieren Sie Keep official login when switching third-party providers;
- fügen Sie den Drittanbieter hinzu oder wechseln Sie zu ihm.
Wenn diese Option aktiviert ist, versucht CC Switch, Folgendes beizubehalten:
~/.codex/auth.jsonfür den offiziellen Anmeldestatus;~/.codex/config.tomlfür den aktiven Drittanbieter sowie dessen Modell-, Endpunkt- und Authentifizierungskonfiguration.
auth.json enthält vertrauliche Anmeldedaten. Geben Sie die Datei nicht weiter und übertragen Sie sie nicht in die Versionsverwaltung.
1.5 Einen Drittanbieter hinzufügen
Öffnen Sie CC Switch, wechseln Sie zum übergeordneten Bereich Codex und klicken Sie oben rechts auf die Schaltfläche zum Hinzufügen.
Integrierte Voreinstellung bevorzugen
Wenn eine Voreinstellung vorhanden ist, verwenden Sie diese und geben Sie nur den API key sowie alle erforderlichen kontospezifischen Werte ein. Eine Voreinstellung konfiguriert normalerweise:
- die Base URL;
- das Standardmodell;
- das Upstream-Protokoll;
- ob lokales Routing erforderlich ist;
- Modellzuordnungen;
- ausgewählte Reasoning-Parameter.
Die Liste der Voreinstellungen ändert sich mit der Weiterentwicklung von CC Switch. Langlebige Dokumentation sollte die aktuelle Modell-ID eines Anbieters nicht fest vorgeben. Verwenden Sie die Liste in der Anwendung und die offizielle Dokumentation des Anbieters.
Benutzerdefinierten Anbieter erstellen
Wenn keine Voreinstellung verfügbar ist, wählen Sie eine benutzerdefinierte Konfiguration und geben Sie Folgendes an:
| Feld | Beschreibung |
|---|---|
| Provider Name | Ein lokaler Anzeigename |
| API Key | Der Schlüssel des Drittanbieterdienstes |
| Base URL | Der vom Anbieter dokumentierte API-Stammpfad |
| Model ID | Die genaue Upstream-Modellkennung |
| Upstream Format | Das vom Upstream-Dienst tatsächlich bereitgestellte Protokoll |
| Model Mapping | Die von Codex angezeigten und verwendeten Modelle |
Die wichtigste Einstellung ist Upstream Format:
| Upstream-Format | Verwenden, wenn | Lokales Routing |
|---|---|---|
| Responses (native) | Der Upstream implementiert Responses nativ | Normalerweise ist keine Protokollkonvertierung erforderlich |
| Chat Completions (routing required) | Der Upstream stellt /chat/completions bereit |
Erforderlich |
| Anthropic Messages (routing required) | Der Upstream stellt das Anthropic Messages-Protokoll bereit | Erforderlich |
Wählen Sie Responses nicht allein deshalb aus, weil ein Anbieter mit „OpenAI-Kompatibilität“ wirbt. Viele OpenAI-kompatible APIs implementieren nur Chat Completions.
1.6 Base URL korrekt eingeben
Standardmäßig hängt CC Switch den passenden API-Pfad an die Base URL an. Geben Sie in den meisten Fällen den API-Stammpfad aus der Anbieterdokumentation ein, anstatt /chat/completions oder /responses selbst zu wiederholen.
Wenn der Anbieter beispielsweise Folgendes dokumentiert:
POST https://api.example.com/v1/chat/completionsmüssen Sie möglicherweise Folgendes eingeben:
https://api.example.comoder, abhängig von der Voreinstellung und der Anbieterdokumentation:
https://api.example.com/v1Ob /v1 zur Base URL gehört, hängt vom Anbieter und von der CC Switch-Voreinstellung ab. Verwenden Sie die integrierte Verbindungsprüfung oder die Routing-Protokolle, um die endgültige Anfrage-URL zu bestätigen.
Verwenden Sie Full URL Mode nur, wenn der Anbieter einen nicht standardmäßigen vollständigen Endpunktpfad erfordert.
1.7 Needs Local Routing und Modellzuordnung konfigurieren
Aktivieren Sie Needs Local Routing, wenn der Anbieter Chat Completions oder Anthropic Messages verwendet oder Modellnamen nutzt, die Codex standardmäßig nicht erkennt.
Chat-orientierte Voreinstellungen aktivieren diese Option normalerweise automatisch. Überprüfen Sie sie bei benutzerdefinierten Anbietern.
Nach der Aktivierung wird eine Tabelle für Modellzuordnungen verfügbar. Zu den üblichen Feldern gehören:
| Feld | Beschreibung |
|---|---|
| Model ID | Der genaue Modellname, den die Upstream-API akzeptiert |
| Display Name | Optionaler Name, der im Codex-Menü /model angezeigt wird |
| Context Window | Optional die tatsächliche Kontextlänge des Modells |
Wichtige Punkte:
- verwenden Sie die genaue Modell-ID aus der Anbieterdokumentation;
- raten Sie nicht die Größe des Kontextfensters;
- starten Sie Codex nach Änderungen an der Modellliste neu;
- CC Switch erzeugt den Codex-Modellkatalog aus diesen Zuordnungen;
- wenn ein Relay die Domain oder den Modellnamen ändert, kann die automatische Erkennung der Reasoning-Fähigkeiten falsch sein und sollte in den erweiterten Einstellungen überprüft werden.
1.8 Lokales Routing und Codex-Übernahme aktivieren
Öffnen Sie in CC Switch:
Settings → Routing → Local RoutingGehen Sie anschließend wie folgt vor:
- aktivieren Sie den Hauptschalter für lokales Routing;
- aktivieren Sie Codex unter Routing Enabled;
- überprüfen Sie die Einstellung Needs Local Routing des Anbieters;
- lassen Sie CC Switch geöffnet, solange der Anbieter verwendet wird.
Die standardmäßige lokale Route lautet üblicherweise:
http://127.0.0.1:15721Nach der Übernahme verweist die aktive Codex-Konfiguration auf die lokale Route von CC Switch. CC Switch leitet Anfragen anschließend an den derzeit ausgewählten Upstream-Anbieter weiter.
Bei einem Chat Completions-Upstream sieht der Ablauf normalerweise so aus:
Codex POST /responses
→ CC Switch converts it to POST /chat/completions
→ the provider returns JSON or SSE
→ CC Switch rebuilds Responses JSON or SSE
→ Codex continues the tool-call loop1.9 Anbieter wechseln und Codex neu starten
Kehren Sie zur Liste der Codex-Anbieter in CC Switch zurück, wählen Sie den konfigurierten Anbieter aus und aktivieren Sie ihn.
Starten Sie Codex nach dem Wechsel vollständig neu, denn:
- Codex liest
config.tomlbeim Start; - das Menü
/modellädt seinen Katalog normalerweise beim Start; - die IDE-Erweiterung oder der Desktop-Client speichert möglicherweise den vorherigen Anbieter zwischen;
- bestehende Sitzungen können alte Modellmetadaten beibehalten.
CLI-Benutzer können einfach einen neuen Prozess starten:
codex1.10 Integration überprüfen
Führen Sie in Codex Folgendes aus:
/statusÜberprüfen Sie das aktive Modell, den Anbieter, die Berechtigungen und die Kontextinformationen.
Öffnen Sie die Modellauswahl:
/modelÜberprüfen Sie die Konfigurationsebenen:
/debug-configPrüfen Sie außerdem:
- den aktiven Codex-Anbieter in CC Switch;
- die Protokolle oder Statistiken des lokalen Routings von CC Switch;
- den Anfrageverlauf und Änderungen des Guthabens im Anbieter-Dashboard;
- ob
~/.codex/config.tomlderzeit auf die lokale Route verweist.
Validieren Sie die Einrichtung nicht nur mit einer einfachen Begrüßung. Führen Sie mindestens einen Test der Agentenfähigkeiten durch:
- bitten Sie Codex, die Dateien im aktuellen Projekt aufzulisten;
- bitten Sie Codex, eine Datei zu lesen und zusammenzufassen;
- bitten Sie Codex, eine kleine Datei zu ändern;
- bitten Sie Codex, die Tests auszuführen;
- belassen Sie einen einfachen Fehler und prüfen Sie, ob Codex das Testergebnis verwenden kann, um mit der Fehlerbehebung fortzufahren.
Eine erfolgreiche Textgenerierung beweist nicht, dass Werkzeugaufrufe und mehrstufige Agentenabläufe kompatibel sind.
1.11 Zum offiziellen OpenAI-Anbieter zurückwechseln
Wählen Sie in CC Switch OpenAI Official aus und starten Sie Codex neu.
Prüfen Sie den Anmeldestatus:
codex login statusMelden Sie sich bei Bedarf erneut an:
codex loginWenn Sie sowohl den offiziellen Anmeldestatus als auch Modellanfragen an Drittanbieter benötigen, vergewissern Sie sich, dass Keep official login when switching third-party providers weiterhin aktiviert ist.
1.12 Einschränkungen und betriebliche Aspekte
CC Switch vereinfacht die Konfiguration, beseitigt jedoch keine Einschränkungen des Upstreams:
- CC Switch muss für die Konvertierung von Chat oder Messages weiter ausgeführt werden;
- die Protokollkonvertierung kann nicht jede anbieterspezifische Funktion nachbilden;
- einige Modelle können chatten, führen Werkzeugaufrufe jedoch nicht zuverlässig aus;
- Web Search, Bildeingaben, WebSockets oder Antwortspeicherung sind möglicherweise nicht verfügbar;
- die Ratenbegrenzungen, Abrechnung und Richtlinien zur Datenspeicherung des Upstream-Anbieters gelten weiterhin;
- ein API-Relay kann Anfragen und Antworten erneut verändern;
- Konfigurationen sollten nach Upgrades von CC Switch, Codex oder dem Anbieter erneut getestet werden.
CC Switch eignet sich am besten für die lokale Desktop-Entwicklung. Bevorzugen Sie für Server, CI oder lang laufende Headless-Automatisierung einen nativen Responses-Anbieter oder ein selbst gehostetes Gateway.
2. Eine gehostete API mit einem benutzerdefinierten Modellanbieter verbinden
Konfigurieren Sie einen Anbieter nur dann direkt, wenn der Dienst die von Codex benötigte Responses API nativ unterstützt.
Wenn der Dienst nur /chat/completions oder Anthropic Messages bereitstellt, verwenden Sie den CC Switch-Ablauf aus Abschnitt 1. Versuchen Sie nicht, die Inkompatibilität mit wire_api = "chat" zu beheben.
2.1 Erforderliche API-Fähigkeiten
Ein für die direkte Codex-Integration geeigneter Anbieter sollte mindestens Folgendes unterstützen:
POST /responses;- Responses-JSON-Objekte;
- Responses-SSE-Streaming-Ereignisse;
- Funktions- oder Werkzeugaufrufe;
- JSON Schema-Werkzeugparameter;
- Fortsetzung nach der Rückgabe von Werkzeugergebnissen;
- mehrstufige Anfragen oder eine Entsprechung zu
previous_response_id; - ein ausreichendes Kontextfenster und stabile, lang laufende Anfragen;
- dokumentierte Authentifizierung, Ratenbegrenzungen und Fehlerantworten.
Die reine Textgenerierung reicht für einen zuverlässigen Codex-Agenten nicht aus.
2.2 Allgemeine Konfiguration
Bearbeiten Sie die Konfiguration auf Benutzerebene:
~/.codex/config.tomlFügen Sie Folgendes hinzu:
model_provider = "third_party"
model = "provider-model-id"
# Set this only when the model explicitly supports it.
model_reasoning_effort = "high"
# Optional: use the real value published by the provider when no catalog exists.
# model_context_window = 131072
[model_providers.third_party]
name = "My Responses-compatible Provider"
base_url = "https://provider.example.com/v1"
env_key = "THIRD_PARTY_API_KEY"
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 300000Verwenden Sie nicht diese reservierten Anbieter-IDs:
openai
ollama
lmstudioVerwenden Sie stattdessen eine benutzerdefinierte ID wie third_party oder company_gateway.
2.3 Konfigurationsfelder
| Feld | Zweck |
|---|---|
model_provider |
Wählt einen unter [model_providers.<id>] deklarierten Anbieter aus |
model |
Die genaue vom Drittanbieterdienst akzeptierte Modell-ID |
name |
Für Menschen lesbarer Anbietername |
base_url |
Stamm-URL für die Responses API des Anbieters |
env_key |
Name der Umgebungsvariable, die den API key enthält |
wire_api |
Nur responses wird unterstützt; dies ist bei Auslassung zugleich der Standardwert |
request_max_retries |
Wiederholungsversuche bei regulären HTTP-Anfragefehlern |
stream_max_retries |
Wiederholungsversuche nach Streaming-Unterbrechungen |
stream_idle_timeout_ms |
Zeit ohne SSE-Ereignisse, nach der der Stream als inaktiv gilt |
model_context_window |
Optionale tatsächliche Größe des Kontextfensters |
model_reasoning_effort |
Optionale vom Modell unterstützte Reasoning-Stufe |
Ob base_url /v1 enthält, hängt von der Anbieterdokumentation ab. Ein üblicher endgültiger Endpunkt lautet:
https://provider.example.com/v1/responses2.4 API key festlegen
Aktuelle bash- / zsh-Sitzung:
export THIRD_PARTY_API_KEY="your API key"fish:
set -gx THIRD_PARTY_API_KEY "your API key"Aktuelle PowerShell-Sitzung:
$env:THIRD_PARTY_API_KEY = "your API key"Für den aktuellen Windows-Benutzer dauerhaft speichern:
[Environment]::SetEnvironmentVariable(
"THIRD_PARTY_API_KEY",
"your API key",
[EnvironmentVariableTarget]::User
)Starten Sie das Terminal, die IDE oder den Desktop-Client neu, nachdem Sie eine dauerhafte Umgebungsvariable festgelegt haben.
2.5 Zuerst den Responses-Endpunkt testen
Rufen Sie den Anbieter direkt auf, bevor Sie Codex starten:
export PROVIDER_BASE_URL="https://provider.example.com/v1"
curl "$PROVIDER_BASE_URL/responses" \
-H "Authorization: Bearer $THIRD_PARTY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "provider-model-id",
"input": "Reply with exactly: PROVIDER_OK",
"stream": false
}'Überprüfen Sie Folgendes:
- der Endpunkt gibt keinen 404-Fehler zurück;
- die Antwort besitzt eine Responses-Struktur und nicht nur ein Chat Completions-Array
choices; - die Modell-ID wird akzeptiert;
- die Authentifizierung ist korrekt;
- Fehler enthalten nützliche Diagnoseinformationen.
Testen Sie anschließend separat:
stream: true;- Werkzeugaufrufe;
- Fortsetzung nach Werkzeugergebnissen;
- mehrere Gesprächsrunden;
- lange Kontexte;
- Parallelität und Ratenbegrenzungen.
2.6 Codex-Konfiguration validieren
Starten Sie im strikten Modus:
codex --strict-config--strict-config behandelt unbekannte Konfigurationsschlüssel als Fehler. Dadurch lassen sich Felder erkennen, die aus veralteten Leitfäden übernommen wurden.
Führen Sie in Codex Folgendes aus:
/statusFühren Sie zum Überprüfen der Konfigurationsquellen Folgendes aus:
/debug-configÜberschreiben Sie Anbieter und Modell für einen einzelnen Durchlauf, ohne die Standardkonfiguration zu ändern:
codex \
-c 'model_provider="third_party"' \
-m 'provider-model-id'2.7 Modellkataloge und Unknown model
Ein Codex-Modellkatalog kann Folgendes beschreiben:
- die Größe des Kontextfensters;
- unterstützte Reasoning-Stufen;
- Eingabemodalitäten;
- Fähigkeiten für Werkzeugaufrufe;
- Kürzungsverhalten;
- Mindestversionen des Clients.
Wenn der Anbieter einen Codex-kompatiblen Modellkatalog bereitstellt, speichern Sie ihn lokal und konfigurieren Sie:
model_catalog_json = "~/.codex/provider-models.json"Wenn kein Katalog vorhanden ist, legen Sie ein Kontextfenster erst fest, nachdem Sie den tatsächlichen Wert bestätigt haben:
model_context_window = 131072Kopieren Sie keine Metadaten eines nicht verwandten Modells, nur um eine Warnung zu entfernen. Falsche Fähigkeits- oder Kontextmetadaten können zu vorzeitiger Kürzung, Upstream-Limitfehlern oder fehlerhaften Werkzeugaufrufen führen.
2.8 Vollständige Kompatibilitätscheckliste
Testen Sie vor dem Produktionseinsatz:
- nicht streamenden
/responses-Text; - Responses-SSE-Streaming;
- einen Werkzeugaufruf;
- mehrere sequenzielle oder parallele Werkzeugaufrufe;
- JSON Schema-Parameter;
- Fortsetzung nach Werkzeugergebnissen;
- lange Kontexte und automatische Komprimierung;
- Reasoning-Parameter;
- Bilder oder andere Eingabemodalitäten;
- Ratenbegrenzungen und Wiederholungsverhalten;
- ob ein Proxy SSE puffert;
- ob der Anbieter Werkzeugfelder verwirft oder umschreibt;
- Richtlinien zu Datenspeicherung, Protokollierung und Datenschutz.
2.9 Speicherort der Anbieterkonfiguration
Speichern Sie model_provider, model_providers und die Anbieterauthentifizierung in der Datei auf Benutzerebene:
~/.codex/config.tomlSpeichern Sie sie nicht in der Datei auf Repository-Ebene:
<project>/.codex/config.tomlCodex ignoriert projektlokale Felder, die Modellanfragen umleiten oder die Anbieterauthentifizierung ändern könnten. Dadurch wird verhindert, dass ein nicht vertrauenswürdiges geklontes Repository Anfragen unbemerkt an einen anderen Server weiterleitet.
3. Mehrere Drittanbieter mit Profilen verwalten
Benutzer von CC Switch können Anbieter normalerweise in der Anwendung wechseln und benötigen keine Codex-Profile.
Profile sind nützlich, wenn Sie mehrere native Responses-Anbieter manuell konfigurieren. Belassen Sie die Anbieterdefinitionen in der Basiskonfiguration und verwenden Sie separate Profildateien, um einen Anbieter und ein Modell auszuwählen.
Basis-~/.codex/config.toml:
[model_providers.provider_a]
name = "Provider A"
base_url = "https://api.provider-a.example/v1"
env_key = "PROVIDER_A_API_KEY"
wire_api = "responses"
[model_providers.provider_b]
name = "Provider B"
base_url = "https://api.provider-b.example/v1"
env_key = "PROVIDER_B_API_KEY"
wire_api = "responses"Erstellen Sie:
~/.codex/fast.config.tomlmodel_provider = "provider_a"
model = "provider-a-fast-model"
model_reasoning_effort = "medium"Erstellen Sie ein weiteres Profil:
~/.codex/quality.config.tomlmodel_provider = "provider_b"
model = "provider-b-quality-model"
model_reasoning_effort = "high"Wählen Sie beim Start von Codex ein Profil aus:
codex --profile fast
codex --profile qualityNicht interaktiver Modus:
codex exec --profile quality "Review the current changes"Profildateien befinden sich unter:
$CODEX_HOME/<profile-name>.config.tomlDer Standardwert für CODEX_HOME ist ~/.codex.
Aktuelle Codex-Versionen verwenden separate Profildateien und lesen veraltete [profiles.<name>]-Tabellen nicht mehr. Migrieren Sie jedes veraltete Profil in eine eigene <name>.config.toml-Datei.
4. Benutzerdefinierte Header und erweiterte Authentifizierung
4.1 Standardmäßige Bearer-Token
Die meisten Drittanbieterdienste funktionieren mit:
[model_providers.third_party]
env_key = "THIRD_PARTY_API_KEY"Codex liest den Schlüssel aus der Umgebung und wendet die Bearer-Authentifizierung des Anbieters an.
4.2 Benutzerdefinierte API-key-Header
Einige Dienste erfordern:
x-api-key: <key>Verwenden Sie env_http_headers:
model_provider = "custom_header_provider"
model = "provider-model-id"
[model_providers.custom_header_provider]
name = "Custom Header Provider"
base_url = "https://provider.example.com/v1"
wire_api = "responses"
env_http_headers = { "x-api-key" = "VENDOR_API_KEY" }Der Wert VENDOR_API_KEY ist der Name einer Umgebungsvariable und nicht das Geheimnis selbst.
export VENDOR_API_KEY="your API key"4.3 Statische Header und Abfrageparameter
Fügen Sie nicht vertrauliche statische Header hinzu:
http_headers = { "X-Client-Name" = "codex", "X-Environment" = "development" }Fügen Sie Abfrageparameter hinzu:
query_params = { "api-version" = "2026-08-01" }Speichern Sie keine echten Geheimnisse in http_headers.
4.4 Befehlsbasierte Authentifizierung
Eine Unternehmensumgebung kann kurzlebige Token aus einem Schlüsselbund, einem Cloud-Anmeldeinformationshelfer oder einem internen Befehl beziehen:
[model_providers.corporate]
name = "Corporate Gateway"
base_url = "https://gateway.example.com/v1"
wire_api = "responses"
[model_providers.corporate.auth]
command = "/usr/local/bin/fetch-codex-token"
args = ["--audience", "codex"]
timeout_ms = 5000
refresh_interval_ms = 300000Der Befehl darf nur das Token auf der Standardausgabe ausgeben.
Kombinieren Sie diese Authentifizierungsmethoden nicht:
[model_providers.<id>.auth];env_key;experimental_bearer_token;requires_openai_auth.
4.5 OpenAI-Authentifizierung über einen Proxy wiederverwenden
Legen Sie Folgendes nur fest, wenn der Proxy weiterhin auf OpenAI-Modelle zugreift und Codex die offizielle OpenAI-Authentifizierung verwenden soll:
requires_openai_auth = trueDies ist nicht die richtige Einstellung für einen normalen API key eines Drittanbietermodells. Wenn sie aktiviert ist, ignoriert Codex das env_key des Anbieters.
5. Fehlerbehebung
5.1 CC Switch wechselt den Anbieter, aber Codex verwendet weiterhin das alte Modell
Prüfen Sie jeden Punkt:
- der gewünschte Codex-Anbieter ist in CC Switch aktiviert;
- der Hauptschalter für lokales Routing ist eingeschaltet;
- Codex ist unter Routing Enabled aktiviert;
- für Chat- oder Messages-Anbieter ist Needs Local Routing aktiviert;
- CC Switch wird weiterhin ausgeführt;
- Codex, die IDE oder der Desktop-Client wurde vollständig neu gestartet;
/debug-configzeigt die erwartete Konfigurationsquelle.
Starten Sie Codex nach Änderungen an Modellzuordnungen neu, damit das Menü /model seinen Katalog neu laden kann.
5.2 404, 400 oder ein fehlender /responses-Endpunkt
Häufige Ursachen sind:
- ein Chat Completions-Anbieter wird als nativer Responses-Anbieter behandelt;
/v1wurde fälschlicherweise hinzugefügt oder entfernt;/chat/completionswurde doppelt angehängt;- Full URL Mode wurde für einen nicht standardmäßigen Endpunkt nicht aktiviert;
- lokales Routing hat Codex nicht übernommen;
- eine unvollständige Responses-Implementierung im Drittanbieter-Gateway.
Benutzer von CC Switch sollten Upstream Format und die Routing-Protokolle prüfen. Benutzer eines direkten Anbieters sollten <base_url>/responses mit curl aufrufen.
5.3 401 Unauthorized oder 403 Forbidden
Prüfen Sie:
- ob der API key gültig ist;
- ob er zur richtigen Region, zum richtigen Projekt oder Tarif gehört;
- ob das Konto über ausreichendes Guthaben und die erforderlichen Berechtigungen verfügt;
- ob der Dienst ein Bearer-Token oder
x-api-keyerwartet; - ob der Name der Umgebungsvariable genau mit
env_keyübereinstimmt; - ob CC Switch den richtigen Schlüssel gespeichert hat;
- ob ein Proxy den Authentifizierungs-Header entfernt hat.
Geben Sie keinen vollständigen Schlüssel in gemeinsam genutzten Protokollen aus.
bash / zsh:
printenv THIRD_PARTY_API_KEYPowerShell:
$env:THIRD_PARTY_API_KEY5.4 Das Modell fehlt in /model
Prüfen Sie:
- ob CC Switch Model Mapping die genaue Upstream-Modell-ID enthält;
- ob der Anbieter gespeichert und aktiviert wurde;
- ob Codex neu gestartet wurde;
- ob ein manueller Anbieter über ein gültiges
model_catalog_jsonverfügt; - ob das Katalog-JSON gültig ist;
- ob der Anbieter das Modell umbenannt oder eingestellt hat.
5.5 Text funktioniert, aber Codex kann keine Dateien lesen, keinen Code bearbeiten oder keine Befehle ausführen
Mögliche Ursachen:
- das Modell ist bei Werkzeugaufrufen schwach;
- der Upstream implementiert keine Funktionsaufrufe;
- ein Relay verwirft Werkzeugaufruf-IDs;
- Fragmente von Streaming-Werkzeugaufrufen werden nicht korrekt zusammengesetzt;
- JSON Schema wird umgeschrieben;
- Werkzeugergebnisse werden in der nächsten Runde nicht zurückgegeben;
- der Modellkontext ist zu kurz;
- der Modellkatalog weist fälschlicherweise Fähigkeiten aus.
Testen Sie einen echten Ablauf „lesen → bearbeiten → Tests ausführen → Fehler untersuchen → beheben“ anstelle einer einfachen Chat-Eingabe.
5.6 Streaming-Verbindungen werden häufig getrennt
Benutzer von CC Switch sollten zuerst die Protokolle des lokalen Routings und die Upstream-Antworten prüfen. Häufige Ursachen sind:
- Warteschlangenbildung beim Upstream oder lange Reasoning-Zeit;
- ein Gateway, das SSE nicht zeitnah ausgibt;
- Pufferung durch CDN, Reverse-Proxy oder Unternehmensnetzwerk;
- nicht standardmäßige Upstream-Ereignisse;
- Kompatibilitätsprobleme in einer bestimmten Version von CC Switch oder des Anbieters.
Bei einem direkten Anbieter können Sie Folgendes erhöhen:
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 600000Längere Zeitüberschreitungen können Netzwerkprobleme oder langsame Inferenz abmildern, aber keine fehlerhafte Protokollimplementierung reparieren.
5.7 wire_api = "chat" verhindert den Start von Codex
Dieser Wert erscheint in älteren Leitfäden. Die aktuelle Codex-Konfiguration unterstützt nur:
wire_api = "responses"Verwenden Sie CC Switch, wenn der Upstream nur Chat Completions bereitstellt.
Prüfen Sie mit Folgendem auf weitere veraltete Felder:
codex --strict-config5.8 Das Bearbeiten der Projektkonfiguration ändert den Anbieter nicht
Anbietereinstellungen gehören in:
~/.codex/config.tomlEin .codex/config.toml auf Projektebene kann keine Felder überschreiben, die Anfragen umleiten oder die Anbieterauthentifizierung ändern, einschließlich model_provider und model_providers.
5.9 Das Terminal funktioniert, aber die IDE-Erweiterung findet den API key nicht
GUI-Anwendungen erben häufig keine Variablen, die vorübergehend in einem bestehenden Terminal exportiert wurden.
Zu den Optionen gehören:
- starten Sie die IDE aus dem Terminal, in dem die Variable festgelegt ist;
- speichern Sie die Variable dauerhaft in der Benutzerumgebung des Betriebssystems;
- beenden Sie die IDE vollständig und öffnen Sie sie erneut;
- verwenden Sie CC Switch, um die lokale Anbieterkonfiguration zu verwalten.
5.10 Offizielle Anmeldung oder offizielle Funktionen funktionieren nach einem Wechsel nicht mehr
Prüfen Sie:
- ob OpenAI Official erneut ausgewählt wurde;
- ob Keep official login when switching third-party providers aktiviert ist;
- ob ein älterer Ablauf
~/.codex/auth.jsonüberschrieben hat; - ob
codex login statuserfolgreich ausgeführt wird.
Melden Sie sich bei Bedarf erneut an:
codex loginGeben Sie keine auth.json-Datei mit Zugriffstoken weiter und bearbeiten Sie sie nicht manuell.
5.11 Web Search, Bilder oder andere erweiterte Funktionen funktionieren nicht
Ein Anbieter, der Text und Werkzeugaufrufe unterstützt, implementiert nicht zwangsläufig jede Codex-Funktion.
Benutzerdefinierte Anbieter weisen standardmäßig keine eigenständige Web Search aus. Legen Sie Folgendes nur fest, wenn Anbieter, Modell und Endpunkt diese Funktion tatsächlich unterstützen:
supports_standalone_web_search = trueEine fälschliche Aktivierung führt lediglich dazu, dass Codex Anfragen sendet, die der Upstream nicht verarbeiten kann. Validieren Sie Bildeingaben, WebSockets, Antwortspeicherung und andere erweiterte Funktionen separat.
6. Einen Integrationsweg auswählen
| Anforderung | Empfohlener Weg |
|---|---|
| Der Anbieter stellt nur Chat Completions bereit | CC Switch |
| Der Anbieter stellt nur Anthropic Messages bereit | CC Switch |
| Sie wechseln häufig zwischen mehreren Drittanbietermodellen | CC Switch |
| Sie möchten eine grafische Oberfläche für Schlüssel und Modelle | CC Switch |
| Der Anbieter unterstützt Responses vollständig und nativ | Benutzerdefinierter model provider |
| Sie führen Codex auf einem Server, in CI oder ohne Desktop aus | Nativer Responses-Anbieter oder selbst gehostetes Gateway |
| Ihr Unternehmen benötigt zentrale Authentifizierung, Audits und Ratenbegrenzungen | Unternehmens-Gateway plus benutzerdefinierter Anbieter |
| Das Modell kann nur chatten und keine Werkzeuge aufrufen | Nicht als vollwertiger Codex-Agentenanbieter geeignet |
Validieren Sie jede Integration auf drei Ebenen:
- Konnektivität: Sie gibt zuverlässig Text zurück;
- Werkzeugnutzung: Sie kann Dateien lesen, Befehle ausführen und anhand von Werkzeugergebnissen fortfahren;
- Aufgabenabschluss: Sie kann einen Bearbeitungs-, Test- und Reparaturablauf abschließen.
Prüfen Sie außerdem:
- die Preise des Drittanbieters;
- Ratenbegrenzungen;
- ob Quellcode und Eingaben protokolliert werden;
- Regionen der Datenspeicherung;
- Compliance-Anforderungen für Teams oder Unternehmen;
- ob Modell-Upgrades Regressionstests erfordern.
Wenn Sie einen API key eines Drittanbieters verwenden, wird die Nutzung von diesem Anbieter oder Relay abgerechnet. Kontingente eines ChatGPT Plus-, Pro- oder Codex-Abonnements werden dadurch nicht automatisch verbraucht oder geteilt.