cronはOKなのに処理が止まる――Claude認証切れの診断と復旧


cronはOKなのに処理が止まる――Claude認証切れの診断と復旧

定期処理の一覧が「OK」なら、必要なデータも更新されたと思いがちです。しかし、Hermes Agentから外部CLIを呼ぶ構成では、ジョブの正常終了と、CLIが担当する処理の成功は別です。今回はClaude Codeの認証切れを診断し、再ログインで処理を再開した記録を整理します。

対象は投資関連の評価バッチですが、本記事は運用障害の切り分けであり、投資推奨ではありません。復旧後の評価内容を利用する際も、一次資料と人の確認が必要です。

実際に確認できたこと

9月7日の日次記録では、cronの完了状態とDB更新時刻は確認できた一方、アクセス障害でDBを開けず、実際の処理件数は未検証でした。

9月8〜9日の記録では、認証確認処理が繰り返し失敗していたことが判明しています。ログに残ったのは、OAuthセッションの期限が切れ、更新にも失敗したというエラーでした。それでもバッチ全体は終了コード0となり、Hermes cronではOK扱いでした。処理が進まないのに、外側の監視では正常に見える状態です。

対処としてClaude Code内の `/login` で認証を復旧し、その後に個別評価を再実行した記録があります。ただし、過去日の欠損がすべて埋まったかは確認課題として残っています。本稿で確認したのはこれらの日次記録であり、記事作成のために本番バッチを再実行したわけではありません。

成功判定を三つに分ける

手元の構成は、次のように整理できます。

1. Hermes cronがラッパースクリプトを起動する。
2. スクリプトがClaude Codeの認証を確認する。
3. 認証に失敗し、評価処理が進まない。
4. 外側のスクリプトは終了コード0を返す。
5. cronの結果と、保存済み評価の有無が食い違う。

ここでは「ジョブが終了した」「モデルへの要求が通った」「対象日の結果が保存された」を分けます。DBファイルの更新時刻だけでは、管理情報が変わったのか、必要な評価が増えたのかを区別できません。

読者が再現できる診断・復旧手順

まず、実行履歴を読みます。`YOUR_JOB_ID` は自身の対象ジョブへ置き換えてください。

“`bash
hermes cron list
hermes cron runs YOUR_JOB_ID
“`

次に、同じ実行のログで認証確認、処理開始、成功・失敗件数、保存結果を突き合わせます。別の日の成功ログを混ぜず、実行日とデータの対象日も分けて記録します。実行履歴のOKだけで復旧判定を終えないことが要点です。

認証失効が原因なら、バッチを動かしているのと同じOSユーザー・実行環境でClaude Codeを開きます。

“`bash
cd /path/to/project
claude
“`

Claude Codeの対話画面で `/status` を確認し、必要なら `/login` を実行して、利用者自身がブラウザ認証を完了します。これはシェルに直接入力するコマンドではありません。認可コードや認証画面をブログや通知へ貼り付けないでください。

その後、自分のバッチが用意する少数件モードで対象を限定し、モデル応答と保存結果を確認します。引数は独自実装ごとに異なるため、存在しない共通コマンドは仮定しません。ログイン成功だけでは、データ取得・保存まで通った証拠にはならないからです。

最後に、読み取り専用のDB接続や管理画面で、対象日ごとの期待件数・成功件数・失敗件数・未処理を照合します。欠損分の再実行は、処理済み判定と重複防止を確認してから行います。対象や費用が不明な状態で、日次ジョブ全体を繰り返し起動しないでください。

落とし穴と未完了事項

公式資料では、更新できないログイン失効は再サインインまで要求の失敗につながると説明されています。一方、手元で観測した失効間隔を、全利用者共通の有効期限として断定することはできません。

また、対話環境と定期実行環境で異なる認証方式が選ばれる場合があります。公式の認証優先順位を確認し、APIキーなど別の設定が使われていないかを調べます。値そのものを出力する必要はありません。

今回の復旧と、認証失敗を非ゼロ終了やアラートへ反映する恒久対策は別です。後者は日次記録では未実装の検討事項であり、「監視も改善済み」とは扱いません。今後は、休日などの正常スキップと、認証エラーによる未処理を別状態で報告できる設計が課題です。

再現チェックリスト

  • [ ] cronの終了状態と内部ログを同じ実行単位で照合した
  • [ ] 実行日と処理対象日を分けた
  • [ ] 定期実行と同じ環境で認証方式を確認した
  • [ ] 再ログイン後、少数件の応答と保存結果を確認した
  • [ ] 過去日の欠損と重複を照合した
  • [ ] 復旧済み事項と未実装の恒久対策を分けた
  • [ ] 認証情報や個別の評価内容を通知・記事に含めていない

公式一次情報

以下は2026年9月10日に本文を確認しました。画面表示や認証方式は、利用中のバージョンと構成で確認してください。

  • [Claude Code:認証・ログイン更新・認証優先順位](https://code.claude.com/docs/en/authentication)
  • [Hermes Agent:Scheduled Tasks / 実行履歴](https://hermes-agent.nousresearch.com/docs/user-guide/features/cron)

Back to top