[BUG] DISABLE_INSTALLATION_CHECKS=1 doesn't hide the 'was not created by the native installer' launcher warning

Status Open
Reported on v2.1.292
Maintainer reply None cached
Activity 0 comments · opened Oct 7, 2026

What's Wrong?

DISABLE_INSTALLATION_CHECKS=1 does not hide the launcher warning that claude doctor, claude update and /status show when ~/.local/bin/claude is not a symlink into versions/.

The env-vars docs describe the variable as: "Set to 1 to disable installation warnings. Use only when manually managing the installation location". This is that case. I deliberately replaced the launcher with a hardlink to the current release so that macOS privacy (TCC) grants stay keyed to one stable executable path across updates. A SessionStart hook moves the hardlink to each new release.

#75431 reported the same partial handling for the "~/.local/bin is not in your PATH" warning. A maintainer confirmed it, and the stale bot then closed it.

What Should Happen?

With DISABLE_INSTALLATION_CHECKS=1 set, claude doctor, claude update and /status should not list the "was not created by the native installer" warning. If that warning is meant to stay, the docs should say which warnings the variable covers.

Steps to Reproduce

  1. Use a native install on macOS. Replace the launcher with a hardlink to the current release:

ln -f ~/.local/share/claude/versions/2.1.292 ~/.local/bin/claude

  1. Run DISABLE_INSTALLATION_CHECKS=1 claude doctor

Actual output (excerpt):

Running: native (2.1.292)
...
1 warning found
- /Users/<me>/.local/bin/claude was not created by the native installer (it is not a symlink into the versions/ directory), so auto-update leaves it untouched.
  Fix: If you put a launcher wrapper there on purpose, this is expected — new versions still install under $XDG_DATA_HOME/claude/versions, ...

claude update prints the same text as Warning: / Fix:.

Notes

In the 2.1.292 bundle, the diagnostics function adds this launcher warning (and the "not in your PATH" warning from #75431) before the if (!DISABLE_INSTALLATION_CHECKS) block. That block only wraps the install-method mismatch warnings, so the variable never reaches these two.

Claude Code Version

2.1.292 (Claude Code)

Platform

macOS (darwin-arm64)

Is this a regression?

I don't know

View original on GitHub ↗