11月4日の変更点
v2.1.318のリリースノートには、終了間近または既に終了したサインインをClaude Codeが報告する方法に関する3つの変更が記載されています。
- 確認可能な終了日: リリースにより「保存されたclaude.aiサインインの終了日を
claude auth status(loginExpiresAt) およびclaude -pのJSON結果 (credential_expires_at) に追加」されました。 - スクリプト向けの早期警告: また、「保存されたclaude.aiサインインが終了する10日前から、
claude -pのテキスト出力に1行のstderr警告を追加」しました。 - より明確な失敗通知: 「保存されたclaude.aiログインが制限時間に達した際のサインイン失敗を修正:その旨を表示し、
claude -p内でclaude auth loginとclaude setup-tokenを指定する」ようになりました。
同リリースでは、関連する問題も修正されました。「同じホーム上の同じアカウントおよび組織に対して、別のターミナルやホストが再度サインインした際に、ジョブが Not logged in で終了する問題を修正」。エラーページでは、旧バージョンでの原因を「v2.1.318より前は、Claude Codeは新しいログイン情報を保存する前に、そのサインイン中に保存されていたログイン情報を削除していた」と説明しています。
このリリース以前は、信頼できる警告は対話型セッションの起動時に表示されるものだけでした。現在は、claude -p を呼び出すスクリプトやスケジュールされたジョブも日付を確認でき、ジョブが停止する前に警告を発することができます。
「Login expired」が意味すること
Anthropicのエラーリファレンスでは、この状態を正確に記述しています。「Claude Codeが保存されたclaude.aiログインの更新を試みた際、OAuthサービスが保存されたリフレッシュトークンを拒否したため、Claude Codeは保存された認証情報を消去しました。その後、/login でのみ新しい認証情報を作成できるため、各モデルリクエストはAPIに到達する前にこのメッセージとともにローカルで停止します。」
この説明における3つの詳細が重要です。
claude.aiのログインに適用される: これは、Pro、Max、Ultra、Team、またはEnterpriseプランのために /login で作成するログインのことです。Anthropicは次のように付け加えています。「APIキー、CLAUDE_CODE_OAUTH_TOKEN、またはサードパーティプロバイダーで認証されたセッションは、保存されたログインを使用しないため、このメッセージが表示されることはありません。」
Claude Code自体がリクエストを停止させる: モデルリクエストはAPIに到達する前に停止します。サインインせずに再試行すると、すべてのリクエストで同じメッセージが返されます。
トークンの取り消しとは異なる: ドキュメントではこの2つを区別しています。「これはOAuthトークンの取り消しや期限切れと同じ状態ではありません。それらのメッセージはAPIが返した拒否を報告するものです。Claude Code自体は、更新に既に失敗したログインに対して Login expired を生成するため、リクエストは送信されません。」
スクリプトとSDKにおける同じ状態
非対話モードやAgent SDKでは、文言が変わります。Anthropicはメッセージを Failed to authenticate: OAuth session expired and could not be refreshed とし、構造化されたエラーコード authentication_failed を提供しています。対話型の文言ではなく、ログからこの文言を検索してください。
類似したメッセージ
エラーページにあるいくつかの類似したメッセージを区別しておく価値があります:
- Not logged in. 「このセッションで利用可能な有効な認証情報がありません。」修正方法は同じですが、原因はログインの期限切れではなく、環境変数の欠落である可能性があります。
- Anthropic profile login expired. Anthropicプロファイルの再認証を指示するログイン期限切れメッセージは、別の認証情報(
antCLIが使用するもの)に関するものです。 - Account on hold. アカウント自体が停止されているために更新が失敗した場合、AnthropicによるとClaude Codeは別のメッセージを表示します。
期限切れ前に表示される警告
Anthropicの認証ガイドでは、早期のシグナルについて説明しています。「/login で作成したログインの期限が3日以内に切れる場合、Claude Codeは起動時に警告を表示します:Your login expires in 3 days · run /login to renew」
この警告によって何かが停止することはありません。Anthropicの言葉を借りれば、「警告は情報提供のみを目的としており、リクエストをブロックすることはありません。ログインが実際に期限切れになるまで認証は機能し続けます。」また、これはclaude.aiのログインに対してのみ表示されます。ガイドには、クラウドプロバイダー、ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、または apiKeyHelper が認証情報を提供している場合には表示されないと記されています。
状態は自分で確認できます。/status を実行してください。保存されたログインがアクティブな認証情報であり、リフレッシュできなくなった場合、ドキュメントによると「Login」の行には「Expired — log in again」と表示され、そのログインに保存されている組織とメールアドレスが併記されます。セッション外では、claude auth status に終了日が loginExpiresAt として含まれるようになりました。
サインアウト中に停止するもの
そのセッション内のすべてのモデルリクエスト
各モデルリクエストがローカルで停止するため、再度サインインするまでClaudeは回答できません。セッションは開いたままになり、以前のやり取りは画面に残ります。
ユーザー不在で実行されるセッション
これはAnthropicが特に指摘しているケースです。「早期の更新は、無人で実行されるセッションにおいて最も重要です。エージェントビュー(agent view)でのバックグラウンドセッションや、ログインの寿命を超えるリモートコントロール(Remote Control)セッションは、認証情報の期限が切れると進行が止まり、再度サインインするまで回復できません。」
バックグラウンドセッションを夜通し実行したままにしたり、リモートコントロールを通じてスマートフォンからセッションを操作したりする場合、ログインの期限切れが停滞のポイントとなります。Claude Codeのエージェントビューに関するガイドでは、これらのバックグラウンドセッションがどのようにプロジェクトのコンテキストを共有するかを説明しています。
スクリプトとスケジュールされたジョブ
claude.aiログインでサインインした claude -p ジョブは、上記の非対話型メッセージで停止します。v2.1.318以降、stderr警告は10日前に通知を行い、JSON結果にはチェックを行いたいスクリプトのために credential_expires_at が含まれます。
マシンに残るもの
期限切れの認証情報と作業内容は、異なる場所に保存されています。
ログイン情報: Anthropicの認証情報セクションによると、macOSでは「認証情報は暗号化されたmacOSキーチェーンに保存」され、Linuxでは ~/.claude/.credentials.json に保存されます。更新の失敗によって消去されるのはこれです。
セッションの履歴(トランスクリプト): Anthropicのセッションドキュメントには、「Claude Codeはセッションを ~/.claude/projects/<encoded-cwd>/*.jsonl に保存する」とあります。エラーページには認証情報の消去については書かれていますが、これらのファイルについては触れられていません。再度サインインした後、/resume や --continue は以前と同様にこれらを読み込みます。Claude Codeのセッション履歴の場所に関するガイドで、フォルダ構成を詳しく説明しています。
オートメモリ(auto memory): メモリのドキュメントでは、同じ設定ディレクトリに配置されています。「各プロジェクトは ~/.claude/projects/<project>/memory/ に独自のメモリディレクトリを持ちます。」Claude Codeのオートメモリに関するガイドでは、セッション開始時にそこから何が読み込まれるかを解説しています。
指示書と設定: CLAUDE.md ファイルや settings.json もファイルであり、リポジトリや設定ディレクトリ内に存在します。
履歴に関する注意点が1つあります。.claude ディレクトリガイドには「履歴とトランスクリプトは保存時に暗号化されません。OSのファイル権限が唯一の保護手段です」と記されています。これはサインインしているかどうかにかかわらず当てはまります。
同じアカウントで再度サインインする
Anthropicが示す修正方法は簡潔です。「/login を実行して再度サインインしてください。サインインせずに再試行すると、すべてのリクエストで同じメッセージが表示されます。」
セッションが属しているアカウントでサインインしてください。同じ設定ディレクトリで別のアカウントとしてログインすると、認証情報は変わりますがローカルフォルダは同じまま保持されるため、そのアカウントがあなたのセッションとオートメモリを引き継ぐことになります。クラウドセッションはclaude.aiアカウントに紐付いているため、同じアカウントを使用すべきもう一つの理由となります。Claude Codeがマシン間で記憶を失う理由に関するガイドでは、クラウドセッションが引き継ぐものとそうでないものを解説しています。
別のClaude Codeウィンドウからサインインしている場合、停滞しているウィンドウで何もする必要がない場合があります。エラーページには、同じ設定ディレクトリを使用する「別のClaude Codeウィンドウでサインインすると、このメッセージを表示している対話型セッションは自動的にそのログインを使用し始める」と記載されています。
サインイン後に古いセッションを再開すると、最初のリクエストで大量のコンテキストを再読み込みする必要がある場合があります。再開時の使用量警告に関するガイドでは、Claude Codeがいつ警告を出すか、そしてその代わりに何をすべきかを説明しています。
自動化のために:ブラウザログインに依存しない認証情報
非対話型実行に対するAnthropicのアドバイスは、同じ環境で一度対話的にサインインしてからコマンドを再実行することです。「対話的にサインインできない自動化の場合は、ANTHROPIC_API_KEY で認証するか、claude setup-token で長期トークンを生成してください。」
長期トークンには独自の制限があります。認証ガイドではこれを「1年間のOAuthトークン」と説明し、「モデルリクエストのみが可能で、リモートコントロールセッションの確立やclaude.aiコネクタの取得はできない」と付け加えています。また、このコマンドは「トークンをどこにも保存しない」ため、CIシステムのシークレットストアなどに自分で保存する必要があります。
これらを追加する場合は、認証情報の優先順位を覚えておいてください。Anthropicの優先順位リストでは、ANTHROPIC_API_KEY と CLAUDE_CODE_OAUTH_TOKEN が /login によるサブスクリプションログインよりも優先されるため、シェルプロファイルに残されたキーがセッションで使用される認証情報を変えてしまう可能性があります。/status で使用中の認証情報を確認できます。
よくある間違い
プロンプトの再試行: リクエストはAPIに到達する前に停止するため、再試行しても同じメッセージが返されます。
セッションの再起動: 再起動しても新しい認証情報は作成されません。/login を実行するか、同じ設定ディレクトリでサインインした別のClaude Codeウィンドウが必要です。
ログインをクリアするために設定フォルダを削除する: これを行うと、認証情報ファイルと一緒にセッション履歴やオートメモリも削除されてしまいます。ドキュメント化された修正方法は /login です。
ブラウザが提示する適当なアカウントでサインインする: 別のアカウントの場合、そのアカウントがローカルのセッションとメモリを使用することになります。サインイン後に /status を確認してください。
起動時の警告が作業をブロックすると誤解する: ブロックしません。それはリマインダーであり、ログインが実際に終了するまで作業は継続できます。
解決策:日付を確認し、早めに更新し、無人作業を維持する
ステップ 1: サインインの終了日を確認する
セッション内で /status を実行するか、ターミナルから claude auth status を実行します。v2.1.318以降では、出力に終了日が含まれます。表示されない場合はClaude Codeをアップデートしてください。
ステップ 2: 無人作業の実行前に更新する
不在中にバックグラウンドセッション、リモートコントロールセッション、またはスケジュールされた claude -p ジョブが実行される場合は、それらが停滞した後ではなく、離れる前に /login を実行してください。キーボードに誰もいない状態で実行されるジョブには、上記の制限の範囲内で ANTHROPIC_API_KEY または claude setup-token のトークンを使用してください。
ステップ 3: 同じアカウントに再度サインインして再開する
エラーが表示されたら、セッションが属するアカウントで /login を実行し、/status で確認してから /resume または --continue で再開します。履歴とオートメモリは中断した時のまま残っています。
MemoryLakeでのセットアップ
ログインの期限切れは短い中断に過ぎませんが、作業コンテキストの多くがいかに1台のマシン、1つの設定ディレクトリ、1つのサインインの背後に置かれているかを示しています。マシンやツールを切り替える場合、それらのファイルにある決定事項や規約は、コピーしない限り置き去りにされます。
MemoryLake は、これらの事実を1か所で管理し、ChatGPT、Claude Code、Codexなどの接続されたアシスタントから利用できるようにするためのメモリレイヤーです。
エントリーはあなた自身の言葉で記述します。Claude Codeのセッション、設定ディレクトリ、認証情報、CLAUDE.mdファイル、オートメモリ、またはベンダーのストアから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。/login、claude auth status、およびClaude Codeの認証情報処理は、Anthropicが説明している通りに機能し続けます。
ステップ 1: APIキーを作成する
サインインしてダッシュボードからキーを生成します。このキーはMemoryLakeワークスペースに属し、Claudeのログインとは別物です。

ステップ 2: 最初のメモリをアップロードする
中断後に必要となるプロジェクトの決定事項や規約から始めましょう:コードが何をするのか、何を除外したのか、次は何か。1つのエントリーにつき1つのポイントを記述します。

ステップ 3: AIとエージェントを接続する
Claude Codeやその他の使用しているアシスタントを接続します。エントリーは、再度サインインした後、別のマシン、あるいは別のツールからでも利用可能です。

実務における変化
第一の違いは警告時間です。claude auth status の終了日と claude -p の10日前のstderr警告により、ジョブが停滞してから気づくのではなく、自分のスケジュールに合わせて更新できます。
第二に、エラーに対して冷静に対処できるようになります。メッセージは認証情報に関するものです。セッションとオートメモリはディスク上のファイルであり、同じアカウントでサインインすれば再び利用できるようになります。
第三に、新しいマシンや新しいアカウントなど、より大きな変更があった際のリビルドが少なくなります。信頼する事実は、1つの設定ディレクトリの中だけに存在するわけではありません。
Claude Codeサインインのベストプラクティス
終了日を確認する: v2.1.318以降で claude auth status を使用してください。
実行したままにする前に更新する: バックグラウンドおよびリモートコントロールセッションは期限切れで停滞します。
同じアカウントで再度サインインする: 同じディレクトリ内の別のアカウントは、同じローカルセッションとメモリを使用します。
自動化には適切な認証情報を使用する: ドキュメント化された制限を理解した上で、APIキーまたは claude setup-token トークンを使用してください。
不要な環境変数に注意する: これらは認証情報の優先順位において /login よりも優先されます。
ログイン修正のために設定フォルダを削除しない: そこには履歴とオートメモリが保持されています。
履歴ファイルを保護する: これらは保存時に暗号化されません。
結論
「Login expired」は、Claude Codeがclaude.aiログインを更新できず、保存された認証情報を消去したことを意味します。その後、/login を実行するまで、各モデルリクエストはローカルで停止します。セッション履歴、オートメモリ、指示ファイルは設定ディレクトリ内の別のファイルであり、ドキュメント化された修正方法は再度サインインすることです。
v2.1.318で追加されたのは通知機能です:claude auth status の終了日、claude -p のJSONフィールド、そして10日前のstderr警告です。これを利用して、無人セッションやスケジュールされたジョブが停滞する前に更新し、セッションが属するアカウントで再度サインインしてください。