development·

Claude Code「Login expired · Please run /login」の意味と対処法

Claude Code の「Login expired · Please run /login」は、ログインの自動更新が拒否されて保存情報が消去されたという意味で、/login で直ります。何度も出る原因と、-p で出る「OAuth session expired and could not be refreshed」も解説。

Claude Code「Login expired · Please run /login」の意味と対処法
Login expired · Please run /login

このメッセージは、Claude Code が保存していたログイン(claude.ai または Claude Console)を自動で更新しようとしたところ、認証サービスに拒否されたため、そのログイン情報を消去したという意味です。消去したあとは、リクエストを Anthropic に送らず手元で止めてこのメッセージを出します。/login でサインインし直せば直ります。 再ログインしても繰り返し出る場合は、時計のずれ、macOS キーチェーン、古いバージョンの Claude Code を順に確認します。

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

  • 「Login expired」が具体的に何を意味しているのか(やさしい言葉での説明)
  • claude -p や Agent SDK で出る Failed to authenticate: OAuth session expired and could not be refreshed との関係
  • すぐ直す手順と、何度も出るときの確認ポイント
  • 自動実行(CI・cron・常駐エージェント)で止まらないようにする方法
  • OAuth token revoked・401 Invalid authentication credentials など、似たメッセージとの違い

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

意味:ログインの「自動更新」に失敗した状態

/login でサインインすると、Claude Code は2種類の情報を保存します。

  • アクセストークン:API を呼ぶための通行証。有効期間が短く、定期的に作り直す必要があります
  • リフレッシュトークン:アクセストークンを作り直すための引換券

ふだんは Claude Code がリフレッシュトークンを使って、裏でアクセストークンを自動更新しています。そのため、ユーザーがログインを意識することはほとんどありません。

公式のエラーリファレンス(Error referenceの「Login expired」)によると、Login expired はこの引換券(リフレッシュトークン)が認証サービスに拒否されたときに出ます。Claude Code は使えなくなったログイン情報を消去し、以後は /login でしか新しい資格情報を作れないため、リクエストを送る前に手元でこのメッセージを返します。何度再試行しても同じメッセージが出るのはこのためです。

表示のされ方

使い方表示されるメッセージ
対話モード(ターミナル・VS Code 拡張)Login expired · Please run /login
非対話実行(claude -p)・Agent SDKFailed to authenticate: OAuth session expired and could not be refreshed(エラーコードは authentication_failed)

会話の圧縮(compaction)の最中にこのエラーが起きると、後者の文言の前に Error during compaction: が付いた形で表示されることがあります。この組み合わせについて公式ドキュメントに記載はありませんが、後半が同じ文言であれば、対処は本記事と同じです。

このメッセージが出ない人

API キー、CLAUDE_CODE_OAUTH_TOKEN、Amazon Bedrock などのクラウドプロバイダーで認証しているセッションは、保存したログインを使わないため、このメッセージは出ません。CLAUDE_CODE_OAUTH_TOKEN の期限切れでは、代わりに OAuth token revoked · Please run /login などが表示されます(Error reference の「OAuth token revoked or expired」)。

対処法

1. /login でサインインし直す

対話モードで次を実行し、ブラウザでサインインします。

/login

SSH 先やコンテナでブラウザが戻ってこない場合は、ブラウザに表示されたコードをターミナルの Paste code here if prompted に貼り付けます。サインイン画面でコードのエラーが出る場合は「OAuth error: Invalid code」の対処法を参照してください。

2. 同じセッションでまた出るなら /logout してから /login

再ログインしたのに同じセッションでエラーが戻る場合、公式ドキュメントは /logout で保存済みのトークンを完全に消してから /login するよう案内しています(Error reference の「OAuth token revoked or expired」)。

/logout
/login

/logout すると初回起動時のセットアップ状態もリセットされるため、次に claude を起動したときにログインとセットアップの画面が出ます。

3. claude -p や SDK で出たとき

非対話実行ではブラウザを開けません。同じマシン・同じユーザー・同じ環境で一度 claude を対話モードで起動し、/login を済ませてから、元のコマンドを実行し直します。

CLAUDE_CONFIG_DIR を設定している場合は、その値も同じにしてください。macOS でもキーチェーンの項目が設定ディレクトリごとに分かれるため、値が違うと別のログイン情報を読みます(Authenticationの「Credential management」)。

何度も「Login expired」になるときの確認ポイント

再ログインしても短期間で繰り返す場合は、公式ドキュメントに記載のある次の点を順に確認します。

確認すること理由対処
Claude Code のバージョン古い版には、ログインが失われる既知の不具合がある(下記)claude update で最新にする
システムの時計トークンの検証は正確な時刻に依存するOS の時刻自動設定をオンにする
macOS キーチェーンの状態キーチェーンに書き込めないと、ログインが別の場所に保存される下の手順でキーチェーンを直す
無人セッションの有無長時間動くセッションはログインの期限を越えやすい事前に /login で更新する

バージョンによる違い

公式ドキュメントには、次のバージョン差が記載されています。

  • v2.1.211 より前:同じマシンで複数のセッションを開いている状態でスリープから復帰すると、2つのセッションが同じトークンで同時に更新を試み、その結果ログインが無効化されて、開いていた全セッションで再ログインを求められることがありました。現在は、1つのプロセスだけが更新する仕組みになっています(Troubleshoot installation and loginの「Not logged in or token expired」)
  • v2.1.206 より前:期限切れのログインでもリクエストが送られ、There's an issue with the selected model や 401 といった、ログインと無関係に見えるエラーになっていました
  • v2.1.235 より前:アカウントが一時停止(on hold)されている場合も Login expired と表示されていました。現在は Your account is on hold ... と表示され、再ログインでは解決しません

macOS:キーチェーンを書き込める状態に戻す

macOS では、ログイン情報はキーチェーンに保存されます。SSH 接続中でキーチェーンがロックされている、またはキーチェーンのパスワードがアカウントのパスワードとずれている場合、Claude Code はログインを平文の ~/.claude/.credentials.json に保存します。公式ドキュメントの手順は次のとおりです(Troubleshoot installation and login の「Not logged in or token expired」)。

  1. claude doctor を実行し、macOS Keychain is not writable で始まる警告が出るか確認する。出なければ手順4へ
  2. キーチェーンのロックを解除する
security unlock-keychain ~/Library/Keychains/login.keychain-db
  1. それでも警告が消えなければ、「キーチェーンアクセス」で login キーチェーンを選び、「編集」メニューのパスワード変更(英語表示では Edit > Change Password for Keychain "login")でアカウントのパスワードと同期する
  2. /logout してから /login する。ログアウトすると、保存済みの MCP サーバーのログインやプラグインの秘密情報も消えるため、あとで再設定が必要です

公式には未確認の報告

GitHub には、次のような利用者の報告があります。いずれも公式ドキュメントでは確認できていないため、参考情報として扱ってください。

  • v2.1.221 以降、ログイン直後でも Login expired になり、.credentials.json の有効期限が 0 で書き込まれていたという報告(anthropics/claude-code #83834、2026年9月25日時点でオープン)
  • 対話モードでは使えるのに、同じマシンの claude -p だけが OAuth session expired and could not be refreshed で失敗するという報告(#79685、#81937)

パスワード変更や複数マシンでのログインが原因になるかについては、公式ドキュメントに明確な記載はありません。

自動実行を止めないための認証の選び方

CI・cron・常駐エージェントなど、人がブラウザでサインインし直せない環境では、/login で保存したログインに頼らないのが確実です。長期トークン(claude setup-token で発行して CLAUDE_CODE_OAUTH_TOKEN に設定)か、ANTHROPIC_API_KEY を使います。発行手順・注意点・CLAUDE_CODE_OAUTH_TOKEN が期限切れになったときの対処は、「Not logged in」の対処法の実行環境に資格情報を渡す項で詳しく解説しています。料金面の比較はClaude Code の料金プラン比較を参照してください。

事前に気づく方法

期限切れはリクエストが失敗する前に確認できます(Authenticationの「Renew an expiring login」)。

  • 起動時の予告:ログインの有効期限まで3日を切ると、起動時に Your login expires in 3 days · run /login to renew と表示されます(v2.1.203 以降)。この段階では使い続けられますが、/login で更新しておけば途中で止まりません
  • /status の表示:更新できなくなった状態では、Login の行に Expired — log in again と、保存されていた組織名・メールアドレスが表示されます(v2.1.210 以降)

エージェントビューのバックグラウンドセッションや Remote Control のように無人で長く動かすセッションは、ログインが切れると先に進めなくなり、サインインし直すまで回復しません。長時間の作業を始める前に更新しておくのが確実です。

実機での再現結果

2026年9月25日に、macOS 上の Claude Code v2.1.282 で、隔離した設定ディレクトリにダミーのログイン情報(有効期限を1時間前にしたアクセストークンと、実在しないリフレッシュトークン)を置いて claude -p を実行しました。本物のキーチェーンや資格情報には触れていません。

  • claude auth status --text は、ファイルを読み込んで Login method: Claude Pro account と表示した
  • デバッグログには、更新の試みが拒否された記録(OAuth refresh failed (expected): Request failed with status code 400)が残った
  • 続いて Claude Code は使えなくなったログイン情報を消去しようとしたが、この隔離環境ではその書き込みに失敗し(OAuth dead-token disk clear: backend write failed)、期限切れのトークンのままリクエストが送られた
  • 結果の表示は Failed to authenticate. API Error: 401 OAuth access token is invalid. だった

つまり「更新が拒否される」ところまでは再現できましたが、Login expired · Please run /login の文言そのものは再現できませんでした。消去の処理が成功する通常の環境では、ドキュメントどおり以後のリクエストは Login expired で止まると考えられます。

似ているが別のエラー

メッセージ何が起きているか対処
Not logged in · Please run /login資格情報がもともと見つからない「Not logged in」の対処法
OAuth token revoked · Please run /login / API Error: 401 OAuth token has expired送ったトークンを API が拒否した。失効は「すべての端末からサインアウトした」か「管理者がアクセスを外した」とき/login。繰り返すなら /logout → /login
Please run /login · API Error: 401 Invalid authentication credentials期限切れではなく、アカウントや組織側で資格情報が無効になった/status で有効な資格情報を確認。API キーが優先されていれば unset ANTHROPIC_API_KEY。同じアカウントで繰り返すなら組織の管理者に確認
Anthropic profile login expired · ...ANTHROPIC_PROFILE などの Anthropic プロファイルのログインが切れたプロファイルを作ったツールで再認証
Cloud gateway session expired — run /login to reconnect.社内の Claude apps gateway のセッションが切れた/login でゲートウェイに再接続
claude.ai rejected the session token. Run /login, then reconnect.claude.ai コネクタの利用時に、Claude Code のログインが拒否された/login のあと /mcp から再接続

401 Invalid authentication credentials は、組織が無効化された・アクセスが外されたケースも含みます。組織側の設定で止められている場合は「Your organization has disabled Claude subscription access」の対処法も確認してください。そのほかのエラーはClaude Code トラブルシューティング完全ガイドから逆引きできます。

よくある質問

まとめ

  • Login expired は「ログインの自動更新が拒否され、ログイン情報が消去された」状態。/login で直る
  • claude -p・SDK では OAuth session expired and could not be refreshed と表示される
  • 繰り返すなら、最新版への更新・時計・macOS キーチェーンの順に確認する
  • 無人で動かすなら CLAUDE_CODE_OAUTH_TOKEN(claude setup-token)か ANTHROPIC_API_KEY を使う

参考:

koromo からの提案

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

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

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

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

無料で相談する

関連記事