claude update fails: multiple installations detected, cannot determine installation type

Resolved 💬 2 comments Opened Apr 2, 2026 by HamsaOmar-dev Closed Apr 2, 2026

Bug Description

claude update fails to update from 2.1.87 → 2.1.90 due to conflicting installation detection.

Steps to Reproduce

  1. Have Claude Code installed (version 2.1.87)
  2. Run claude update

Observed Behavior

The updater detects multiple installations and cannot determine which one to update:

Warning: Multiple installations found
- npm-global-orphan at /usr/local/Cellar/node/24.6.0/lib/node_modules/@anthropic-ai/claude-code
- native at /Users/hamsaomar/.local/bin/claude

Warning: Configuration mismatch
Config expects: global installation
Currently running: unknown
Config updated to reflect current installation method: unknown
New version available: 2.1.90 (current: 2.1.87)
Installing update...
Warning: Could not determine installation type
Attempting global update based on file detection...
Using global installation update method...
Error: Failed to install update
Or consider using native installation with: claude install

Expected Behavior

claude update should either:

  • Successfully update the active installation, or
  • Provide clear guidance on resolving the conflict between the two installations

Environment

  • OS: macOS (Darwin, Apple Silicon)
  • Node: 24.6.0 (Homebrew)
  • Claude Code version: 2.1.87
  • Installation paths:
  • npm-global-orphan: /usr/local/Cellar/node/24.6.0/lib/node_modules/@anthropic-ai/claude-code
  • native: /Users/hamsaomar/.local/bin/claude
  • Config expects: global installation
  • Currently running: unknown

Notes

The root cause appears to be a stale npm-global installation left behind from a previous Node.js version (installed via Homebrew), conflicting with a newer native installation. The updater gets confused by the dual presence and falls back to "unknown" installation type, then fails.

Running claude install as suggested may resolve it, but the updater should handle this gracefully — either by cleaning up the orphan or by clearly identifying and updating the active binary.

View original on GitHub ↗

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