Native auto-updater leaves 0-byte version files when blocked by running process

Resolved 💬 6 comments Opened Dec 19, 2025 by xerebz Closed Feb 14, 2026

Description

When running claude update while a Claude session is active, the updater creates a 0-byte placeholder file in ~/.local/share/claude/versions/ but fails to download the binary because "Another Claude process is currently running". The placeholder file is not cleaned up, which may interfere with future auto-updates.

Steps to Reproduce

  1. Start a Claude Code session
  2. From within the session, run claude update (via Bash tool or another terminal)
  3. Observe the error: "Another Claude process is currently running"
  4. Check ~/.local/share/claude/versions/ - a 0-byte file exists for the target version

Expected Behavior

Either:

  • The updater should not create the placeholder file until after confirming no other process is running
  • Or the updater should clean up the 0-byte file when it aborts due to another process running

Actual Behavior

  • 0-byte file is created in versions directory
  • Download is aborted due to running process check
  • 0-byte file persists, potentially blocking future updates

Workaround

Exit Claude completely, then either:

  • Run claude update from outside Claude
  • Manually delete the 0-byte file: rm ~/.local/share/claude/versions/<version>
  • Or manually download:
curl -fsSL -o ~/.local/share/claude/versions/<version> \
  "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/<version>/darwin-arm64/claude"
chmod +x ~/.local/share/claude/versions/<version>
ln -sf ~/.local/share/claude/versions/<version> ~/.local/bin/claude

Environment

  • Version: 2.0.73 attempting to update to 2.0.74
  • Platform: darwin-arm64 (macOS)
  • Install method: Native installer (curl install script)

View original on GitHub ↗

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