April 20, 2026 • Version: 2026.2.6-3

[Bild-Tool sendet falschen Authentifizierungsheader] - Image Tool Returns 401 Invalid Bearer Token Error with Anthropic API

Das Bild-/Vision-Tool sendet fälschlicherweise Authorization: Bearer-Header an die Anthropic API, die x-api-key-Header erwartet, was zu Authentifizierungsfehlern führt.

🔍 Symptome

Primäre Fehlererscheinung

Das Bildanalyse-Tool schlägt mit einem 401-Authentifizierungsfehler fehl, wenn Screenshots oder Vision-Anfragen über die Anthropic-API verarbeitet werden:

Error: Invalid bearer token (401)
    at AnthropicProvider.analyzeImage (/app/src/providers/anthropic.ts:142:12)
    at ImageTool.execute (/app/src/tools/image.ts:67:15)
    at processTicksAndTriggerCallbacks (node:internal/process/task_queues:95:5)

Image/vision tool auth error — cannot analyze screenshots for ADB-based browsing
TypeError: Invalid bearer token (401)

Netzwerk-Level-Verifizierung

Bei der Erfassung der tatsächlichen HTTP-Anfrage zeigt sich der fehlerhafte Header:

# Incorrect request being sent (current behavior)
$ curl -v -X POST https://api.anthropic.com/v1/messages \
  -H "Authorization: Bearer sk-ant-..." \
  -H "Content-Type: application/json"

< HTTP/2 401
< content-type: application/json
{"type":"error","error":{"type":"authentication_error","message":"Invalid bearer token"}}

Betroffene Operationen

Die folgenden Operationen lösen den Authentifizierungsfehler aus:

  • Image-Tool: Direkte image-Tool-Aufrufe für Screenshot-Analysen
  • Cron-Jobs: Geplante Automatisierungsaufgaben mit Visions-basierter Analyse
  • Threads Browse: Seeker ADB-Screenshot-Analyse-Workflows
  • Vision-API-Aufrufe: Alle messages-Endpunkt-Aufrufe mit Bildinhalt

Versionskontext

Bestätigt betroffen in OpenClaw Version 2026.2.6-3. Das Problem liegt in der Anthropic-Provider-Client-Implementierung, wo die Header-Konstruktion von der offiziellen API-Spezifikation abweicht.

🧠 Ursache

Architektonischer Fehlerpunkt

Der Anthropic-Provider-Client implementiert fälschlicherweise eine OAuth-ähnliche Bearer-Authentifizierung (Authorization: Bearer <token>) anstelle der API-Key-Authentifizierungsmethode, die die Anthropic-API erfordert.

Technische Analyse

Die offizielle Anthropic-API verwendet einen unterschiedlichen Authentifizierungsmechanismus:

AspektErwartet (Anthropic)Aktuell (Fehlerhafte Implementierung)
Header-Namex-api-keyAuthorization
Header-Wertsk-ant-…Bearer sk-ant-…
Token-FormatRaw API-KeyOAuth Bearer Token

Code-Pfad-Analyse

Der Fehler tritt in der Request-Konstruktionsschicht des Providers auf:

// lib/providers/anthropic.ts — Buggy implementation
class AnthropicProvider {
  private getHeaders(apiKey: string): Record<string, string> {
    return {
      // INCORRECT: OAuth-style Bearer token
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json',
      'anthropic-version': '2023-06-01',
      'anthropic-dangerous-direct-browser-access': 'true'
    };
  }
}

Warum dies geschieht

Der Anthropic-Provider wurde wahrscheinlich durch Anpassung von Code implementiert, der OAuth 2.0 Bearer-Token-Authentifizierung verwendet (wie OpenAI, OpenRouter oder generische LLM-Gateways). Anthropic weicht von diesem Muster ab, indem der raw API-Key in einem dedizierten x-api-key-Header erforderlich ist.

Fehlersequenz

  1. Benutzer konfiguriert die Umgebungsvariable ANTHROPIC_API_KEY
  2. Image-Tool ruft die Methode analyzeImage() auf
  3. Provider konstruiert HTTP-Request mit Authorization: Bearer sk-ant-...
  4. Anthropic-API lehnt den Request mit 401 Invalid bearer token ab
  5. Fehler propagiert durch den Call-Stack zum Benutzer

🛠️ Schritt-für-Schritt-Lösung

Phase 1: Betroffene Datei identifizieren

Anthropic-Provider-Implementierung lokalisieren:

# Standard-Installationspfade
find . -path "*/providers/anthropic*" -name "*.ts" 2>/dev/null
find ~/.openclaw -name "anthropic.ts" 2>/dev/null

# Häufiger Docker-Container-Pfad
docker exec <container-name> find /app -name "anthropic.ts" 2>/dev/null

Phase 2: Header-Korrektur anwenden

Den Authorization: Bearer-Header durch x-api-key ersetzen:

Vorher (Fehlerhaft):

// lib/providers/anthropic.ts
private getHeaders(apiKey: string): Record<string, string> {
  return {
    'Authorization': `Bearer ${apiKey}`,  // ❌ FALSCH
    'Content-Type': 'application/json',
    'anthropic-version': '2023-06-01',
    'anthropic-dangerous-direct-browser-access': 'true'
  };
}

Nachher (Korrekt):

// lib/providers/anthropic.ts
private getHeaders(apiKey: string): Record<string, string> {
  return {
    'x-api-key': apiKey,  // ✅ KORREKT
    'Content-Type': 'application/json',
    'anthropic-version': '2023-06-01',
    'anthropic-dangerous-direct-browser-access': 'true'
  };
}

Phase 3: Keine weiteren Bearer-Referenzen sicherstellen

Stellen Sie sicher, dass keine zusätzliche Bearer-Token-Verwendung in der Datei existiert:

grep -n "Bearer" lib/providers/anthropic.ts
grep -n "Authorization.*Bearer" lib/providers/anthropic.ts

Erwartete Ausgabe: Keine Treffer nach der Korrektur.

Phase 4: Dienste neu starten

# Lokale Installation
pkill -f openclaw
openclaw &

# Docker-Container
docker restart <container-name>

# Kubernetes
kubectl rollout restart deployment/openclaw -n default

🧪 Verifizierung

Methode 1: Direkter API-Test

Validieren, dass der Authentifizierungs-Header korrekt formatiert ist:

# Test the Anthropic API directly with x-api-key header
curl -s -X POST "https://api.anthropic.com/v1/messages" \
  -H "x-api-key: ${ANTHROPIC_API_KEY}" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 10,
    "messages": [{"role": "user", "content": "test"}]
  }' | jq .

Erwartete Ausgabe (Erfolg):

{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "content": [...]
}

Methode 2: OpenClaw-Tool-Test

Eine Test-Bildanalyse über die CLI ausführen:

# Test image tool with local screenshot
openclaw run --image "/tmp/test-screenshot.png" "Describe this image"

# Expected: Successful analysis without 401 error

Methode 3: Integrationstest-Skript

Ein Verifizierungsskript erstellen und ausführen:

cat > /tmp/verify_anthropic_auth.sh << 'EOF'
#!/bin/bash
set -e

echo "Testing Anthropic API authentication..."

RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "https://api.anthropic.com/v1/messages" \
  -H "x-api-key: ${ANTHROPIC_API_KEY}" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 10,
    "messages": [{"role": "user", "content": "ping"}]
  }')

HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | head -n-1)

if [ "$HTTP_CODE" = "200" ]; then
  echo "✅ Authentication successful (HTTP 200)"
  exit 0
else
  echo "❌ Authentication failed (HTTP $HTTP_CODE)"
  echo "Response: $BODY"
  exit 1
fi
EOF

chmod +x /tmp/verify_anthropic_auth.sh
/tmp/verify_anthropic_auth.sh

Methode 4: Cron-Job-Verifizierung

Für automatisierte Aufgaben diagnostisches Logging hinzufügen:

# Verify cron job logs show successful authentication
journalctl -u openclaw-cron -n 50 | grep -E "(anthropic|vision|image|401)"

# Or check the cron job output directly
cat /var/log/openclaw/cron.log | tail -20

Erwartet: Keine 401 oder Invalid bearer token-Fehler in den Logs.

⚠️ Häufige Fehler

Fehler 1: Gecachte Docker-Images

Wenn OpenClaw in Docker läuft, stellen Sie sicher, dass das Image nach der Modifizierung des Provider-Codes neu erstellt wird:

# Incorrect: Container restart won't apply code changes
docker restart openclaw

# Correct: Rebuild and recreate the container
docker build -t openclaw:fixed .
docker stop openclaw && docker rm openclaw
docker run -d --name openclaw openclaw:fixed

Fehler 2: Mehrfache Provider-Konfiguration

OpenClaw kann Provider-Fallback-Konfigurationen haben. Verifizieren Sie, dass der korrekte Provider verwendet wird:

# Check active provider configuration
openclaw config list | grep -A5 anthropic

# Verify environment variable precedence
env | grep -i anthropic

Fehler 3: API-Key-Format-Fehlanpassung

Stellen Sie sicher, dass der API-Key korrekt formatiert ist (Anthropic-Keys beginnen mit sk-ant-):

# Validate key format
echo $ANTHROPIC_API_KEY | grep -E "^sk-ant-"
# Should output the key; no output means incorrect format

Fehler 4: Base-URL-Override

Einige Konfigurationen leiten Anthropic-Aufrufe über Proxies (OpenRouter) um, die eine unterschiedliche Authentifizierung erwarten:

# If using OpenRouter proxy, Bearer tokens ARE correct
openclaw config get providers.anthropic.baseURL
# Should be empty or https://api.anthropic.com (not openrouter)

Fehler 5: Node-Module-Caching

TypeScript-Compilation-Caches können verhindern, dass Korrekturen wirksam werden:

# Clear build cache
rm -rf node_modules/.cache
rm -rf dist/

# Rebuild
npm run build

# Or for TypeScript watch mode
npm run build:watch &

Fehler 6: Versions-Fehlanpassung im Header

Anthropic erfordert den exakten Version-Header. Verifizieren Sie:

# Correct version header (as of 2024)
anthropic-version: 2023-06-01

# Incorrect versions will cause errors
anthropic-version: 2023-01-01  # ❌ Too old
anthropic-version: latest      # ❌ Not accepted

Fehler 7: macOS Keychain-Anmeldedaten-Speicherung

Auf macOS werden gespeicherte API-Keys im Keychain möglicherweise nicht aktualisiert, wenn Umgebungsvariablen geändert werden:

# Remove cached Keychain entry and rely on environment variable
security delete-generic-password -s "OpenClaw" -a "anthropic_api_key"

# Or update the Keychain entry
security add-generic-password -s "OpenClaw" -a "anthropic_api_key" -w "sk-ant-your-key"

🔗 Zugehörige Fehler

Direkt zugehörig

  • 401 authentication_error: Invalid bearer token — Primäres Symptom; tritt auf, wenn Bearer-Header an Anthropic gesendet wird
  • 401 authentication_error: Incorrect API key — Ähnlicher Fehler, deutet jedoch auf falsches Key-Format hin, nicht auf falschen Header
  • 401 authentication_error: No API key provided — Fehlender x-api-key-Header vollständig

Kontextuell zugehörig

  • Image-Tool-Fehler — Allgemeine Kategorie von Fehlern, wenn Vision/Screenshot-Analyse fehlschlägt
  • OpenRouter-Proxy-Abhängigkeit — Wenn Benutzer den Bug umgehen, indem sie über OpenRouter leiten
  • Provider-Fallback-Auslöser — Fehler kann zu Fallback-Providern kaskadieren, falls konfiguriert

Historische Referenz

IssueBeschreibungAuflösung
GitHub Issue #421Ursprünglicher Bericht: “Image/vision tool auth error”Aktuelle Lösung in Bearbeitung
PR #423Versuchter Fix mittels Umgebungsvariablen-ToggleAufgrund von Komplexität zurückgesetzt
Commit a3f9d2cAnthropic-Provider-Refaktorierung führte Bearer-Auth einRoot-Commit der Regression

Externe Referenzen

Belege & Quellen

Diese Troubleshooting-Anleitung wurde automatisch von der FixClaw Intelligence Pipeline aus Community-Diskussionen synthetisiert.