[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
13 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
I am experiencing the same issue on macOS using the native installer:
And:
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 upateto work again! Thanks for sharing where those were located.thanks ya guys
having the same issue and removing the locks didn't helped
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?
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:
~/.local/state/claude/locks/claude updatecommandclaude, ran doctor, exited, then triedclaude codeUnfortunately, none of these resolved the issue. Still experiencing the same problem.
Additional context:
UPDATE:
I think they fixed it, because it worked.
You can close.
Thank you!!!
Thank you!!!
Awesome! How did you find it?
Removing the lock works, thank you!
However, the real question is: how do you pass
--forceto thiscurl ... | bashcommand? 🤔This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.