/doctor: installMethod stuck on 'local' after migrating to native install — causes recurring ghost npm-local installation
Resolved 💬 3 comments Opened Feb 23, 2026 by lucasmccomb Closed Feb 27, 2026
Description
After migrating from the npm-local installation method to the native installation, /doctor persistently reports:
Warning: Multiple installations found
├ npm-local at /Users/<user>/.claude/local
└ native at /Users/<user>/.local/bin/claude
Warning: Running native installation but config install method is 'local'
Fix: Run claude install to update configuration
Warning: Leftover npm local installation at /Users/<user>/.claude/local
Fix: Run rm -rf /Users/<user>/.claude/local
Root Cause
~/.claude.json retains "installMethod": "local" from the original npm-local installation. This causes two problems:
/doctorreports a config mismatch — the running binary is native but config sayslocal- The auto-updater recreates
~/.claude/local/— because it follows theinstallMethodconfig, it reinstalls via npm into~/.claude/local/on every update, even though the user is running the native binary
Reproduction
- Originally install Claude Code via npm-local method (the old default)
- Later install/migrate to the native method (
~/.local/share/claude/versions/) - Run
claude install— this appears to fix the issue temporarily - On the next auto-update or fresh session,
~/.claude/local/reappears and/doctorshows the warnings again - Deleting
~/.claude/local/alone doesn't fix it — the directory gets recreated
Expected Behavior
Either:
claude installshould updateinstallMethodin~/.claude.jsonto"native"when run from a native binary- The native installer should detect and clean up the old npm-local installation during migration
- The auto-updater should use the actual running binary's installation method, not the stored config
Workaround
Manually edit ~/.claude.json and change "installMethod": "local" to "installMethod": "native", then delete ~/.claude/local/.
Environment
- macOS (Darwin 25.2.0)
- Claude Code 2.1.50 (native)
- Previously installed via npm-local method
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗