[BUG] 'Update available' banner checks npm latest but suggests winget upgrade — winget manifest lag makes the banner permanent on Windows

Status Open
Reported on v2.1.201
Maintainer reply None cached
Activity 3 comments · opened Jul 8, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code available through my install channel (winget)

What's Wrong?

On Windows with a winget install, the "Update available" banner compares the installed version against the npm latest release, but the remediation it suggests is winget upgrade. The winget manifest trails every release by hours-to-days, so the suggested command reports "no updates available" while the banner keeps showing. Since Claude Code releases ship every few days, for winget users the yellow banner is effectively permanently visible and permanently non-actionable.

Concrete data right now:

  • Installed: claude --version -> 2.1.201 (installed via winget install Anthropic.ClaudeCode, binary at %LOCALAPPDATA%\Microsoft\WinGet\Links\claude.exe)
  • winget show Anthropic.ClaudeCode -> Version: 2.1.201 (latest available in the winget repo)
  • npm view @anthropic-ai/claude-code version -> 2.1.204

So the banner says an update is available and tells me to run winget, winget says I'm fully up to date, and both are "right" — they're just looking at different channels.

This exact bug was already fixed for Homebrew: the update check was pointed at the install channel's available version instead of npm latest (see #41140, and the regression report #50017 which confirms the intended behavior is "check the channel you installed from"). The winget channel needs the same treatment.

Related: #63238 reports the same symptom on Windows, but the repro there compares against Anthropic.Claude (the Desktop app package) rather than Anthropic.ClaudeCode, and doesn't identify the channel mismatch as the cause.

What Should Happen?

For winget installs, the update check should compare against the version available in the winget manifest (Anthropic.ClaudeCode), same as the Homebrew fix. If querying winget is too slow/unreliable at startup, then at minimum:

  • don't show the banner when the suggested remediation command cannot produce an update, or
  • show which version the banner is referring to, so users can tell it's manifest lag and not a broken install.

Error Messages/Logs

> claude --version
2.1.201 (Claude Code)

> winget upgrade Anthropic.ClaudeCode
No applicable upgrade found.

> winget show Anthropic.ClaudeCode | findstr Version
Version: 2.1.201

> npm view @anthropic-ai/claude-code version
2.1.204

Steps to Reproduce

  1. Install Claude Code via winget install Anthropic.ClaudeCode on Windows
  2. Wait for a new Claude Code release that hasn't reached the winget manifest yet (a few days at most)
  3. Launch claude — yellow "Update available" banner appears suggesting winget upgrade
  4. Run winget upgrade Anthropic.ClaudeCode — "No applicable upgrade found"
  5. Relaunch claude — banner still there

Is this a regression?

No, this never worked for winget (the equivalent Homebrew behavior was fixed in #41140)

Claude Code Version

2.1.201

Platform

Native Anthropic API

Operating System

Windows 11 Pro (10.0.26200)

Terminal/Shell

PowerShell

View original on GitHub ↗

3 Comments

ThomasBenjaminCook · 1 month ago

Still having this issue on winget in v2.1.206. Looks like there was a fix in #55834

iroach · 25 days ago
Still having this issue on winget in v2.1.206. Looks like there was a fix in #55834

@ThomasBenjaminCook I am still seeing this issue on Windows using v2.1.220.

msarson · 10 days ago

Still reproduces on 2.1.229 (Windows 11, winget install).

Concrete numbers as of today:

  • Installed, and winget show --id Anthropic.ClaudeCode reports available: 2.1.229
  • winget upgrade --id Anthropic.ClaudeCodeNo available upgrade found.
  • npm @anthropic-ai/claude-code@latest: 2.1.237

claude update output:

Current version: 2.1.229
Checking for updates to latest version...

Claude is managed by winget.
Update available: 2.1.229 → 2.1.237

To update, run:
  winget upgrade Anthropic.ClaudeCode

So the check correctly sees 2.1.237 on the npm channel, then routes to a winget command that cannot satisfy it while the manifest trails at 2.1.229. The banner is unclearable by any action the user can take until the manifest catches up — running the suggested command is a no-op that looks like a failed update.

Re #55834: that PR is still open and unmerged, and it documents the behaviour + adds an update-checker plugin rather than changing which registry the version check compares against — so it doesn't resolve this.