この記事の概要
Claude Codeで無人のタスクを動かしている方へ。ログインの期限切れは、対話的な警告が出ないまま無人実行を止め続けます。なぜ起きるのか、気づかない理由、ログのどこを見れば分かるのか、setup-tokenを使った1年有効トークンでの対策までをまとめました。
気づく仕組みがなければ、何日も止まります
Claude Codeで毎朝の情報収集や記事の自動更新など、人がいない時間に動かすタスクを組んでいる方へ。ある朝、タスクが動いていないことに気づいたら、まず疑うべきは「ログインの期限切れ」です。Claude Codeのログインには期限があり、無人で動かしているタスクはこれが切れると、だれにも気づかれないまま止まり続けます。この記事では、なぜ止まるのか、どこを見れば分かるのか、どう防ぐのかを順番に説明します。
なぜClaude Codeのログインは切れるのか
Claude Codeの公式ドキュメント(Authentication)によると、`/login`で作ったログインには期限があります。期限の3日前になると、起動時に「Your login expires in 3 days · run /login to renew」という警告が表示されます。期限が切れて更新できなくなると、以降のすべてのモデルへの要求は「Login expired · Please run /login」というエラーで失敗します。
公式ドキュメントには、具体的な期限の日数は書かれていません。うちで実際に2つの環境のログイン日と失効日を記録したところ、どちらも約30日でした。これはうちの実測であり、公式が約束している数字ではありません。環境によっては違う場合があります。
警告は無人実行の画面には届かない
「あと3日で切れます」という警告は、`/login`を使った対話的なセッションを起動した時にだけ表示されます。ところが、人がいない時間に動くタスクは、画面を見ている人がいないので、警告が出ても誰にも届きません。そして期限が切れたあとのエラーは、タスクのログファイルに記録されるだけです。ログを見に行く習慣がなければ、何日も気づかないまま止まり続けます。
うちでも、ある週に実際にこれが起きました。無人のタスクが4種類、4日間連続で失敗していたのに、ログを見るタイミングが「週に一度の点検の時」しかなく、気づくまでに4日かかりました。失敗はちゃんと記録されていたのに、その記録を見に行く理由がなかったのです。
ログのどこを見れば分かるか
定期実行しているタスクがあるなら、次の2点を確認してください。
- ログファイルの末尾に「OAuth access token has expired」「Login expired」「Not logged in」のような文言が残っていないか
- 最後に成功した実行の日時が、想定している周期(毎日・毎週など)から大きくずれていないか
これを毎回手で見に行くのは現実的ではありません。確認そのものを、タスクが動く環境の起動時や、別の監視の仕組みに組み込んでおくことをおすすめします。「失敗を記録する」と「記録に気づく」は別の仕組みだと考えてください。
対話的に使っているセッションがあれば、`/status`コマンドでも事前に確認できます。保存しているログインが失効している場合、`Login`の行に「Expired — log in again」と表示されます。ただし、これも無人実行の画面では見られません。無人のタスクについては、ログファイルを読む別の仕組みを用意するしかありません。
1年有効のトークンに切り替えて防ぐ
公式ドキュメントには、CI(継続的インテグレーション)や無人実行向けに、1年間有効なOAuthトークンを発行する方法が用意されています。`claude setup-token`を実行すると、ブラウザでの認証後にトークンが表示されます。これを環境変数`CLAUDE_CODE_OAUTH_TOKEN`に設定しておくと、`/login`のログインが切れていてもこちらが優先して使われます。
通常ログインと長期トークンの違い
| 項目 | 通常ログイン | 長期トークン |
|---|---|---|
| 有効期間 | 実測で約30日 | 1年 |
| 対象プラン | Pro以上 | Pro/Max/Team等 |
| できること | 全機能 | モデル要求のみ |
| 向くシーン | 対話的利用 | 無人・CI実行 |
対象はPro・Max・Team・Enterpriseプランです。このトークンは、Remote Control(遠隔操作)やclaude.aiのコネクタ機能では使えません。ローカルで設定したMCPサーバーは利用できます。起動を軽くする`--bare`モードでは読み込まれない点にも注意してください。
発行する時は、画面に表示されたトークンの文字列が録画やスクリーンショット、チャットの記録に残らないよう気をつけてください。トークンは文字列が長く、途中で折り返されて表示されることがあるので、コピーする時は改行をまたいで全体を取り切れているか長さを確かめておくと安全です。1年後にはこのトークンも切れるので、発行した日をカレンダーに入れておくと安心です。
「失敗が記録に残る」だけでは足りない
定期実行しているタスクが1つでもあるなら、次の3つに答えられるか確認してみてください。

答えに詰まる項目があれば、そこから手をつけるのがおすすめです。失敗を記録する仕組みはあっても、その記録が自分の目に届く経路がなければ、気づかないまま止まり続けます。無人で動かす以上、気づく仕組みまで含めて設計する必要があります。
これはClaude Codeに限った話ではありません。無人で動かすツールが増えるほど、認証や契約の期限が切れた時に「止まったことに気づく手段」が追いついていないケースは増えていきます。1つ仕組みを作ったら、他の無人タスクにも同じ考え方を当てはめてみてください。Claude Codeの基本的な導入は「Claudeが落ちても困らない環境を作る――Claudian導入ガイド」、無人運用を支える仕組みの考え方は「AIエージェントの最新理論をガンダムで解説する」、AIに審査まで任せた時の話は「AIが書いた記事を、別のAIが審査し、人間が読まずに公開するまで」で紹介しています。
よくある質問
Claude Codeの定期実行が動いていないことに、どうやって気づけますか。
ログファイルの末尾に認証エラーの文言が残っていないか、最後に成功した実行の日時が想定の周期からずれていないかを確認します。確認そのものを、作業を始める時に必ず目に入る場所へ届く仕組みにしておくことが重要です。
ログが失敗と記録されているのに、なぜ気づかなかったのですか。
失敗を記録する仕組みと、記録に気づく仕組みは別のものです。ログを見に行く理由がなければ、記録はそこに残っているだけで何日も気づかれません。確認を人の習慣に頼らず、起動時や監視の仕組みに組み込んでおく必要があります。
ログイン切れはどれくらいの頻度で起きますか。
公式ドキュメントには具体的な日数の記載はありません。うちで2つの環境を実測したところ、どちらも約30日でした。これは自社の実測であり公式が約束している数字ではないので、環境によって変わる可能性があります。
claude setup-tokenとは何ですか。
CIや無人実行向けに、1年間有効なOAuthトークンを発行するコマンドです。発行したトークンを環境変数CLAUDE_CODE_OAUTH_TOKENに設定すると、通常のログインが切れていてもこちらが優先して使われます。
通常のログインとsetup-tokenのトークンは何が違いますか。
通常のログインは全機能を使えますが期限があり、無人実行では期限切れに気づきにくいです。setup-tokenのトークンは1年有効ですが、Remote Controlやclaude.aiのコネクタには使えません。ローカルで設定したMCPサーバーは利用できます。
