#468 の追記(https://github.com/hdknr/claude-code-setup/issues/468#issuecomment-6436561177)を、#468 の周(PR #471)から分けたもの。 ## 起きたこと 不在の cruise(`/dev-loop:cruise <親> --absent`)の最中に、OAuth のアクセストークンの期限切れでセッションが止まった: ``` Please run /login · API Error: 401 OAuth access token has expired. Re-authenticate to continue. (error type authentication_failed, HTTP 401) ``` - 同じ時刻に、バックグラウンドの `/code-review`(分岐した実行)も同じ 401 で落ちた(task-notification の status が `failed`)。実装役のサブエージェントは続いていた - 利用上限と違い**セッションの全リクエストが失敗する**ので、`autoContinueAtUsageLimit` も再開タイマー(#472)も効かない。戻ったのは利用者が Remote Control から `/login` を打ったから ## 足したいこと 1. **StopFailure の hook(`scripts/record-stop-failure.py`)の通知で、`authentication_failed` なら「`/login` が要る」と書く。** 記録そのものは、#471 の登録(matcher なし)で既に `error: authentication_failed` として残る(#468 の周で、一時 `HOME`・無効な API キーで観測した)。足りないのは通知の文言 2. **`check-unattended-env.py` に認証の方式を足す。** 対話ログインの OAuth で起動しているなら「途中で期限が切れうる。長期トークン(`claude setup-token`)か API キーで起動すると止まらない」と出す(`plugins/dev-loop`。版を上げる) 3. **子のエージェントが 401 で落ちたときの扱いを `references/ledger.md`(再開)に書く。** 欠票は「反証なし」ではないので、認証が戻った後にやり直す。`/code-review` の分岐した実行は通知の status でしか分からない 関連: #454・#466・#468・#472
Activity
計画: #468 の追記を #473 に分けたことを記録(#468)
StopFailure の hook で利用上限の停止をその場で記録・通知する(#468) (#471)