コンテンツにスキップ

Claude Code 完全ガイド

Claude Code「API Error: 401」で/loginもできないときの解決手順

対象 / ポイント

対象: Claude Codeで API Error: 401 が出てログインも復旧もできなくなった開発者

ポイント:

  • 最初に /status を確認する。APIキーや外部プロバイダー認証がOAuthより優先される場合がある
  • 現行の復旧順序は /login、再発時は /logout の後に /login1
  • 認証ファイルの手動削除は、公式のログイン導線で戻れない場合だけ使う

Claude Codeの401エラーから認証元確認、環境変数解除、再ログイン、復旧確認へ進む診断フロー

エラーの全体像

ある朝、いつもどおり Claude Code を起動する。ターミナルに返ってくるのは赤いエラーメッセージだ。

API Error: 401 {"type":"error","error":{"type":"authentication_error",
"message":"Invalid authentication credentials"}}

Please run /login

指示どおり /login を実行しても、また401になる。この症状は、期限切れのOAuthログインだけでなく、古い環境変数が想定外の認証情報を優先している場合にも起きる12

このエラーには複数のバリエーションがある。

  • Invalid authentication credentials
  • Invalid API key
  • OAuth token has expired. Please obtain a new token or refresh your existing token.

メッセージごとに確認対象は違う。期限切れのOAuth、無効なAPIキー、停止されたConsole組織を同じ手順で扱うと、原因を見失う。


なぜ起きるのか

Claude Codeは、サブスクリプションOAuthより先に複数の認証元を評価する。外部プロバイダー、ANTHROPIC_AUTH_TOKENANTHROPIC_API_KEYapiKeyHelperCLAUDE_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キーを直接指定できる。

  1. Anthropic Console でAPI Keysからキーを発行
  2. 環境変数にセット
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認証と課金を意図した場合だけ使う。

関連記事


  1. Error reference - Claude Code Docs — 期限切れ・失効したOAuthトークンと無効なAPIキーの現行復旧手順。 

  2. Authentication - Claude Code Docs — 認証情報の保存先と認証優先順位。 

  3. Troubleshoot installation and login - Claude Code Docs — Keychain診断とログイントラブルシューティング。