[Bug] Windows update installer silently fails to replace claude.exe binary

Resolved 💬 3 comments Opened Apr 20, 2026 by burgab Closed Apr 23, 2026

Bug Description

## Summary On Windows 11, both claude update and the official PowerShell installer (irm https://claude.ai/install.ps1 | iex) report successful installation of a new version, but claude.exe on disk is never actually replaced. ## Environment - OS: Windows 11 Pro - Install type: native installer (single-binary, 245 MB) - Install path: C:\Users\<user>\.local\bin\claude.exe - Installed version before: 2.1.113 - Claimed version after install: 2.1.114 - Actual version after install: 2.1.113 (file unchanged) ## Reproduction 1. Have Claude Code 2.1.113 installed on Windows via native installer. 2. Run claude update — reports "Successfully updated from 2.1.113 to 2.1.114". 3. Run claude --version — still shows 2.1.113. 4. Restart Windows, run installer manually in a clean PowerShell with no Claude process running: irm https://claude.ai/install.ps1 | iex. 5. Installer outputs "✔ Claude Code successfully installed! Version: 2.1.114". 6. Run claude --version — still shows 2.1.113. ## Objective evidence - File timestamp of claude.exe does not change across multiple install attempts. - SHA256 of installed claude.exe: 0e62752f68fc2e15264601279bec58bacb9b8a788497dad2c4a688e43ff2e358 - SHA256 of official 2.1.114 binary (from manifest.json): 6f4a961ea8a1d656c41dd71cbef202cb71d13c443f86818c721167c33f8a51fd - ~/.claude/downloads/ remains empty after installer runs. - Downloading the official binary manually from https://downloads.claude.ai/claude-code-releases/2.1.114/win32-x64/claude.exe and moving it to .local/bin/claude.exe works correctly. ## Likely cause The install subcommand of the bootstrap-downloaded binary (invoked by bootstrap.ps1 as & $binaryPath install) appears to swallow the Access is denied exception when overwriting the target .exe on Windows and still returns exit code 0, producing a false-success path. ## Regression note Previously, auto-updates applied successfully even with active Claude sessions open overnight. As of 2.1.113, updates no longer apply regardless of session state. ## Workaround 1. Download the official binary directly from the release CDN: https://downloads.claude.ai/claude-code-releases/<version>/win32-x64/claude.exe 2. Verify SHA256 against manifest.json from the same release folder. 3. Close all claude.exe processes (Task Manager). 4. Move-Item -Force <downloaded.exe> "$env:USERPROFILE\.local\bin\claude.exe" ## Suggested fix In the install subcommand of the Windows binary: - Check the exit code / exception of the file copy step. - Fail loudly with exit code != 0 and a clear error message if the target cannot be overwritten (e.g., "claude.exe is in use — close all Claude Code sessions and try again"). - Consider using MoveFileEx with MOVEFILE_REPLACE_EXISTING (or MOVEFILE_DELAY_UNTIL_REBOOT as a fallback) to allow atomic replacement of the locked binary.

Environment Info

  • Platform: win32
  • Terminal: pycharm
  • Version: 2.1.114
  • Feedback ID: a9e502da-80f5-42b6-a10c-28f07f979164

Errors

[]

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗