DEV Community

Cover image for Claude Code: 'Ungültige custom3p Enterprise Config' Fehler beheben
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Claude Code: 'Ungültige custom3p Enterprise Config' Fehler beheben

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.

Teste Apidog noch heute

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:

  1. ANTHROPIC_BASE_URL darf meist kein nachgestelltes /v1 enthalten.
  2. Verwenden Sie die richtige Auth-Variable:
    • ANTHROPIC_AUTH_TOKEN für Bearer-Token
    • ANTHROPIC_API_KEY für x-api-key
  3. Validieren Sie ~/.claude/settings.json.
  4. Stellen Sie sicher, dass das Claude-Code-Onboarding abgeschlossen ist.
  5. Prüfen Sie, ob Ihr Gateway benötigte Header weiterleitet.
  6. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Das führt häufig zu 404 oder zur fehlgeschlagenen Preflight-Validierung.

Falsch

export ANTHROPIC_BASE_URL="https://api.openrouter.ai/api/v1"
Enter fullscreen mode Exit fullscreen mode
export ANTHROPIC_BASE_URL="https://litellm.yourcompany.com/v1"
Enter fullscreen mode Exit fullscreen mode

Richtig

export ANTHROPIC_BASE_URL="https://api.openrouter.ai/api"
Enter fullscreen mode Exit fullscreen mode
export ANTHROPIC_BASE_URL="https://litellm.yourcompany.com"
Enter fullscreen mode Exit fullscreen mode

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"}]}'
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Nicht verwenden:

export ANTHROPIC_API_KEY="sk-or-your-openrouter-key"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Lokaler vLLM-Server oder DeepSeek-Gateway mit API-Key

export ANTHROPIC_API_KEY="your-key-here"
export ANTHROPIC_BASE_URL="https://your-vllm-server"
Enter fullscreen mode Exit fullscreen mode

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",
  }
}
Enter fullscreen mode Exit fullscreen mode

Falsch: intelligente Anführungszeichen

{
  "env": {
    “ANTHROPIC_BASE_URL”: “https://openrouter.ai/api”
  }
}
Enter fullscreen mode Exit fullscreen mode

Richtig

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
    "ANTHROPIC_AUTH_TOKEN": "sk-or-your-openrouter-key"
  }
}
Enter fullscreen mode Exit fullscreen mode

JSON validieren

Mit Python:

python3 -c "import json, os; json.load(open(os.path.expanduser('~/.claude/settings.json')))" && echo "Gültiges JSON"
Enter fullscreen mode Exit fullscreen mode

Oder mit jq:

jq . ~/.claude/settings.json
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Wenn der Eintrag fehlt oder false ist, setzen Sie ihn manuell.

Minimal funktionierende ~/.claude.json

{
  "hasCompletedOnboarding": true,
  "primaryApiKey": "sk-placeholder"
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Oder innerhalb von Claude Code:

/status
Enter fullscreen mode Exit fullscreen mode

Wenn verwaltete Einstellungen aktiv sind, muss Ihr Administrator prüfen, ob:

  • Ihre Gateway-Domain erlaubt ist
  • Ihre Modell-IDs in availableModels enthalten sind
  • benutzerdefinierte Base-URLs blockiert werden

Für selbstverwaltete Unternehmensbereitstellungen liegen die Einstellungen beispielsweise unter macOS hier:

/Library/Application Support/ClaudeCode/managed-settings.json
Enter fullscreen mode Exit fullscreen mode

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"
  }
}
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Claude-Code-Konfiguration:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:4000",
    "ANTHROPIC_AUTH_TOKEN": "sk-litellm-your-key"
  }
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"}]
  }'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Beispiel-Header:

Authorization: Bearer {{authorization_token}}
anthropic-version: {{anthropic_version}}
anthropic-beta: {{anthropic_beta}}
Content-Type: application/json
Enter fullscreen mode Exit fullscreen mode

Beispiel-Body:

{
  "model": "{{model}}",
  "max_tokens": 100,
  "messages": [
    {
      "role": "user",
      "content": "hi"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

So können Sie OpenRouter, LiteLLM, vLLM oder ein internes Gateway testen, ohne Claude Code jedes Mal neu zu starten.

Apidog-Screenshot mit API-Anfragekonfiguration und Headern

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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:

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:

  1. Claude Code beenden
  2. Umgebungsvariablen oder settings.json ändern
  3. 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"
Enter fullscreen mode Exit fullscreen mode

Bei TLS-Inspection durch Unternehmens-Proxies setzen Sie zusätzlich:

export NODE_EXTRA_CA_CERTS="/path/to/corporate-ca-bundle.pem"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Entfernen Sie ein nachgestelltes /v1 aus ANTHROPIC_BASE_URL.
  2. Prüfen Sie ANTHROPIC_AUTH_TOKEN vs. ANTHROPIC_API_KEY.
  3. Validieren Sie ~/.claude/settings.json.
  4. Setzen Sie hasCompletedOnboarding: true bei Neuinstallationen.
  5. Prüfen Sie Header-Weiterleitung im Gateway.
  6. 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)