Wenn Sie Claude Code auf DeepSeek V4, OpenRouter, LiteLLM oder ein anderes Drittanbieter-LLM-Gateway routen, kann der Start mit Invalid custom3p enterprise config abbrechen. Der Fehler bedeutet: Claude Code konnte Ihre benutzerdefinierte Drittanbieter-Konfiguration nicht validieren, bevor die erste Modellanfrage gesendet wurde.
Dieser Leitfaden zeigt, was custom3p bedeutet, welche sechs Ursachen am häufigsten sind und wie Sie jede davon praktisch beheben. Die Beispiele decken OpenRouter, LiteLLM und lokale vLLM-Setups ab.
TL;DR
Invalid custom3p enterprise config bedeutet, dass Claude Code Ihre Drittanbieter-Konfiguration nicht akzeptiert.
custom3p ist die interne Bezeichnung für einen benutzerdefinierten Drittanbieter-Endpunkt, der über ANTHROPIC_BASE_URL gesetzt wird.
Prüfen Sie zuerst diese Punkte:
-
ANTHROPIC_BASE_URLdarf meist kein nachgestelltes/v1enthalten. - Verwenden Sie die richtige Auth-Variable:
-
ANTHROPIC_AUTH_TOKENfür Bearer-Token -
ANTHROPIC_API_KEYfürx-api-key
-
- Validieren Sie
~/.claude/settings.json. - Stellen Sie sicher, dass das Claude-Code-Onboarding abgeschlossen ist.
- Prüfen Sie, ob Ihr Gateway benötigte Header weiterleitet.
- Prüfen Sie verwaltete Unternehmensrichtlinien.
In vielen Fällen reicht bereits das Entfernen von /v1 aus der Base-URL.
Was „custom3p“ bedeutet
Claude Code kann Anfragen über verschiedene Modi routen:
| Modus | Auslöser |
|---|---|
| Anthropic API | Keine Überschreibung gesetzt |
| Amazon Bedrock | CLAUDE_CODE_USE_BEDROCK=1 |
| Google Vertex AI | CLAUDE_CODE_USE_VERTEX=1 |
| Microsoft Foundry | CLAUDE_CODE_USE_FOUNDRY=1 |
| Benutzerdefinierter Drittanbieter |
ANTHROPIC_BASE_URL zeigt auf einen anderen Host |
Die letzte Variante ist custom3p: ein benutzerdefinierter Third-Party-Provider.
Beispiele:
- OpenRouter
- LiteLLM
- lokaler vLLM-Server
- internes Unternehmens-Gateway
- eigener Proxy vor einem Modellanbieter
Wenn Claude Code eine solche Base-URL erkennt, validiert es die Enterprise-/Gateway-Konfiguration vor dem ersten Request. Schlägt diese Validierung fehl, erscheint:
Invalid custom3p enterprise config
Das ist ein Konfigurationsfehler, keine automatische Policy-Blockade.
Warum der Fehler häufiger auftritt
Im April 2026 blockierte Anthropic den Zugriff auf Claude Pro- und Max-Abonnements für agentische Drittanbieter-Tools, die die Claude-Code-Client-ID fälschten.
Das ist nicht dasselbe Problem.
Viele Entwickler nutzen seitdem die offiziell unterstützte Drittanbieter-Konfiguration von Claude Code, um den Agenten-Loop über günstigere oder eigene Backends zu betreiben. Ein Beispiel ist DeepSeek V4 Pro über OpenRouter. Projekte wie DeepClaude verpacken solche Setups in eine CLI.
Der Haken: Die offizielle Drittanbieter-Konfiguration muss exakt stimmen. Ein falscher Header, ein falscher JSON-Eintrag oder ein falsch formatierter Endpoint reicht aus, um Invalid custom3p enterprise config auszulösen.
Grundursache 1: ANTHROPIC_BASE_URL enthält ein nachgestelltes /v1
Claude Code hängt selbst /v1/messages an Ihre ANTHROPIC_BASE_URL an.
Wenn Sie bereits /v1 setzen, entsteht:
/v1/v1/messages
Das führt häufig zu 404 oder zur fehlgeschlagenen Preflight-Validierung.
Falsch
export ANTHROPIC_BASE_URL="https://api.openrouter.ai/api/v1"
export ANTHROPIC_BASE_URL="https://litellm.yourcompany.com/v1"
Richtig
export ANTHROPIC_BASE_URL="https://api.openrouter.ai/api"
export ANTHROPIC_BASE_URL="https://litellm.yourcompany.com"
Endpoint testen
Prüfen Sie, welche URL Claude Code effektiv aufrufen würde:
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
"${ANTHROPIC_BASE_URL}/v1/messages" \
-d '{"model":"claude-sonnet-4-6","max_tokens":1,"messages":[{"role":"user","content":"hi"}]}'
Interpretation:
-
200: Endpoint existiert und Anfrage wurde akzeptiert -
400: Endpoint existiert, Body ist aber unvollständig oder ungültig -
404: sehr wahrscheinlich falsche Base-URL, oft wegen doppeltem/v1
Grundursache 2: Falsche Authentifizierungsvariable
Claude Code unterstützt zwei Auth-Varianten:
| Variable | Gesendeter Header | Typischer Einsatz |
|---|---|---|
ANTHROPIC_API_KEY |
x-api-key |
Anthropic-kompatible Gateways mit API-Key-Header |
ANTHROPIC_AUTH_TOKEN |
Authorization: Bearer |
OAuth-/Bearer-Gateways, LiteLLM, viele OpenRouter-Setups |
Wenn Ihr Gateway Bearer-Token erwartet, aber Claude Code x-api-key sendet, schlägt die Validierung fehl.
OpenRouter
OpenRouter erwartet typischerweise einen Bearer-Token:
export ANTHROPIC_AUTH_TOKEN="sk-or-your-openrouter-key"
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
Nicht verwenden:
export ANTHROPIC_API_KEY="sk-or-your-openrouter-key"
Das würde einen x-api-key-Header senden, den OpenRouter in diesem Setup nicht erwartet.
LiteLLM
export ANTHROPIC_AUTH_TOKEN="sk-litellm-your-virtual-key"
export ANTHROPIC_BASE_URL="https://your-litellm-server:4000"
Lokaler vLLM-Server oder DeepSeek-Gateway mit API-Key
export ANTHROPIC_API_KEY="your-key-here"
export ANTHROPIC_BASE_URL="https://your-vllm-server"
Prüfen Sie immer die Auth-Dokumentation Ihres Gateways: Entscheidend ist, welchen Header der Server erwartet.
Grundursache 3: Fehlerhafte settings.json
Wenn Sie Claude Code über ~/.claude/settings.json konfigurieren, muss die Datei gültiges JSON enthalten.
Häufige Fehler sind:
- nachgestellte Kommas
- typografische Anführungszeichen
- Kommentare in JSON
- fehlende Klammern
- falsch verschachtelte
env-Einträge
Falsch: nachgestelltes Komma
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-your-key",
}
}
Falsch: intelligente Anführungszeichen
{
"env": {
“ANTHROPIC_BASE_URL”: “https://openrouter.ai/api”
}
}
Richtig
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-your-openrouter-key"
}
}
JSON validieren
Mit Python:
python3 -c "import json, os; json.load(open(os.path.expanduser('~/.claude/settings.json')))" && echo "Gültiges JSON"
Oder mit jq:
jq . ~/.claude/settings.json
Wenn die Datei nicht parsebar ist, kann Claude Code die Enterprise-Konfiguration nicht lesen und meldet sie als ungültig.
Grundursache 4: Onboarding bei Neuinstallation nicht abgeschlossen
Claude Code prüft in ~/.claude.json, ob das Onboarding abgeschlossen wurde.
Relevant ist:
"hasCompletedOnboarding": true
Fehlt dieser Wert, kann Claude Code in den Onboarding-Flow wechseln und Ihre settings.json ignorieren.
Status prüfen
cat ~/.claude.json | python3 -m json.tool 2>/dev/null | grep hasCompletedOnboarding
Wenn der Eintrag fehlt oder false ist, setzen Sie ihn manuell.
Minimal funktionierende ~/.claude.json
{
"hasCompletedOnboarding": true,
"primaryApiKey": "sk-placeholder"
}
primaryApiKey ist hier nur ein Platzhalter. Ihre eigentliche Gateway-Konfiguration kommt aus settings.json oder den Umgebungsvariablen.
Danach Claude Code neu starten.
Grundursache 5: Gateway leitet erforderliche Header nicht weiter
Claude Code sendet für die Validierung zusätzliche Header. Einige Proxies oder Gateways entfernen diese Header.
Wichtige Header:
anthropic-beta
anthropic-version
X-Claude-Code-Session-Id
Wenn Ihr Gateway diese Header nicht weiterleitet, kann die Preflight-Validierung fehlschlagen.
Nginx-Beispiel
location /v1/ {
proxy_pass http://backend;
proxy_set_header anthropic-beta $http_anthropic_beta;
proxy_set_header anthropic-version $http_anthropic_version;
proxy_set_header X-Claude-Code-Session-Id $http_x_claude_code_session_id;
}
LiteLLM unterstützt diese Weiterleitung seit v1.82.9+ standardmäßig.
Workaround: experimentelle Betas deaktivieren
Wenn Sie das Gateway nicht anpassen können:
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
Damit überspringt Claude Code Funktionen, die den Beta-Header benötigen. Der Kern-Agenten-Loop funktioniert weiter, aber einige experimentelle Funktionen stehen nicht zur Verfügung.
Grundursache 6: Konflikt mit verwalteten Unternehmensrichtlinien
Wenn Sie einen Team- oder Enterprise-Plan verwenden, können Administratoren verwaltete Einstellungen ausrollen.
Diese Einstellungen haben Vorrang vor:
~/.claude/settings.json- lokalen Umgebungsvariablen
- manuell gesetzten Modelloptionen
Prüfen Sie, ob verwaltete Einstellungen aktiv sind:
ls ~/.claude/managed-settings.json 2>/dev/null && echo "Verwaltete Einstellungen gefunden"
Oder innerhalb von Claude Code:
/status
Wenn verwaltete Einstellungen aktiv sind, muss Ihr Administrator prüfen, ob:
- Ihre Gateway-Domain erlaubt ist
- Ihre Modell-IDs in
availableModelsenthalten sind - benutzerdefinierte Base-URLs blockiert werden
Für selbstverwaltete Unternehmensbereitstellungen liegen die Einstellungen beispielsweise unter macOS hier:
/Library/Application Support/ClaudeCode/managed-settings.json
Funktionierende Beispielkonfigurationen
Claude Code + OpenRouter + DeepSeek V4 Pro
OpenRouter bietet eine Anthropic-kompatible API. Verwenden Sie für OpenRouter eine Base-URL ohne /v1.
~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "sk-or-your-openrouter-key",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek/deepseek-v4-pro",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek/deepseek-v4-pro",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek/deepseek-v4-pro"
}
}
Die Modellüberschreibungen sind wichtig, weil Claude Code sonst weiterhin Standardmodellnamen wie claude-sonnet-4-6 sendet. Dann kann OpenRouter zwar erreichbar sein, aber ein anderes Modell routen als beabsichtigt.
Hinweis: OpenRouter implementiert die Anthropic-Streaming-Spezifikation für Tool-Aufrufe nicht in allen Randfällen vollständig. Der Haupt-Agenten-Loop funktioniert, komplexe Multi-Tool-Ketten können jedoch Einschränkungen haben. Prüfen Sie den aktuellen Status in der OpenRouter Claude Code Integration.
Claude Code + LiteLLM
LiteLLM ist für Claude-Code-Gateways besonders praktisch, weil es Header-Weiterleitung und Modellrouting zentral übernimmt.
config.yaml für LiteLLM:
model_list:
- model_name: claude-sonnet-4-6
litellm_params:
model: deepseek/deepseek-v4
api_key: "sk-your-deepseek-key"
- model_name: claude-opus-4-7
litellm_params:
model: deepseek/deepseek-v4-pro
api_key: "sk-your-deepseek-key"
Claude-Code-Konfiguration:
{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:4000",
"ANTHROPIC_AUTH_TOKEN": "sk-litellm-your-key"
}
}
Vorteil: Claude Code kann weiterhin claude-sonnet-4-6 senden. LiteLLM mappt diesen Modellnamen intern auf DeepSeek oder ein anderes Backend.
Claude Code + lokales vLLM
Für lokale Modellinferenz mit vLLM starten Sie den Server:
python -m vllm.entrypoints.openai.api_server \
--model deepseek-ai/DeepSeek-V3 \
--dtype auto \
--api-key local-key \
--port 8000
Danach Claude Code konfigurieren:
export ANTHROPIC_BASE_URL="http://localhost:8000"
export ANTHROPIC_API_KEY="local-key"
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-ai/DeepSeek-V3"
Wichtig: Hier wird ANTHROPIC_API_KEY verwendet, weil der lokale Server in diesem Beispiel API-Key-Authentifizierung nutzt.
Debugging-Workflow
Wenn die Konfiguration weiterhin fehlschlägt, starten Sie Claude Code mit Debug-Logging:
claude --debug 2>&1 | head -100
Suchen Sie in der Ausgabe nach:
-
Sending request to:– zeigt die tatsächlich verwendete URL -
Response status:– zeigt den HTTP-Status des Gateways -
enterprise config error:– zeigt Hinweise zur internen Validierung
Gateway direkt testen
Senden Sie eine Anfrage mit den Headern, die Claude Code typischerweise verwendet:
curl -v -X POST "${ANTHROPIC_BASE_URL}/v1/messages" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ANTHROPIC_AUTH_TOKEN}" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: max-tokens-3-5-sonnet-2024-07-15" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 10,
"messages": [{"role": "user", "content": "hi"}]
}'
Interpretation:
-
200: Gateway akzeptiert Request -
401: Authentifizierung falsch -
403: Zugriff blockiert -
404: Base-URL oder Pfad falsch -
422: Body oder Modellformat nicht akzeptiert
Wenn Curl funktioniert, Claude Code aber nicht, prüfen Sie die Debug-Ausgabe. Claude Code sendet zusätzlich Preflight-/Validierungsanfragen, die Ihr einfacher Curl-Test möglicherweise nicht abbildet.
APIs mit Apidog testen
Beim Debuggen von LLM-Gateways hilft Apidog, die exakten Requests und Responses unabhängig von Claude Code zu prüfen.
Erstellen Sie eine Collection für den /v1/messages-Endpoint Ihres Gateways und legen Sie diese Werte als Collection-Variablen an:
base_url
authorization_token
anthropic_version
anthropic_beta
model
Beispiel-Header:
Authorization: Bearer {{authorization_token}}
anthropic-version: {{anthropic_version}}
anthropic-beta: {{anthropic_beta}}
Content-Type: application/json
Beispiel-Body:
{
"model": "{{model}}",
"max_tokens": 100,
"messages": [
{
"role": "user",
"content": "hi"
}
]
}
So können Sie OpenRouter, LiteLLM, vLLM oder ein internes Gateway testen, ohne Claude Code jedes Mal neu zu starten.
Das ist besonders hilfreich bei Header-Problemen: Sie sehen direkt, ob Ihr Gateway anthropic-beta, anthropic-version und Auth-Header akzeptiert oder entfernt.
Weitere nützliche Claude-Code-Konfigurationen
Beta-Header-Abhängigkeit deaktivieren
Wenn Ihr Gateway keine benutzerdefinierten Header weiterleiten kann:
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
Damit deaktivieren Sie den Beta-Feature-Handshake. Der Agenten-Loop bleibt nutzbar, aber Funktionen, die an den Beta-Header gebunden sind, können fehlen.
Gateway-Modellerkennung aktivieren
Ab Claude Code v2.1.129 kann Claude Code Modelle vom Gateway abrufen:
export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
Claude Code fragt dann beim Start /v1/models ab.
Einschränkung: Automatisch hinzugefügt werden nur Modell-IDs, die mit claude oder anthropic beginnen. Für Modelle wie DeepSeek setzen Sie weiterhin explizit:
export ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek/deepseek-v4-pro"
Benutzerdefiniertes Modell in /model anzeigen
export ANTHROPIC_CUSTOM_MODEL_OPTION="deepseek/deepseek-v4-pro"
export ANTHROPIC_CUSTOM_MODEL_OPTION_NAME="DeepSeek V4 Pro"
export ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION="Günstigeres Gateway-Modell"
Damit erscheint das Modell in der /model-Auswahl und kann während der Arbeit schneller ausgewählt werden.
Verwandte Leitfäden
Wenn Sie Claude Code mit benutzerdefinierten Modell-Backends nutzen, sind diese Themen ebenfalls relevant:
- So schreiben Sie AGENTS.md-Dateien für API-Entwicklungsteams – Verhalten von Claude Code für Ihren Stack konfigurieren
- Ruflo: Multi-Agenten-Orchestrierung für Claude Code – Schwärme, persistenter Speicher und MCP-Tools für Claude Code
- Erhalten Sie kostenlose, unbegrenzte Claude API über Puter.js – Browser-basierte Alternative für Client-Anwendungen
- Beste lokale LLMs 2026 – lokale Inferenz über vLLM
FAQ
Ist die Verwendung eines Drittanbieters mit Claude Code gegen die Nutzungsbedingungen von Anthropic?
Nein. Anthropic unterstützt das ANTHROPIC_BASE_URL-Muster für Bedrock, Vertex AI, Foundry und benutzerdefinierte Gateways.
Blockiert wurden Tools, die die Claude-Code-Client-ID fälschten, um Anthropic-Abonnements anders zu nutzen. Ein eigenes Gateway oder ein Anbieter wie OpenRouter mit eigenem API-Key ist ein anderes Setup.
Funktioniert der Claude-Code-Agenten-Loop mit DeepSeek V4 Pro?
Der Kern-Loop funktioniert: Dateibearbeitung, Shell-Kommandos und mehrstufige Aufgaben.
Einschränkungen gibt es bei Drittanbietern typischerweise bei:
- MCP-Server-Tools
- Bild-/Vision-Eingaben
- komplexen Tool-Call-Streaming-Randfällen
Wenn Ihr Workflow diese Funktionen benötigt, bleiben Anthropic API, Bedrock oder Vertex oft die zuverlässigere Wahl.
Warum sagt der Fehler „enterprise config“, obwohl ich keinen Enterprise-Plan habe?
Claude Code verwendet „enterprise config“ intern für Drittanbieter- und Gateway-Konfigurationen. Das ist keine Aussage über Ihren Tarif.
Auch einzelne Entwickler können benutzerdefinierte Drittanbieter über ANTHROPIC_BASE_URL konfigurieren.
Kann ich während einer Claude-Code-Sitzung zwischen Anthropic und Drittanbieter wechseln?
Nicht innerhalb derselben Sitzung. Claude Code liest die Base-URL beim Start.
Zum Wechseln:
- Claude Code beenden
- Umgebungsvariablen oder
settings.jsonändern - Neue Sitzung starten
Tools wie DeepClaude kapseln diesen Wechsel über CLI-Flags.
Mein Gateway liegt hinter einer Unternehmens-Firewall. Kann Claude Code einen Proxy nutzen?
Ja:
export HTTPS_PROXY="http://your-proxy:8080"
export ANTHROPIC_BASE_URL="https://your-internal-gateway"
Bei TLS-Inspection durch Unternehmens-Proxies setzen Sie zusätzlich:
export NODE_EXTRA_CA_CERTS="/path/to/corporate-ca-bundle.pem"
Curl funktioniert, Claude Code aber nicht. Warum?
Claude Code führt zusätzliche Preflight-Validierungen aus. Ihr Curl-Test trifft möglicherweise nur den normalen /v1/messages-Endpoint.
Starten Sie Claude Code mit Debug-Logging:
claude --debug
Vergleichen Sie dann:
- finale URL
- Header
- Auth-Format
- JSON-Body
- HTTP-Status
- Preflight-Request
Häufige Unterschiede sind anthropic-beta, X-Claude-Code-Session-Id und das exakte Validierungsformat.
Fazit
Invalid custom3p enterprise config ist fast immer ein behebarer Konfigurationsfehler.
Gehen Sie in dieser Reihenfolge vor:
- Entfernen Sie ein nachgestelltes
/v1ausANTHROPIC_BASE_URL. - Prüfen Sie
ANTHROPIC_AUTH_TOKENvs.ANTHROPIC_API_KEY. - Validieren Sie
~/.claude/settings.json. - Setzen Sie
hasCompletedOnboarding: truebei Neuinstallationen. - Prüfen Sie Header-Weiterleitung im Gateway.
- Prüfen Sie verwaltete Unternehmensrichtlinien.
Sobald die Validierung erfolgreich ist, kann Claude Code seinen Agenten-Loop über OpenRouter, LiteLLM, vLLM oder ein internes Gateway ausführen. Die wichtigsten Einschränkungen bleiben MCP-Tools, Vision-Eingaben und einzelne Tool-Streaming-Randfälle bei Drittanbieter-Backends.

Top comments (0)