[Bug] Auto-update failed state cached in .last-update-result.json never self-heals
Open 💬 0 comments Opened Jun 24, 2026 by jax-ho
Bug Description
The auto-update failure banner persists indefinitely because the failed state cached in .last-update-result.json is never overwritten on subsequent successful update checks.
Root Cause
When a native auto-update fails, the JSON contains outcome: failed, status: install_failed, and critically version_to: null.
Two problems:
- version_to is null — the updater couldn't even determine the target version, suggesting the update check/download failed
- Failed state never self-heals — running
claude updatesuccessfully does NOT overwrite this file. The stale failure persists across sessions.
Reproduction
- Transient network issue during auto-update check → failed state cached
- Network recovers, run
claude update→ "Claude Code is up to date" - Restart Claude Code → banner still shows "Auto-update failed"
Workaround
Manually delete ~/.claude/.last-update-result.json.
Expected Behavior
A successful claude update should overwrite the cached failure state, or the failure cache should have a TTL.
Environment
- Platform: darwin
- Version: 2.1.178
- Install: native (standalone)
- Channel: stable