[Bug] `claude update` fails with "Another Claude process is currently running" due to stale lock files

Resolved 💬 2 comments Opened Dec 31, 2025 by sinasan Closed Dec 31, 2025

Bug Description
claude update fails with "Another Claude process is currently running" even when no Claude process is running:

$ ps -ef | grep claude
xyz 1060315 925994 0 10:10 pts/1 00:00:00 grep --color=auto claude

$ ls -la ~/.local/share/claude/versions/
-rwxr-xr-x 1 xyz xyz 224636128 Dec 21 16:42 2.0.75
-rw------- 1 xyz xyz 0 Dec 31 10:09 2.0.76

$ rm ~/.local/share/claude/versions/2.0.76

$ claude update
Current version: 2.0.75
Checking for updates...
Another Claude process is currently running. Please try again in a moment.

$ ls -la ~/.local/share/claude/versions/
-rwxr-xr-x 1 xyz xyz 224636128 Dec 21 16:42 2.0.75
-rw------- 1 xyz xyz 0 Dec 31 10:09 2.0.76 # recreated!

The same error occurs with curl -fsSL https://claude.ai/install.sh | bash.

Root Cause

The actual lock files are in ~/.local/state/claude/locks/, not in only the versions directory:

$ find ~/.local/state/claude/
~/.local/state/claude/locks/2.0.76.lock
~/.local/state/claude/locks/2.0.75.lock

Workaround

rm -rf ~/.local/state/claude/locks/
rm -f ~/.local/share/claude/versions/2.0.76
claude update

Successfully updated from 2.0.75 to version 2.0.76

Additional Issue: Stale stable channel

The install script uses the stable channel which points to an outdated version:

$ curl -fsSL https://storage.googleapis.com/.../stable
2.0.67

$ curl -fsSL https://storage.googleapis.com/.../latest
2.0.76

This means fresh installs via install.sh get version 2.0.67 while claude update updates to 2.0.76.

Environment

  • Linux 5.15.0-164-generic (x86_64)
  • Claude Code 2.0.75 → 2.0.76

Environment Info

  • Platform: linux
  • Terminal: WezTerm
  • Version: 2.0.76
  • Feedback ID: bcb35afe-2329-4311-9170-d746cac226d5

Errors

[{"error":"Error: NON-FATAL: Lock acquisition failed for /home/xyz/.local/share/claude/versions/2.0.76 (expected in multi-process scenarios)\n    at W3$ (/$bunfs/root/claude:2427:2165)\n    at TTA (/$bunfs/root/claude:2427:1885)\n    at processTicksAndRejections (native:7:39)","timestamp":"2025-12-31T09:31:28.366Z"}]

View original on GitHub ↗

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