Claude Agent SDKがLiteLLMプロキシ使用時に非Anthropic形式のAPIキーを拒否する

Resolved 💬 1 comment Opened Feb 3, 2026 by nris-haga Closed Feb 4, 2026

概要

Claude Agent SDKをLiteLLMプロキシ経由で使用する際、sk-ant-*形式に一致しないAPIキーが拒否されます。実際のAPI呼び出しは成功するにもかかわらず、SDK内部で検証エラーが発生します。

環境

  • Claude Agent SDK バージョン: 0.1.27
  • Python バージョン: 3.12
  • LiteLLMプロキシ: 直接API呼び出しでは正常動作

問題の詳細

LiteLLMプロキシ経由でClaude Agent SDKを使用しようとしています。LiteLLMプロキシ自体は正しく設定されており、curlanthropic Python SDKでの直接API呼び出しは正常に動作します。

しかし、同じ設定でClaude Agent SDKを使用すると、「Invalid API key」エラーが発生します。

設定

export ANTHROPIC_BASE_URL=http://litellm:4000
export ANTHROPIC_API_KEY=sk-u8lt897KUjl1qXow1xPQmg  # LiteLLM形式
export CLAUDE_CODE_USE_BEDROCK=0

テスト結果

| 方法 | 結果 | 備考 |
|------|------|------|
| 直接API (curl/httpx) | ✅ 成功 | 正常に応答 |
| anthropic Python SDK | ✅ 成功 | base_urlパラメータで動作 |
| Claude Agent SDK | ❌ 失敗 | 「Invalid API key」エラー |

SDKからの応答

[1] Message type: SystemMessage
[2] Message type: AssistantMessage
    Text: Invalid API key · Fix external API key
[3] Message type: ResultMessage

根本原因の分析

Claude Agent SDKは内部でAPIキー形式を検証しており、Anthropicの直接APIで使用されるsk-ant-*パターンを期待しているようです。LiteLLM(および他のプロキシサービス)は異なるキー形式(sk-*)を使用しており、API呼び出しが行われる前に拒否されています。

期待される動作

ANTHROPIC_BASE_URLがカスタムエンドポイントに設定されている場合、SDKは以下のように動作すべきです:

  1. 任意のAPIキー形式を許可する(サーバー側で検証させる)
  2. または、クライアント側のキー形式検証を無効化する方法を提供する

回避策

現在、LiteLLMプロキシの代わりにAWS Bedrockを直接使用しています。代替案としてanthropic Python SDKを直接使用することも可能ですが、Claude Codeのツール機能(Read, Write, Bash等)が利用できなくなります。

再現手順

  1. Anthropic/BedrockバックエンドでLiteLLMプロキシを設定
  2. 環境変数を設定:

``bash
export ANTHROPIC_BASE_URL=http://litellm:4000
export ANTHROPIC_API_KEY=sk-your-litellm-key
export CLAUDE_CODE_USE_BEDROCK=0
``

  1. Claude Agent SDKで簡単なクエリを実行
  2. 「Invalid API key」エラーを確認

機能リクエスト

カスタムベースURLを使用する際のカスタムAPIキー形式のサポート、または環境変数によるクライアント側APIキー検証の無効化(例: CLAUDE_CODE_SKIP_API_KEY_VALIDATION=1)の追加をご検討ください。

---

AgenticBlueプロジェクト(Claude Agent SDKを使用したAgentic SOCプラットフォーム)より報告

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗