[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:

  1. version_to is null — the updater couldn't even determine the target version, suggesting the update check/download failed
  2. Failed state never self-heals — running claude update successfully does NOT overwrite this file. The stale failure persists across sessions.

Reproduction

  1. Transient network issue during auto-update check → failed state cached
  2. Network recovers, run claude update → "Claude Code is up to date"
  3. 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

View original on GitHub ↗