Claude Code のエラー

Invalid API key · Fix external API key

結論

鍵やトークンの途中に改行や全角文字が混ざり、送る前に止められた状態。表示の文字位置を打ち直す。

確認した版 Claude Code v2.1.283
確認日 2026年9月28日
最終更新 2026年9月28日
根拠 実機で確認

エラー文字列

Claude Code
Invalid API key · Fix external API key

⚠️ 標準出力に出ます。終了コードは 1 です。 API には何も送られていません。

何が起きているか

鍵やトークンを HTTP ヘッダとして送ろうとしたところ、ヘッダに入れられない文字が混ざっていました。 Claude Code は送る前に止めています。

⭐ 表示の後ろに、どの変数の何文字目かが出ます。 v2.1.283 で実測した表示です。

Invalid API key · Fix external API key · Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 10 (13 characters on 2 lines).

どの変数に混ざったかで、表示の頭が変わります。

表示の頭 混ざっていた場所
Invalid API key · Fix external API key ANTHROPIC_API_KEY
Invalid auth token · Fix external auth token ANTHROPIC_AUTH_TOKEN(実測)。CLAUDE_CODE_OAUTH_TOKEN も同じ扱いと公式に記載
Invalid ANTHROPIC_CUSTOM_HEADERS · Fix the environment variable ANTHROPIC_CUSTOM_HEADERS

🔴 末尾の改行ではこの表示にならない

v2.1.283 で、混ぜる位置だけを変えて実測しました(鍵はすべて無効な値)。

混ぜたもの 場所 結果
改行(LF・CRLF とも) 途中 この表示(it contains a line break at character 10)
全角スペース 途中 この表示(it contains a non-ASCII character)
ゼロ幅スペース 途中 この表示(it contains a zero-width character (U+200B))
曲がった引用符 “ 途中 この表示(it contains a typographic quote (U+201C))
改行 末尾 取り除かれて送られ、401 API key is invalid.
全角スペース 末尾 同上
BOM 先頭 同上
半角スペース 先頭・途中 同上(半角スペースはヘッダに入れられる)

settings.json の env.ANTHROPIC_API_KEY に書いた場合も、同じ表示になりました。

⭐ 日本語の環境で起きやすいのは全角スペースです。 途中に入ると、表示は a non-ASCII character になります。

⚠️ 先頭と末尾に付いたものは取り除かれてから送られるため、この表示にはなりません。 その場合は鍵として送られ、無効なら 401 API key is invalid. になります。

⚠️ つまり この表示が出たら、値の途中に何かが混ざっています。 貼り付け元の文書やチャットが、 見えない文字や改行を運んできたことがほとんどです。

直し方

1. 表示の「何文字目」を見る

at character 10 (13 characters on 2 lines) なら、10文字目が問題で、全体は13文字・2行に分かれています。 鍵の長さと行数が、自分の知っている鍵と合っているかだけでも確かめられます。

2. その変数を設定し直す

⚠️ 同じ場所から貼り直さないこと。 同じ文字がまた混ざります。発行元の画面からコピーし直すか、該当箇所を打ち直してください。

macOS / Linux

printf '%s' "$ANTHROPIC_API_KEY" | od -c | head -5

Windows(PowerShell)

$v = $env:ANTHROPIC_API_KEY
"長さ: {0}" -f $v.Length
"改行を含む: {0}" -f ($v -match "[`r`n]")
"ASCII 以外を含む: {0}" -f ($v -match '[^\x20-\x7E]')

⚠️ 鍵の全体を画面やログに出さないこと。 長さと「含むかどうか」で足ります。

3. ANTHROPIC_CUSTOM_HEADERS の場合

名前: 値 の形で、1行に1組書きます。

export ANTHROPIC_CUSTOM_HEADERS="X-Team: platform"

実測した表示です。どの組が悪いかは数えてくれますが、名前や値そのものは表示されません。

書いたもの 結果
値に曲がった引用符 X-Foo: b“r Invalid value for distinct header 1 of 1 parsed from ANTHROPIC_CUSTOM_HEADERS: it contains a typographic quote (U+201C) at character 2
名前に使えない記号 Invalid name for distinct header 1 of 1 parsed from ANTHROPIC_CUSTOM_HEADERS: the HTTP runtime does not accept it
コロンの無い行 X-Foo bar この表示にはならなかった(そのまま先へ進んだ)。書いたつもりのヘッダが効いていないことに気づけない

再発防止

  • 鍵は発行元の画面から直接コピーする。文書やチャットを経由させない
  • CI のシークレットは、貼り付けたあとに長さを確かめる
  • 表示に出る文字位置と行数を手がかりにする。値そのものは表示されないので、ログに残しても漏れない

この手順で直りませんでしたか?

環境を添えて報告いただければ、追加の原因を検証してこのページに反映します。

エラーを報告する