$cd ../troubleshooting/
High🧠 Models
Anthropic API 401 — キー欠落・期限切れ・設定ミス
// OpenClawがClaudeを呼び出す際、gatewayログにapi.anthropic.comからのHTTP 401が出ると、モデルは一切実行されません — エージェントがハング、ハートビート失敗、Discord/Telegramには汎用の「プロバイダーエラー」のみ。429レート制限と異なり401は認証そのものの失敗:課金未設定、失効・ typo キー、誤ったsk-ant-プレフィックス、またはキーが誤った設定フィールドにあり古いANTHROPIC_API_KEY環境変数がopenclaw.jsonを上書き。本非公式ガイドではconsole.anthropic.comでのキー確認、~/.openclaw/openclaw.jsonのprovidersへの正しい配置、envと設定の不一致解消を説明します。
diagnose.sh
🔍 これがあなたの問題ですか?
?ログにapi.anthropic.comからの `401` または `authentication_error`
?エージェントが即失敗しモデル応答なし — 遅延でも429でもない
?最近キー作成したがAnthropicコンソールで課金未追加
?キーがsk-ant-ではなくsk-(OpenAI形式)で始まる
?.envにキー設定したがopenclaw.jsonに別(空)キーが残る
verify_key.sh
✅ 修正1 — キー形式とAnthropicコンソールを確認
プレフィックス確認とAnthropic APIへのlive認証
# キー形状確認(公開ログにフルキーを貼らない)
echo "$ANTHROPIC_API_KEY" | head -c 12
# 期待プレフィックス:sk-ant-api
# キーを直接テスト
curl -s 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-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'コンソール確認:課金 + キーアクティブ状態
# ブラウザ:console.anthropic.com # 1. Settings → Billing — 支払い方法有効 # 2. Settings → API Keys — キー状態 Active # 3. 不明なら再生成;旧キー失効 # 設定照合用に新キー末尾4文字をメモ
openclaw.json
✅ 修正2 — openclaw.jsonにプロバイダーキーを設定
キーはproviders;agent provider idは一致必須
// ~/.openclaw/openclaw.json — providersセクション
{
"providers": [
{
"id": "anthropic",
"type": "anthropic",
"apiKey": "sk-ant-api03-XXXXXXXX"
}
],
"agents": {
"defaults": {
"provider": "anthropic",
"model": "claude-sonnet-4-20250514"
}
}
}シークレットは.env推奨;編集後gateway再起動
# またはインラインキーの代わりに環境変数参照 # openclaw.json: # "apiKeyEnv": "ANTHROPIC_API_KEY" # ~/.openclaw/.env ANTHROPIC_API_KEY=sk-ant-api03-XXXXXXXX # 設定検証 openclaw doctor openclaw gateway restart
env_override.sh
✅ 修正3 — ANTHROPIC_API_KEY環境変数オーバーライドを解消
ホスト上の全ANTHROPIC_API_KEYソースを特定
# 環境変数オーバーライドを検索 env | grep -i ANTHROPIC grep -r ANTHROPIC ~/.config/systemd/user/ 2>/dev/null # 設定ファイルと比較 grep -i anthropic ~/.openclaw/openclaw.json grep ANTHROPIC ~/.openclaw/.env 2>/dev/null
envはjsonより優先 — 古いEnvironment=行を削除
# systemdから古いオーバーライド削除(例) # ~/.config/systemd/user/openclaw-gateway.service を編集 # 削除:Environment=ANTHROPIC_API_KEY=old-value systemctl --user daemon-reload systemctl --user restart openclaw-gateway # gatewayが正しいキーを見ているか確認 openclaw gateway status
💡 プロのヒント:シークレットは単一の真実の源
Anthropicキーは ~/.openclaw/.env か openclaw.json providers のどちらか一方に — 異なる値で両方は不可。環境変数は設定を静かに上書き。変更後はgatewayを再起動し、ハートビート再開前に1メッセージでテスト。
🛡️ 予防チェックリスト
- • console.anthropic.comで課金有効化済みキーを作成 — クレジットなし無料キーは即401になりがち
- • sk-ant-api03-プレフィックスを使用;OpenAI形式sk-キーはAnthropicエンドポイントで動作しない
- • ローテーション毎に更新しない限りsystemdユニットにANTHROPIC_API_KEYを書かない
- • providers編集後 `openclaw doctor` — 本番チャネル前に欠落キーを検出
- • liveキーをGitHub issueに貼らない;漏洩時はローテーション
❓ FAQ
Q1. OpenClawログでAnthropic 401はどう見えますか?
典型的には `Anthropic API error: 401`、`authentication_error`、`invalid x-api-key`。gatewayは短時間リトライ後プロバイダーを unhealthy に。エージェントはツール呼び出し前に失敗。debugログ(log_level: debug)でHTTPレスポンス全文を確認 — AnthropicのJSONで無効キー・課金欠如・組織ミスを区別可能。
Q2. curlでは動くがOpenClawでは動かない — なぜ?
OpenClawはsystemd、launchd、Docker compose、~/.openclaw/.envのANTHROPIC_API_KEYから別キーを読んでいる可能性。手動curlで試したキーと異なる。`openclaw config get providers`で末尾4文字を比較。agents.defaults.providerのidが設定したanthropicエントリと一致するか確認 — provider名typoは空資格情報に落ちる。
Q3. Anthropic有料アカウントは必要?
多くの地域でAPIアクセスには課金設定が必要。コンソールでキー作成できても、支払い方法と使用量制限が有効になるまで401。console.anthropic.com/settings/billingを確認。チーム/組織キーは生成時に正しいワークスペース選択が必要。トライアルクレジット失効も401類似エラーの原因。
Q4. openclaw.jsonのどこにキーを置く?
providers配列にtype anthropic(またはエージェントが参照するid)のオブジェクトを追加・編集。例:`{ "id": "anthropic", "type": "anthropic", "apiKey": "sk-ant-api03-..." }`。またはapiKeyEnv: "ANTHROPIC_API_KEY"と ~/.openclaw/.env のみに設定。チャネルセクションや無関係なagentフィールドにキーを置かない — providerブロックのみがモデル認証を供給。
Q5. 直接Anthropicキーを避けAWS BedrockやVertexは使える?
OpenClawバージョンがそれらプロバイダータイプをサポートすれば可能。Bedrockはsk-ant-の代わりにIAMロール。別providerエントリを設定しagents.defaults.providerを向ける。console.anthropic.com課金は回避するがクラウドIAM設定が必要。ホームラボMac Miniでは直接Anthropic APIが簡単とのコミュニティ報告。
Q6. キーローテーション後に他に更新すべきは?
旧キーをコピーした全箇所:~/.openclaw/.env、openclaw.json providers.apiKey、Docker compose environment、systemd Environment=行、リモートエージェントのCIシークレット。変更後gateway再起動。コンソールで失効した旧キーは即401 — 猶予なし。公式プロジェクト:github.com/openclaw/openclaw。