[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:
| Aspekt | Erwartet (Anthropic) | Aktuell (Fehlerhafte Implementierung) |
|---|---|---|
| Header-Name | x-api-key | Authorization |
| Header-Wert | sk-ant-… | Bearer sk-ant-… |
| Token-Format | Raw API-Key | OAuth 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
- Benutzer konfiguriert die Umgebungsvariable
ANTHROPIC_API_KEY - Image-Tool ruft die Methode
analyzeImage()auf - Provider konstruiert HTTP-Request mit
Authorization: Bearer sk-ant-... - Anthropic-API lehnt den Request mit
401 Invalid bearer tokenab - 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 wird401 authentication_error: Incorrect API key— Ähnlicher Fehler, deutet jedoch auf falsches Key-Format hin, nicht auf falschen Header401 authentication_error: No API key provided— Fehlenderx-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
| Issue | Beschreibung | Auflösung |
|---|---|---|
| GitHub Issue #421 | Ursprünglicher Bericht: “Image/vision tool auth error” | Aktuelle Lösung in Bearbeitung |
| PR #423 | Versuchter Fix mittels Umgebungsvariablen-Toggle | Aufgrund von Komplexität zurückgesetzt |
Commit a3f9d2c | Anthropic-Provider-Refaktorierung führte Bearer-Auth ein | Root-Commit der Regression |
Externe Referenzen
- Anthropic API Authentication Documentation — Offizielle Referenz für korrektes Header-Format
- Anthropic API Reference — Vollständige Header-Anforderungen für alle Endpunkte