Claude Media
Claude Code「Not logged in」エラーの原因と対処法

Claude Code「Not logged in」エラーの原因と対処法

Claude Codeで「Not logged in · Please run /login」と出る原因を、資格情報の不在・環境変数の見落とし・バックグラウンドセッション特有の事情に分けて切り分けます。

Claude Codeの「Not logged in」は資格情報が一つも見つからない状態

Not logged in · Please run /login は、このセッションで使える認証情報がどこにも見つからないときに出ます。/login で保存したログインも、ANTHROPIC_API_KEY も、apiKeyHelper も、どれも設定されていない状態です。裏を返せば、原因は「一度も認証していない」か「認証情報が今のシェル・今のセッションに届いていない」のどちらかしかありません。

まず /status を実行します。どの認証情報源が有効になっているか、有効になっていないなら何も無いことが一目で分かります。

/status
状況典型的な原因
初めて claude を起動した典型的な原因単純に未ログイン
以前はログインできていた典型的な原因環境変数・シェルの起動設定が変わった
CI・自動化・バックグラウンドセッションで出る典型的な原因インタラクティブなログインチェックが走らない環境
複数セッションを併用している典型的な原因保存済みログインが別プロセスの更新で失効した

通常のセッションでの対処

対話的に claude を起動している場合は /login を実行すれば解決します。

/login

ブラウザーが自動で開かない、あるいはSSH先やコンテナ内で開いても手元に届かない場合は c キーでログインURLをクリップボードにコピーし、手元のブラウザーに貼り付けます。ログイン完了後に表示されるコードをターミナルへ貼り付ける流れも用意されています。

ANTHROPIC_API_KEY で認証するつもりだった場合は、claude を起動したそのシェルで環境変数がexportされているかを確認します。IDE統合ターミナルやtmuxのペインなど、シェルが分かれていると設定が引き継がれないことがあります。

env | grep ANTHROPIC_API_KEY

CI・自動化での対処

対話的なログインが使えないCIパイプラインやスクリプトでは、/login は選択肢になりません。apiKeyHelper 設定でキーを都度取得するスクリプトを組むか、ANTHROPIC_API_KEY をパイプラインのシークレットとして直接渡します。長期間有効なOAuthトークンが必要な場合は claude setup-token で発行し、CLAUDE_CODE_OAUTH_TOKEN として渡す方法もあります。GitHub ActionsでClaude Codeを動かす具体的な設定はClaude CodeをGitHub Actionsに組み込むにまとまっています。

似ているが原因が違うエラーと区別する

「ログインしていない」ことを示すメッセージは複数あり、対処が変わります。混同すると /login を繰り返すだけで解決しないことがあります。

メッセージ意味対処
Not logged in · Please run /login意味資格情報がそもそも無い対処/login する
Login expired · Please run /login意味保存済みログインの更新にAPI側が失敗し、Claude Codeが認証情報を破棄した対処/login で再ログイン(system clockのズレも確認)
Anthropic profile login expired意味ANTHROPIC_PROFILE で選んだプロファイルの認証情報が期限切れ対処プロファイルを発行したツールで再認証
Could not resolve authentication method意味資格情報の解決自体がワーカープロセスまで届いていない対処起動元プロセスの環境変数を確認

Login expired は、Claude Codeが更新を試みてOAuthサービスに拒否された結果として出ます。Not logged in は最初から何も無い状態です。この違いは対処には影響しませんが(どちらも /login で直る)、システムクロックのズレが原因になるのは Login expired 側だという点は覚えておく価値があります。

バックグラウンドセッションと複数起動での注意

同じマシンで複数の claude セッションを並行して動かしている場合、保存済みのログインは共有され、更新のタイミングも調整されます。ただしv2.1.211より前では、スリープからの復帰時に2つのセッションが同時に同じトークンを更新しようとし、保存済みログインが失効して、開いていた全セッションが一斉に再ログインを求められる不具合がありました。

agent viewで複数セッションを常駐させている場合や、リモートで長時間動かしているセッションでは、ログインの有効期限そのものにも注意が必要です。期限が3日以内に迫るとv2.1.203以降は起動時に警告が出ますが、そのセッションを長期間放置していると警告を見る機会自体がありません。期限切れに気づかず動き続けたセッションは、資格情報が切れた時点で進捗が止まり、再ログインするまで復帰しません。

よくあるつまずき

macOSでKeychainがロックされている。ログイン自体はブラウザーで完了しているのに Not logged in のままという場合、Keychainのロック、またはKeychainのパスワードがアカウントのパスワードとずれていて保存に失敗していることがあります。claude doctor でKeychainへのアクセスを確認できます。

security unlock-keychain ~/Library/Keychains/login.keychain-db

それでも解消しない場合は、Keychain Accessアプリで login キーチェーンを選び、「編集」→「キーチェーン"login"のパスワードを変更」でアカウントのパスワードと同期させます。

シェル起動設定を経由しない環境変数.zshrc.bashrc に書いた export ANTHROPIC_API_KEY=... は、対話シェルからClaude Codeを起動したときは読み込まれますが、cronジョブやIDEの実行ボタンから直接プロセスを起動する場合は読み込まれないことがあります。設定した記憶があるのに /status で何も検出されない場合、この起動経路の違いを疑います。

/loginclaude auth loginの取り違え。ブラウザーへのペーストで認証コードが反映されない端末では、対話プロンプトの代わりに標準入力からコードを読み取る claude auth login を使う方が確実です。Windows Terminalなど貼り付けショートカットが特殊な環境で起きやすいつまずきです。

ログインフロー自体でつまずいている場合

/login を実行してブラウザーまでは開いたのに、そこから先で止まる場合は「資格情報が無い」のではなく「ログインフローが完了していない」別の状態です。次の2つのメッセージは Not logged in とは別物ですが、原因をNot logged inの延長で探してしまいがちです。

OAuth error: Invalid code. Please make sure the full code was copied が出る場合、ログインコードの有効期限切れかコピー時の欠落です。ブラウザーが開いたら手早くログインを完了させ、自動で開かない環境では c キーでURLをコピーして手元のブラウザーで開き直します。リモート・SSHセッションではブラウザーが別マシンで開くことがあるため、表示されたURLを手元のブラウザーへ貼り直す必要があります。

ログイン自体は完了したのに API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}} が出る場合は、認証自体は成功していて認可の問題です。Pro・Maxプランならサブスクリプションが有効か、Console利用なら自分のアカウントに「Claude Code」または「Developer」ロールが付与されているかを確認します。管理者はConsoleのSettings → Membersで付与できます。社内プロキシ経由の場合はプロキシがリクエストに干渉していないかも確認対象です。

これらは /login を繰り返しても直らない性質のエラーなので、Not logged in の対処と混ぜずに切り分けます。

クリーンに再ログインしてリセットする

原因がはっきりしない、あるいは上記のどれにも当てはまらない場合は、いったん /logout で完全にサインアウトし、claude を再起動して認証をやり直すのが最短です。

/logout

サインアウトと認証情報の削除範囲、OS別の保存先の違いはClaude Codeログアウトと認証情報の完全削除ガイドで扱っています。ログイン方式そのものを選び直したい場合はClaude Codeログイン方法3種の使い分けを確認してください。

よくある質問

/loginを実行してもブラウザーが開きません

c キーを押すとログインURLがクリップボードにコピーされます。SSH先やコンテナ内など、ブラウザーがClaude Codeのローカルコールバックサーバーに到達できない環境では、リダイレクトの代わりにログインコードが表示されるので、それをターミナルに貼り付けます。

サブスクリプションでログインしているのにNot logged inと出ます

ANTHROPIC_API_KEY が同じシェルに設定されていないか確認してください。キーが設定されていて未承認の場合、Not logged in ではなく別の認証エラーになりますが、キーの値そのものが空文字や不正な形式だと解決に失敗することがあります。/status でどの認証情報源が候補に上がっているかを確認するのが早道です。

資格情報はどこに保存されていますか

macOSでは暗号化されたKeychainに、Linuxでは ~/.claude/.credentials.json(パーミッション 0600)に、Windowsでは %USERPROFILE%\.claude\.credentials.json に保存されます。CLAUDE_CONFIG_DIR 環境変数を設定している場合は、Linux・Windowsではその配下に保存先が移ります。以前ログインできていたのに CLAUDE_CONFIG_DIR を変更した・新しいマシンやコンテナに移った後で Not logged in が出た場合、単純に資格情報の保存先が変わったか、その場所に資格情報がまだ無いだけということがあります。

WSL2やコンテナ内でだけこのエラーが出ます

WSL2やコンテナはホストと別のホームディレクトリ・別の環境を持つことが多く、/login で保存した資格情報がホスト側にしか無いケースがあります。WSL2・コンテナ内で改めて /login を実行してください。

Not logged inCould not resolve authentication methodはどう違いますか

前者は資格情報がどこにも無いことをClaude Codeが検知して出す通常のエラーです。後者はバックグラウンドセッションやクラウドセッションなど、対話的なログインチェックが走らない経路で、資格情報の解決処理自体がワーカープロセスまで届かなかったときに出ます。同じ「未認証」でも発生する場面が異なります。

まとめ

Not logged in は資格情報が一つも見つからない、原因が絞り込みやすいエラーです。対話セッションなら /login で解決し、CIや自動化では apiKeyHelperANTHROPIC_API_KEY を明示的に渡します。macOSでKeychainが絡む場合と、複数セッション・長時間セッションで保存済みログインが失効する場合だけは、単純な再ログインの前に一段掘り下げて確認する価値があります。

原因を切り分ける順番としては、①/status で資格情報の有無を確認、②見つからなければ起動しているシェル・プロセスの環境変数を確認、③それでも解決しなければ保存場所とKeychainの状態を確認、④似た文言のエラーと取り違えていないかを最後に確認、という流れがもっとも遠回りが少ない方法です。

この記事を共有:XはてブLinkedIn