Updater treats 2.1.209 as newer than 2.1.210 (lexical version compare, offers downgrade)

Open 💬 0 comments Opened Jul 14, 2026 by terry-brown-26870

Summary

claude update (and the auto-updater) treats 2.1.209 as newer than 2.1.210, so it repeatedly offers/attempts to "update" a machine already on 2.1.210 down to 2.1.209. This looks like a lexical string comparison of version numbers instead of a numeric/semver comparison.

Why it happens

Comparing the patch segments as strings, "209" vs "210": at the third character 9 > 0, so "209" sorts greater than "210" lexically. A semver comparison parses the patch as an integer (209 < 210) and correctly treats 210 as newer. The updater appears to be using the string comparison, so it believes 2.1.209 is the latest and keeps prompting.

Steps to reproduce

  1. Be on version 2.1.210.
  2. Run claude update (or wait for the auto-update prompt).
  3. Observe it reports 2.1.209 as available/newer and offers to install it (a downgrade).

Expected

The updater recognizes 2.1.210 >= 2.1.209 and reports the installation is up to date. No downgrade is offered.

Actual

The updater claims 2.1.209 is newer and repeatedly offers/attempts to update to it.

Environment

  • Version: 2.1.210 (Claude Code)
  • Install method: native
  • Platform: win32-x64
  • Auto-update channel: latest
  • Last update attempt: success → 2.1.208 (2026-07-13)

Notes

The false prompt will likely disappear once a version numerically higher than 2.1.210 ships, but the underlying comparison should be fixed to parse version segments numerically so it doesn't recur at future digit rollovers (e.g. 219→220, 2.1.9→2.1.10).

View original on GitHub ↗