development·

Claude Code「Not logged in · Please run /login」の意味と対処法

Claude Code の「Not logged in · Please run /login」は、使える資格情報が1つも見つからないという意味です。初回起動、claude -p・CI・Agent SDK、--bare、CLAUDE_CONFIG_DIR、コンテナ、ラッパー別に見分け方と直し方を実機出力つきで解説。

Claude Code「Not logged in · Please run /login」の意味と対処法
Not logged in · Please run /login

このメッセージは、Claude Code がそのセッションで使える資格情報(ログイン情報・API キー・トークン)を1つも見つけられなかったという意味です。ログイン情報が「期限切れ」なのではなく、「そもそも見えていない」状態です。対話モードなら /login、ターミナルからなら claude auth login でログインすれば解消します。ログイン済みなのに出る場合は、claude -p や CI、Obsidian のプラグインなど、ログインしたときとは別の環境で Claude Code が起動していることがほとんどです。

この記事を読むとわかること

  • このメッセージの正確な意味と、似たメッセージ「Login expired」との違い
  • 「ログインしたはずなのに出る」ときに、どの環境で資格情報が見えていないかを1コマンドで確かめる方法
  • claude -p・CI・Agent SDK・--bare・コンテナで認証を通す方法
  • error: authentication_failed が前に付いて表示されるケース(Claudian などのラッパー)
  • Claude Code v2.1.282 で実際に再現した出力

内容は2026年9月25日時点(Claude Code v2.1.282)の公式ドキュメントと手元での実行結果にもとづいています。実機で確認した内容とドキュメント記載の内容は書き分けています。

メッセージの意味:資格情報が「ない」状態

公式のエラーリファレンス(Error referenceの「Not logged in」)は、このメッセージを「このセッションで有効な資格情報がない」状態と説明しています。

Claude Code が認証に使える資格情報は複数あり、上から順に探して最初に見つかったものを使います(Authenticationの「Authentication precedence」)。

順位資格情報主な用途
1クラウドプロバイダーの認証(CLAUDE_CODE_USE_BEDROCK などを設定したとき)Amazon Bedrock・Google Cloud・Microsoft Foundry
2環境変数 ANTHROPIC_AUTH_TOKENLLM ゲートウェイ・プロキシ
3環境変数 ANTHROPIC_API_KEYClaude Console の API キー
4apiKeyHelper スクリプトの出力保管庫から取り出すキー
5環境変数 CLAUDE_CODE_OAUTH_TOKENclaude setup-token で作る長期トークン
6Anthropic プロファイル・フェデレーション認証ant CLI、Workload Identity Federation
7/login で保存したサブスクリプションのログインPro・Max・Team・Enterprise の通常利用

このどれも見つからないと Not logged in · Please run /login になります。キーが間違っている場合は別のメッセージ(Invalid API key や 401)になるので、このメッセージが出た時点で「キーが無効」ではなく「キーが渡っていない」と考えて構いません。

表示される場所

  • 対話モードの CLI・VS Code 拡張:プロンプトを送ったときに表示されます
  • claude -p(非対話実行):標準出力にこの1行が出て、終了コード1で終わります
  • Agent SDK や、Claude Code を内部で呼ぶツール:実機で --output-format stream-json を確認すると、アシスタントのメッセージに "error": "authentication_failed" が付き、本文が Not logged in · Please run /login でした。ラッパーによっては、この2つを連結して Error: authentication_failedNot logged in · Please run /login のように表示します(Obsidian プラグイン Claudian の報告例)

なお、エージェントビューのバックグラウンドセッションやクラウドセッションでは、同じ状態が Could not resolve authentication method. Expected one of apiKey, authToken, ... という別の文言で出ます。対話モード・-p・Agent SDK では、この文言はデバッグログにだけ書かれます(Error reference の「Could not resolve authentication method」)。

まず確認:今の環境で資格情報が見えているか

原因を切り分ける一番の近道は、エラーが出たのと同じ環境で次のコマンドを実行することです。

claude auth status --text

資格情報が何もなければ、実機では次のように表示されました(v2.1.282)。

Anthropic base URL: https://api.anthropic.com
Not logged in. Run claude auth login to authenticate.

--text を付けない場合は JSON で、"loggedIn": false、"authMethod": "none" と、どの設定ディレクトリを見ているか(configDirectory)が表示されます。ログイン済みのはずなのに loggedIn が false なら、そのディレクトリがログインしたときと違う可能性があります。対話モードの中では /status で同じ情報を確認できます。

原因と見分け方

よくある順に並べています。

原因見分け方対処
まだログインしていない(インストール直後、/logout 後、新しいマシン)対話モードでも出る/login または claude auth login
claude -p・cron・CI・SDK が、ログインした環境とは別の環境で動いている手元の対話モードでは動く。自動実行だけ失敗する実行環境に ANTHROPIC_API_KEY か CLAUDE_CODE_OAUTH_TOKEN を渡す
--bare を付けている--bare を外すと動くANTHROPIC_API_KEY か apiKeyHelper を使う
CLAUDE_CONFIG_DIR がログイン時と違うclaude auth status の configDirectory が想定と違うログインしたときと同じ値にそろえる
コンテナや Dev Container を作り直した再ビルドのたびに出る設定ディレクトリをボリュームに保存する
エディタやプラグインが、シェルの環境変数を引き継いでいないターミナルでは動き、アプリ経由だけ失敗するアプリ側の設定で環境変数を渡すか、ターミナルから起動する

対処法

1. ログインしていない:/login で認証する

対話モードなら /login、シェルからなら次のコマンドでログインします。

claude auth login

ブラウザが開かない場合は、ログイン画面で c を押すと URL がクリップボードにコピーされます。SSH 先・WSL2・コンテナでは、ブラウザでサインインしたあとに表示されるコードを、ターミナルの Paste code here if prompted に貼り付けて完了させます(Authenticationの「Log in to Claude Code」)。

ブラウザ側で OAuth error: Invalid code が出て進めない場合は、「OAuth error: Invalid code」の対処法を参照してください。プランや料金の選び方はClaude Code の料金プラン比較にまとめています。

2. claude -p・CI・cron で出る:実行環境に資格情報を渡す

/login の情報は、ログインしたユーザーの設定ディレクトリ(既定は ~/.claude)に保存されます。CI ランナー、別ユーザーで動く cron、コンテナの中からは見えません。ブラウザでログインできない環境では、次のどちらかを環境変数で渡します。

サブスクリプション(Pro・Max・Team・Enterprise)を使う場合は、手元のマシンで1年有効のトークンを発行します。

claude setup-token

表示されたトークンはどこにも保存されないので、コピーして CI のシークレットに登録し、実行環境で設定します(Authenticationの「Generate a long-lived token」)。

export CLAUDE_CODE_OAUTH_TOKEN=発行したトークン
claude -p "テストを実行して結果を要約して"

このトークンはモデルへのリクエスト専用で、Remote Control や claude.ai コネクタには使えません。

API キーで従量課金する場合は、Claude Console で発行したキーを設定します。

# macOS / Linux
export ANTHROPIC_API_KEY=発行したキー
# Windows PowerShell
$env:ANTHROPIC_API_KEY = "発行したキー"

-p では、ANTHROPIC_API_KEY があれば確認なしで必ず使われます。キーを定期的に入れ替える運用なら、キーを返すスクリプトを apiKeyHelper に設定する方法もあります。API での開発全般はClaude Code × API 開発ガイドで解説しています。

3. Agent SDK で出る:ANTHROPIC_API_KEY を設定する

Agent SDK のクイックスタートは、Not logged in や Invalid API key が出たら、エージェントを実行するシェルで ANTHROPIC_API_KEY が設定されているかを確認するよう案内しています。SDK は .env ファイルを自動では読み込みません(Agent SDK quickstart)。

同じページには、事前の承認がない限り、第三者の開発者が自社製品(Agent SDK で作ったエージェントを含む)で claude.ai のログインを提供することは認められていない、とも書かれています。自社サービスに組み込む場合は API キーでの認証を前提に設計してください。実装の全体像はClaude Agent SDK 実装ガイドにまとめています。

4. --bare を付けている:OAuth は読まれない

--bare は起動を速くするためのモードで、OAuth の資格情報もシステムのキーチェーンも読みません(Run Claude Code programmaticallyの「Start faster with bare mode」)。CLAUDE_CODE_OAUTH_TOKEN も読まれないため、setup-token のトークンだけを渡していると Not logged in になります。実機でも、CLAUDE_CODE_OAUTH_TOKEN を設定した状態で --bare を付けると Not logged in · Please run /login になり、同じ環境で --bare を外すと認証処理に進みました。--bare を使うなら ANTHROPIC_API_KEY か apiKeyHelper で認証します。

5. CLAUDE_CONFIG_DIR が違う:ログインした場所をそろえる

CLAUDE_CONFIG_DIR を設定すると、資格情報もそのディレクトリ側で管理されます。macOS ではキーチェーンの項目もディレクトリごとに分かれるため、値が違うセッションは別のログイン情報を読みます(Authenticationの「Credential management」)。仕事用と個人用を alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude' のように分けている場合、片方でしかログインしていなければ、もう片方では Not logged in になります。claude auth status の configDirectory で、どちらを見ているかを確認してください。

資格情報の保存場所は OS によって違います。

OS保存場所
macOS暗号化された macOS キーチェーン(書き込めないときは ~/.claude/.credentials.json)
Linux~/.claude/.credentials.json(パーミッション 0600)
Windows%USERPROFILE%\.claude\.credentials.json

CLAUDE_CONFIG_DIR を設定している場合は、~/.claude の代わりにそのディレクトリが使われます。

6. コンテナ・Dev Container:設定ディレクトリを残す

コンテナのホームディレクトリは再ビルドで消えるため、そのたびにログインし直しになります。公式の Dev Container ガイドは、~/.claude に名前付きボリュームをマウントし、CLAUDE_CONFIG_DIR を同じパスに設定する構成を示しています。ログイン状態を持つ .claude.json は ~/.claude の外にあるため、ボリュームをマウントするだけではログインは保持されません(Development containersの「Persist authentication and settings across rebuilds」)。

"mounts": [
  "source=claude-code-config,target=/home/node/.claude,type=volume"
],
"containerEnv": {
  "CLAUDE_CONFIG_DIR": "/home/node/.claude"
}

コンテナ運用の全体像はClaude Code × Docker 活用ガイドを参照してください。

7. プラグイン・エディタ経由だけで出る

Obsidian の Claudian のように Claude Code を内部で呼び出すツールでは、ツール側のプロセスから見える環境がターミナルと違うことがあります。上の Claudian の報告では、Linux 環境で authentication_failed と Not logged in が出たうえ、ツールの中で /login を実行しても「この環境では使えない」と表示されています。この場合は、同じユーザー・同じ CLAUDE_CONFIG_DIR でターミナルから claude auth login を実行してから、ツールを再起動してください。環境変数で認証している場合は、ツールのプロセスにその変数が渡っているかを確認します。公式ドキュメントも、ターミナルでは動くのに IDE の拡張では動かない場合、IDE のプロセスがシェルの環境を引き継いでいない可能性を挙げています(Troubleshoot installation and loginの「Bedrock, Agent Platform, or Foundry credentials not loading」)。

実機での再現結果

2026年9月25日に、macOS 上の Claude Code v2.1.282 を、空の設定ディレクトリと、認証関連の環境変数をすべて外した状態で実行しました(本物の資格情報は使っていません)。

$ claude -p "hi"
Not logged in · Please run /login
(終了コード 1)

--output-format json では "is_error": true、"terminal_reason": "api_error"、"result": "Not logged in · Please run /login" でした。--output-format stream-json --verbose では、アシスタントのメッセージに "error": "authentication_failed" が付いていました。ラッパーで authentication_failed と表示されるのはこの値です。

ダミーの値を入れた場合の結果は次のとおりです。

条件(すべてダミー値)結果
何も設定しないNot logged in · Please run /login
CLAUDE_CODE_OAUTH_TOKEN + --bareNot logged in · Please run /login
CLAUDE_CODE_OAUTH_TOKENFailed to authenticate. API Error: 401 OAuth access token is invalid.
ANTHROPIC_API_KEYFailed to authenticate. API Error: 401 API key is invalid.

資格情報が渡っていないときは Not logged in、渡っているが無効なときは 401 と、メッセージがはっきり分かれることが確認できます。

似ているが別のエラー

メッセージ状態詳しい解説
Login expired · Please run /loginログイン情報はあったが、更新できず消去された「Login expired」の対処法
OAuth token revoked · Please run /login保存したトークンを API が拒否したOAuthトークンの対処
Invalid API key · Fix external API keyANTHROPIC_API_KEY の値が無効Invalid API Keyの対処
Your organization has disabled Claude subscription access組織の管理者がサブスクリプション経由の利用を止めている組織による無効化の対処法
Could not load credentials from any providersBedrock 利用時に AWS の資格情報が見つからない「Could not load credentials」の対処法

何度ログインしても毎回ログインを求められる場合は、保存したログインが更新できていない可能性が高いので、「Login expired」の対処法にある時計とキーチェーンの確認に進んでください。

よくある質問

まとめ

  • Not logged in · Please run /login は「資格情報が見えていない」という意味。無効なキーのときは 401 など別のメッセージになる
  • エラーが出たのと同じ環境で claude auth status を実行し、loggedIn と configDirectory を確かめる
  • 自動実行では CLAUDE_CODE_OAUTH_TOKEN(claude setup-token)か ANTHROPIC_API_KEY を渡す。--bare では OAuth は読まれない
  • CLAUDE_CONFIG_DIR が違えば、ログイン情報も別になる

ほかのエラーはClaude Code トラブルシューティング完全ガイドから逆引きできます。

参考:

koromo からの提案

AIツールの導入判断は、突き詰めると「投資対効果が合うか」「リスクを管理できるか」「事業にどう効くか」の3点に帰着します。koromo では、この判断に必要な材料を整理するところからご支援しています。

以下のような状況にある方は、まず現状の整理だけでも前に進むきっかけになります。

  • AIで開発や業務を効率化したいが、自社に合う方法がわからない
  • 社内にエンジニアがいない / 少人数で、AI導入の進め方に見当がつかない
  • 外注先の開発会社にAI活用を提案したいが、何を求めればいいか整理できていない
  • 「AIを使えばコスト削減できるはず」と感じているが、具体的な試算ができていない

ツールを使った上で相談したい方はお問い合わせフォームから「Claude Code の認証設計・自動化の相談」とご記載ください。初回の壁打ち(30分)は無料で対応しています。

無料で相談する

関連記事