Forced re-login loop (elevated_auth / device_key_missing) — device key not persisting; scheduled task silently skipped

Open 💬 0 comments Opened Jul 14, 2026 by tatsuro-miki

Environment

  • Claude Desktop app on Windows 11 Pro (10.0.26200)
  • Also affects other devices on the same account (phone / browser)

Symptom

Over the past several days I've been forced to re-sign-in 10+ times across devices, despite completing sign-in (and device registration) each time. Each re-login triggers a "Security alert: new trusted device added to your Claude account" email, so registration itself succeeds — but the device key is apparently gone again by the next check.

main.log shows logout redirects like:

topFrameUrl: 'https://claude.ai/login?returnTo=...reason%3Delevated_auth%26auth_kind%3Ddevice_key_missing...&reauth=1&from=logout'
  • auth_kind=device_key_missing (Jul 15, right after a scheduled PC reboot)
  • auth_kind=session_stale_relogin (Jul 12)

Impact: scheduled task silently skipped

A scheduled task (daily morning routine, cron 0 6 * * *) failed to run because the app was in the logged-out state when it fired:

06:04:23 [CCDScheduledTasks] Spawning new session for scheduled task morning-briefing { ... missed: '...T21:00:00.000Z' }
06:20:23 [warn] [CCDScheduledTasks] Cleared stale pending dispatch for: morning-briefing

No session was ever created, no error was surfaced to the user, and lastRunAt was stamped anyway — so the task silently consumed the day's run and won't retry until the next day.

Environment notes possibly relevant

  • This PC gets a forced IT reboot daily at ~6:00.
  • Trend Micro Worry-Free (behavior monitoring) is installed and has interfered with other credential/process operations on this machine before.
  • However, the re-login loop also occurs on other devices on the same account, so it does not look purely machine-local.

Expected behavior

  • Device key persists after registration (or a clearer path to diagnose why it disappears).
  • Scheduled tasks either fail loudly (notification) or retry after re-auth, instead of silently consuming the run.

View original on GitHub ↗