Claude Code「API Error: 401」で/loginもできないときの解決手順¶
対象 / ポイント
対象: Claude Codeで API Error: 401 が出てログインも復旧もできなくなった開発者
ポイント:
- 最初に
/statusを確認する。APIキーや外部プロバイダー認証がOAuthより優先される場合がある - 現行の復旧順序は
/login、再発時は/logoutの後に/loginだ1 - 認証ファイルの手動削除は、公式のログイン導線で戻れない場合だけ使う

エラーの全体像¶
ある朝、いつもどおり Claude Code を起動する。ターミナルに返ってくるのは赤いエラーメッセージだ。
API Error: 401 {"type":"error","error":{"type":"authentication_error",
"message":"Invalid authentication credentials"}}
Please run /login
指示どおり /login を実行しても、また401になる。この症状は、期限切れのOAuthログインだけでなく、古い環境変数が想定外の認証情報を優先している場合にも起きる12。
このエラーには複数のバリエーションがある。
Invalid authentication credentialsInvalid API keyOAuth token has expired. Please obtain a new token or refresh your existing token.
メッセージごとに確認対象は違う。期限切れのOAuth、無効なAPIキー、停止されたConsole組織を同じ手順で扱うと、原因を見失う。
なぜ起きるのか¶
Claude Codeは、サブスクリプションOAuthより先に複数の認証元を評価する。外部プロバイダー、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_API_KEY、apiKeyHelper、CLAUDE_CODE_OAUTH_TOKENの順に確認されるため、/loginで入り直しても別の認証情報が使われることがある2。
典型例は、シェル設定やプロジェクトの.envに残った古いAPIキーだ。先に使用中の認証元を特定すれば、不要なファイル削除を避けられる。
解決手順¶
使用中の認証元を確認し、意図しない上書きを外してから公式のログイン導線へ戻る。 認証ファイルの手動削除は最後に行う。
Step 1:使用中の認証情報を確認¶
Claude Code内で次を実行する。
/status
Claudeのサブスクリプションを使う場合は、APIキー系の環境変数が上書きしていないか確認する。
macOS / Linux / WSL:
env | grep ANTHROPIC
unset ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN
Windows PowerShell:
Get-ChildItem Env:ANTHROPIC*
Remove-Item Env:ANTHROPIC_API_KEY -ErrorAction SilentlyContinue
Remove-Item Env:ANTHROPIC_AUTH_TOKEN -ErrorAction SilentlyContinue
新しいターミナルで変数が復活する場合は、シェル設定、.envローダー、Windowsのユーザー環境変数から同じ設定を外す。
Step 2:再ログイン¶
Claude Code内で現行のログイン導線を使う1。
/login
同じセッションで401が再発する場合は、保存済みログインを明示的に消してから入り直す。
/logout
/login
Step 3:最後の手段として認証ファイルを削除¶
/logoutでも壊れた状態を消せない場合だけ使う。認証情報はmacOSではKeychain、Linuxでは~/.claude/.credentials.json、Windowsでは%USERPROFILE%\.claude\.credentials.jsonに保存される。LinuxまたはWindowsでCLAUDE_CONFIG_DIRを設定している場合は、その配下へ保存される2。
Linux / WSL:
rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.credentials.json"
Windows PowerShell:
$configDir = if ($env:CLAUDE_CONFIG_DIR) { $env:CLAUDE_CONFIG_DIR } else { "$env:USERPROFILE\.claude" }
Remove-Item "$configDir\.credentials.json" -Force -ErrorAction SilentlyContinue
macOSでは、未確認のKeychainサービス名をコマンドへ直書きせず、Keychain Accessまたはclaude doctorで状態を確認する3。
Step 4:動作確認¶
Claude Codeを起動し、対話セッション内で以下を実行する。
/status
アカウント情報(認証方式、サブスクリプションタイプ)が表示されれば復旧完了だ。
それでも直らない場合¶
再認証で解決しない場合は、バージョン、課金経路、サービス状態を確認する。
Claude Codeのバージョンを更新する¶
古いバージョンでは認証フローやキャッシュ処理に修正前の挙動が残っている場合がある。
claude update
claude --version
APIキーで直接認証する(OAuth回避)¶
Anthropic Console側の認証と課金を意図的に使う場合は、APIキーを直接指定できる。
- Anthropic Console でAPI Keysからキーを発行
- 環境変数にセット
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxx"
ANTHROPIC_API_KEYは承認後にサブスクリプションOAuthより優先され、キーに紐づくConsoleアカウントが使われる2。予備キーを常時exportすると、失効したキーや停止済み組織が同じ認証エラーを起こす。課金経路も変わるため、必要なターミナルや自動化だけに限定する。
サービス障害の確認¶
認証エラーに見えて、実はAnthropicのインフラ障害という場合もある。
障害中は認証系のエンドポイントも影響を受けるため、復旧を待つしかない。
再発防止のためにできること¶
次に同じ問題が起きたとき、復旧までの時間を短くするための実践だ。
/statusで認証元を確認してからファイルや環境変数を変更する- APIキー系の環境変数は、必要なターミナルや自動化だけに限定する
- Claude Codeを定期的に更新し、認証まわりの修正を取り込む
まとめ¶
Claude Codeの401は、すべて同じ原因ではない。/statusと認証優先順位を確認すれば、OAuth、APIキー、helper、外部プロバイダーのどこで失敗しているかを切り分けられる。
最初は/login、再発時は/logoutの後に/loginを使う。認証ファイルの削除はその導線で戻れない場合だけに限定し、APIキーはConsole認証と課金を意図した場合だけ使う。
関連記事¶
- Claude Code 完全ガイド
- Claude Code リファレンスガイド
- Claude Code「command not found / not recognized」エラー対策
- Claude Code Windows ネイティブインストールガイド
- Claude Code 自動実行許可完全ガイド
- Claude Code × Codex CLI レビューループ自動化
Error reference - Claude Code Docs — 期限切れ・失効したOAuthトークンと無効なAPIキーの現行復旧手順。 ↩↩↩
Authentication - Claude Code Docs — 認証情報の保存先と認証優先順位。 ↩↩↩↩
Troubleshoot installation and login - Claude Code Docs — Keychain診断とログイントラブルシューティング。 ↩