[BUG] Native installer fails with "another process is currently installing" on Linux even after complete cleanup
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
What's Wrong?
The native installer (curl -fsSL https://claude.ai/install.sh | bash) consistently fails with "another process is currently installing Claude" even on a completely clean system with no prior Claude Code installation artifacts.
The error persists even when:
- All Claude-related directories are removed (~/.claude, ~/.local/share/claude*, ~/.local/bin/claude)
- Config files are removed (~/.claude.json, ~/.claude.json.backup)
- No Claude processes are running (ps aux | grep claude shows nothing)
- No lock files exist anywhere (find across /tmp, /var/lock, /run/lock, $XDG_RUNTIME_DIR shows nothing)
- Running with --force flag
What Should Happen?
-
--forceshould override lock checks as documented - Fresh install on clean system should succeed
- Error and success messages should not contradict each other
Error Messages/Logs
Contradictory output is printed:
✘ Installation failed
Could not install - another process is currently installing Claude. Please try again in a moment.
Try running with --force to override checks
✅ Installation complete!
Using strace, the binary reads /home/user/.claude.json during install. Even when this file doesn't exist, the error persists.
The install.sh script downloads the binary successfully but the binary's internal install subcommand fails:
# From install.sh:
"$binary_path" install ${TARGET:+"$TARGET"}
The --force flag is documented (claude install --help) but does not bypass the phantom lock detection.
Steps to Reproduce
Complete cleanup:
rm -rf ~/.claude ~/.claude.json ~/.claude.json.backup
rm -rf ~/.local/share/claude* ~/.local/bin/claude
Run native installer:
curl -fsSL https://claude.ai/install.sh | bash
Observe failure with "another process" error followed by contradictory "Installation complete!" Verify claude binary was not installed:
which claude # Not found
Attempt with --force:
~/.claude/downloads/claude-2.0.64-linux-x64 install --force
Same error occurs.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
No response
Claude Code Version
2.0.64
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
Platform: linux (CachyOS / Arch Linux) Terminal: Alacritty (Hyprland/Wayland) Claude Code version: 2.0.64 (attempting fresh install) Architecture: x86_64
This may be related to #709 (claude-code-action) and #13085 (VS Code extension lock), but differs in that:
- No prior installation exists
- No VS Code extension is involved
- No actual lock file can be found anywhere on the system
- Occurs on fresh install, not update
Found 3 possible duplicate issues:
- https://github.com/anthropics/claude-code/issues/11884
- https://github.com/anthropics/claude-code/issues/12044
- https://github.com/anthropics/claude-code/issues/13085
This issue will be automatically closed as a duplicate in 3 days.
- If your issue is a duplicate, please close it and 👍 the existing issue instead
- To prevent auto-closure, add a comment or 👎 this comment
🤖 Generated with Claude Code
I am experiencing the same issue on macOS using the native installer:
❯ claude update
Current version: 2.0.64
Checking for updates...
Another process is currently updating Claude. Please try again in a moment.
And:
❯ curl -fsSL https://claude.ai/install.sh | bash
Setting up Claude Code...
✘ Installation failed
Could not install - another process is currently installing Claude. Please try again in a moment.
The native installer locks are at
rm -rf ~/.local/state/claude/locks/
if you want to get groovy
The native installer locks are at
rm -rf ~/.local/state/claude/locks/if you want to get groovy
Removing the lock dir worked to enable claude upate to work again! Thanks for sharing where those were located.
thanks ya guys
having the same issue and removing the locks didn't helped
The native installer locks are at
rm -rf ~/.local/state/claude/locks/if you want to get groovy
I thought I removed everything. But the state folder was a gold mine! Now it is working for me as well. Thanks! Maybe this could find its way into the official documentation?
having the same issue and removing the locks didn't helped
Did you try to remove everything, including the directories I mentioned in my bug post and do you have the npm package installed? I won't mark this as closed, until your issue is resolved.
The native installer locks are at
rm -rf ~/.local/state/claude/locks/if you want to get groovyI thought I removed everything. But the state folder was a gold mine! Now it is working for me as well. Thanks! Maybe this could find its way into the official documentation?
having the same issue and removing the locks didn't helped
Did you try to remove everything, including the directories I mentioned in my bug post and do you have the npm package installed? I won't mark this as closed, until your issue is resolved.
I was already using the native installer (curl -fsSL https://claude.ai/install.sh | bash).
I've tried the following troubleshooting steps:
- Removed lock files from
~/.local/state/claude/locks/ - Completely reinstalled using the native installer
- Ran
claude updatecommand - Removed locks, executed
claude, ran doctor, exited, then triedclaude code
Unfortunately, none of these resolved the issue. Still experiencing the same problem.
Additional context:
- Installation method: Native installer (not npm)
- Already tried full reinstall
- Lock file removal didn't help
UPDATE: I think they fixed it, because it worked. You can close.
The native installer locks are at
rm -rf ~/.local/state/claude/locks/if you want to get groovy
Thank you!!!
Thank you!!!
The native installer locks are at
rm -rf ~/.local/state/claude/locks/if you want to get groovy
Awesome! How did you find it?
The native installer locks are at
rm -rf ~/.local/state/claude/locks/if you want to get groovy
Removing the lock works, thank you!
However, the real question is: how do you pass --force to this curl ... | bash command? 🤔