Claude Code で突然 API Error: 401 Invalid authentication credentials や API Error: 500 Internal server error が出ると、まず「自分の設定が壊れたのか、Anthropic側の障害なのか」が分かりません。ここを取り違えると、直らない操作(logout → login → 再インストール)を何度も繰り返して時間を溶かします。実際、起票 #69706 の20件のコメントを読むと、性質の違う二つの401が一つのスレッドに混ざっていて、片方の直し方をもう片方に当てているせいで「何をやっても直らない」人が出ています。
この記事は、エラー本文と起票の報告に基づく切り分けです。エラーの文言そのものと、~/.claude/.credentials.json の構造は当方の環境で確認した事実として書き、各利用者の環境で何が起きたかは起票の報告に基づく伝聞として分けて書きます。
大原則:まずエラー番号で大きく二つに分ける
401と500は原因の場所がまったく違います。同じ「APIエラー」でも、やることが正反対です。
| エラー | 原因の場所 | あなたが直せるか |
|---|---|---|
| 500 / 503 / タイムアウト / 応答なし | ほぼAnthropicのサーバ側 | 直せない(待つ・リトライ) |
| 401 Invalid authentication credentials | クライアント側 または アカウント側 | 場合による(後述で二分) |
500 / 503 / タイムアウト = サーバ側。あなたは直せない
500 Internal server error は、エラー本文の中にすでに答えが書いてあります。
API Error: 500 Internal server error. This is a server-side issue,
usually temporary — try again in a moment.
If it persists, check https://status.claude.com.
This is a server-side issue(これはサーバ側の問題)と明記されています。503 Service Unavailable や、応答が返ってこないタイムアウトも同じ系統です。これらはあなたの設定では直りません。やることは三つだけです。
- status.claude.com を見る。障害が出ていれば確定で待ち。
- 少し待ってから一度だけ試す。500はたいてい一時的です。
- それでも続くなら、同じコマンドを連打しないこと。間隔を空けてリトライする(指数バックオフ=1秒、2秒、4秒…と待ち時間を倍にしていく)。
ここで大事なのは、同じ操作を即座に繰り返さないことです。サーバ側が一時的に詰まっているだけのとき、休まず連打すると、復旧を待つより遅くなります。500を見たら設定をいじり始める前に、まず status を見る。これだけで、直せないものを直そうとする無駄が消えます。
401 Invalid authentication credentials = 二つの別物が混ざっている
ここが本題です。401 Invalid authentication credentials には、見た目は同じでも原因の異なる二つの型があり、直し方が違います。#69706 で「logout も login も再インストールも効かない」と詰まっている人の多くは、自分がどちらの型かを確かめずに、もう片方の型の直し方を当てています。
型1:保存された資格情報が空・古い(クライアント側。あなたが直せる)
Claude Code は認証トークンを ~/.claude/.credentials.json(Windowsは資格情報ストア)に保存します。この中の refreshToken が空文字列になっていると、401が出ます。起票では、ある利用者がこのファイルを開いて refreshToken が空だったことを見つけ、別の生きているマシンから有効な refreshToken をコピーしたら動いた、と報告しています。
確かめ方(読むだけ。中身は秘密なので画面共有や貼り付けはしないこと):
# refreshToken が空文字列になっていないかだけ見る
cat ~/.claude/.credentials.json | grep -o '"refreshToken":"[^"]*"' | head -c 30
"refreshToken":"" のように値が空なら、この型1です。直し方:
- 環境変数を疑う。
echo $ANTHROPIC_API_KEYで値が入っていないか確認する。サブスク(OAuth)で使うつもりなのに、無効な、または別物のANTHROPIC_API_KEYやapiKeyHelperが設定されていると、そちらが優先されて401になることがあります。サブスクで使うなら、この環境変数を外してから login し直します。 - それでもなら、
~/.claude/.credentials.jsonをいったん削除して、claude loginで新規に取り直す。
ここまでが「あなたの手元で直せる」範囲です。
型2:アカウント・オンボーディング側(あなたには直せない。サポート案件)
一方、起票には手元の操作では一切直らない型が並んでいます。こちらは資格情報ファイルの問題ではないので、型1の直し方(ファイル削除・再login・再インストール)を当てても直りません。次のどれかに当てはまるなら型2です。
-
logout→login→~/.claude/.credentials.json削除 → 再インストール → 新しい setup-token の発行、まで全部やっても401が消えない(48時間続く例の報告あり)。 - サブスクのアカウントで login しようとすると、すでにMaxなのに「Maxにアップグレードしろ」という課金ページに飛ばされる。プランを選ぶと支払い画面に行き、ループから抜けられない。
- 一つのアカウントを複数人で共有していて、全員が同時に切断された(アカウントの同時利用が制限された可能性。これはあなたの設定では戻せません)。
- スマホのセッションは生きていて履歴も無事なのに、他の面からの新規ログインだけが落ちる。
型2は、Anthropic側のアカウントの状態か、ログイン基盤の問題です。やることは、手元の設定をいじり続けることではなく、サポートに起票することです。#69706 では複数の人がサポートチケットを出して人の返答待ちになっています。直らない操作を繰り返すより、型2だと見極めて待ちに入るほうが、結果的に早く前に進めます。
決定的な切り分け:先に資格情報ファイルを見る
logout/login の連打に入る前に、一度だけこの一手をやってください。どちらの型かが、ここでほぼ決まります。
ls -l ~/.claude/.credentials.json
cat ~/.claude/.credentials.json | grep -o '"refreshToken":"[^"]*"' | head -c 30
-
refreshTokenが空、または環境変数に余計なANTHROPIC_API_KEYが入っている → 型1。手元で直せる(ファイル削除+再login、環境変数を外す)。 - ファイルは正常に見えて、新しいトークンを取り直しても弾かれる、または課金ページのループに飛ばされる → 型2。サポート案件。手元の操作をやめてチケットを出す。
この順番が大事です。多くの人が詰まっているのは、型を確かめる前に型1の操作を繰り返しているからです。500を見たら status を見る、401を見たらまず資格情報ファイルを見る。原因の場所を先に特定すれば、直せないものを直そうとする時間が消えます。
一つだけ警告:401で焦って「APIキーで使う」を選ばないこと
この記事は応急の切り分けに絞りましたが、一点だけ、お金に関わる二次災害を書いておきます。401で締め出され、サポートにも返事が来ないと、人は「とにかく動かしたい」一心で、ログインの選択肢にある**「API キーで使う」を選びがち**です。デスクトップ版がそう勧めてくることすらあります。
しかしこれは認証の修理ではありません。API キーの口は、サブスクの枠とは別の、トークン量に応じた従量課金の口です。サブスクの401を避けるつもりで選ぶと、以後の作業は実費で課金され、しかも「いま従量で課金されている」という強い警告が出ないまま積み上がります。#69706 のスレッドにも、まさにこれで実費を溶かした報告があります。サブスクが生きているなら、直すべきは認証であって、課金の口を替えることではありません。
この「最初の故障より、慌てた次の一手のほうが回収できない損になる」二次災害と、logout で消えきらない OS のキーチェーン/資格情報マネージャーの掃除、画面のない環境(Codespaces・SSH先・Chromebook)で localhost の折り返しが届かず新しいトークンすら受け取れない型と setup-token の逃げ道までを、一段深くまとめたのが Claude Code 事故防止ハンドブック(¥800・第3章まで無料)の第55章です。この記事の応急処置で足りた方は、そこまでで十分かもしれません。深掘りが要るときの参照先として置いておきます。なお、サブスクの上に API キー(ANTHROPIC_API_KEY や apiKeyHelper)が乗って従量課金へ切り替わっている状態をセッション開始時に警告する無料の hook は、cc-safe-setup(MIT)に入れてあります。
この記事は、起票 #69706 と、その中で報告された500エラーの本文に基づいています。エラーの文言と ~/.claude/.credentials.json の構造は当方が確認した事実、各利用者の環境で何が起きたか(空の refreshToken、課金ループ、共有アカウントの同時切断)は起票の報告に基づく伝聞です。Anthropic側のサーバ・アカウントの状態は、当方からは観測できません。困っている人の役に立てばと思って、混ざっていた二つの401を切り分けました。