April 20, 2026 • バージョン: 2026.2.6-3

[Anthropic APIで画像ツールが401無効なBearerトークンエラーを返す] - Image Tool Returns 401 Invalid Bearer Token Error with Anthropic API

画像/ビジョンツールがAnthropic APIにAuthorization: Bearerヘッダーを誤って送信するため、x-api-keyヘッダーを期待する認証が失敗します。

🔍 症状

主なエラー現象

画像分析ツールが、スクリーンショットの処理またはAnthropic API 통한ビジョンツールのリクエスト時に401認証エラーで失敗します:

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)

ネットワークレベルの確認

実際のHTTPリクエストをキャプチャすると、誤 구성된ヘッダーが明らかになります:

# 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"}}

影響を受ける操作

以下の操作で認証失敗が発生します:

  • 画像ツール: スクリーンショット分析用の直接imageツール呼び出し
  • Cron Jobs: ビジョン 기반 분석을 수행하는 예약 자동화 작업
  • Threads Browse: Seeker ADBスクリーンショット分析ワークフロー
  • Vision API Calls: 画像コンテンツを含むすべてのmessagesエンドポイント呼び出し

バージョン情報

OpenClawバージョン2026.2.6-3で影響が確認されています。問題は、公式API仕様とは異なるヘッダー構築を行うAnthropicプロバイダークライアントの実装に起因しています。

🧠 原因

アーキテクチャ上の問題点

Anthropicプロバイダークライアントは、AnthropicのAPIが必要とするAPIキー認証方式ではなく、OAuthスタイルのBearer認証(Authorization: Bearer <token>)を誤って実装しています。

技術的分析

Anthropicの公式APIは固有の認証メカニズムを使用しています:

側面期待値(Anthropic)実際の値(バグのある実装)
ヘッダー名x-api-keyAuthorization
ヘッダー値sk-ant-…Bearer sk-ant-…
トークン形式生APIキーOAuth Bearerトークン

コードパスの分析

失敗はプロバイダーのリクエスト構築レイヤーで発生します:

// 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'
    };
  }
}

発生原因

Anthropicプロバイダーは、OAuth 2.0 Bearerトークン認証(OpenAI、OpenRouter、汎用LLMゲートウェイなど)を使用するプロバイダーからコードを adapta して実装された可能性があります。Anthropicは、生のAPIキーを専用のx-api-keyヘッダーで必要とする点で、このパターンとは異なるています。

失敗シーケンス

  1. ユーザーがANTHROPIC_API_KEY環境変数を設定する
  2. 画像ツールがanalyzeImage()メソッドを呼び出す
  3. プロバイダーがAuthorization: Bearer sk-ant-...でHTTPリクエストを構築する
  4. Anthropic APIが401 Invalid bearer tokenでリクエストを拒否する
  5. エラーがコールスタックを通じてユーザーに伝播する

🛠️ 解決手順

フェーズ1: 影響を受けるファイルの特定

Anthropicプロバイダーの実装をさがします:

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

# Common Docker container path
docker exec <container-name> find /app -name "anthropic.ts" 2>/dev/null

フェーズ2: ヘッダーの修正の適用

Authorization: Bearerヘッダーをx-api-keyに置き換えます:

修正前(不正解):

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

修正後(正解):

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

フェーズ3: その他のBearer参照の確認

ファイルに追加のBearerトークン使用がないことを確認します:

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

期待される出力:修正後の一致なし。

フェーズ4: サービスの再起動

# Local installation
pkill -f openclaw
openclaw &

# Docker container
docker restart <container-name>

# Kubernetes
kubectl rollout restart deployment/openclaw -n default

🧪 検証

方法1: 直接APIテスト

認証ヘッダーが正しくフォーマットされていることを確認します:

# 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 .

期待される出力(成功):

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

方法2: OpenClawツールテスト

CLIを通じてテスト画像分析を実行します:

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

# Expected: Successful analysis without 401 error

方法3: 統合テストスクリプト

検証スクリプトを作成して実行します:

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

方法4: Cron Jobの検証

自動化タスクの場合、診断ログを追加します:

# 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

期待されること: ログに401またはInvalid bearer tokenエラーがないこと。

⚠️ よくある落とし穴

落とし穴1: キャッシュされたDockerイメージ

DockerでOpenClawを実行している場合、プロバイダーコードの修正後にイメージをリビルドしてください:

# 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

落とし穴2: 複数のプロバイダー設定

OpenClawにはプロバイダーのフォールバックが設定されている場合があります。正しいプロバイダーが使用されていることを確認します:

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

# Verify environment variable precedence
env | grep -i anthropic

落とし穴3: APIキー形式の不一致

APIキーが正しくフォーマットされていることを確認します(Anthropicキーはsk-ant-で始まります):

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

落とし穴4: ベースURLの上書き

一部の設定では、Anthropicの呼び出しがプロキシ(OpenRouter)を通じてリダイレクトされ、異なる認証 ожидаされます:

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

落とし穴5: Nodeモジュールのキャッシュ

TypeScriptコンパイルのキャッシュにより、修正が反映されない場合があります:

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

# Rebuild
npm run build

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

落とし穴6: ヘッダーのバージョンの不一致

Anthropicは正確なバージョンヘッダーを必要とします。確認してください:

# 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

落とし穴7: macOSキーチェーン認証情報の保存

macOSでは、キーチェーンに保存されたAPIキーは環境変数が変わっても更新されない場合があります:

# 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"

🔗 関連するエラー

直接的な関連

  • 401 authentication_error: Invalid bearer token — 主な症状。BearerヘッダーがAnthropicに送信されたときに発生
  • 401 authentication_error: Incorrect API key — 類似のエラーだが、ヘッダーではなくキー形式が間違っていることを示す
  • 401 authentication_error: No API key providedx-api-keyヘッダーが完全に欠落している

文脈的な関連

  • 画像ツールの失敗 — ビジョン/スクリーンショット分析が失敗した場合の一般的なエラーカテゴリ
  • OpenRouterプロキシへの依存 — ユーザーはOpenRouter経由でルーティングすることでこのバグを回避しようとする
  • プロバイダーフォールバックのトリガー — フォールバックが設定されている場合、エラーはフォールバックプロバイダーにカスケードする可能性がある

過去の参照

IssueDescriptionResolution
GitHub Issue #421初回報告: “Image/vision tool auth error”現在の修正が進行中
PR #423環境変数トグルを使用した修正の試み複雑性により元に戻された
Commit a3f9d2cBearer認証を導入したAnthropicプロバイダーリファクターリグレッションの根本コミット

外部参照

エビデンスとソース

このトラブルシューティングガイドは、FixClaw Intelligence パイプラインによってコミュニティの議論から自動的に合成されました。