Claude Codeで「command not found: claude」——インストールは成功してるのに動かない理由
Claude Codeをインストールしたのに「command not found: claude」「is not recognized」と出る原因をPATH・複数インストールの競合・VS Code拡張機能の落とし穴に分けて解説。macOS/Linux/Windows別のコマンド付き。
エンジニアのゆとです。
Claude Codeのインストーラーを実行して、エラーもなく終わったはずなのにclaudeコマンドを打つと見つからない、という症状はよくある。「インストールに失敗した」と思ってインストーラーを何度も実行し直す人がいるけど、大抵の場合インストール自体は成功していて、原因は別のところにある。
結論 — 9割はPATHが通っていないだけ
先に結論を書く。command not found: claude(Windowsだとis not recognized)が出る一番の原因は、インストール先のディレクトリがシェルのPATH(コマンドを探しに行く場所のリスト)に入っていないことだ。インストール自体は失敗していないので、再インストールしても直らない。
エラーメッセージは環境によって表記が変わるが、意味はどれも同じだ。
| プラットフォーム | エラーメッセージ |
|---|---|
| macOS | zsh: command not found: claude |
| Linux | bash: claude: command not found |
| Windows CMD | 'claude' is not recognized as an internal or external command |
| PowerShell | claude : The term 'claude' is not recognized as the name of a cmdlet |
PATHを確認する
インストーラーはネイティブインストールの場合、claudeをmacOS/Linuxでは~/.local/bin/claudeに、Windowsでは%USERPROFILE%\.local\bin\claude.exeに配置する。ここがPATHに入っていないと、シェルはclaudeというコマンドの存在に気づけない。
macOS/Linux
PATHに含まれているか確認する。
echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"
/Users/you/.local/binや/home/you/.local/binが表示されればPATHは通っている。何も表示されない場合は、シェルの設定ファイルに追記する。
macOSのデフォルトシェルであるZshの場合:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
多くのLinuxディストリビューションのデフォルトであるBashの場合:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
反映後、ターミナルを開き直すかsourceコマンドで即座に反映して、動作確認する。
claude --version
fishやNushellなど他のシェルを使っている場合は、それぞれの設定ファイルの書式で~/.local/binを追加し、ターミナルを再起動すればいい。
Windows PowerShell
$env:PATH -split ';' | Select-String '\.local\\bin'
何も表示されなければ、ユーザーPATHに追加する。
$currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')
[Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')
設定を反映させるにはターミナルの再起動が必要になる。
Windows CMD
echo %PATH% | findstr /i "local\bin"
何も表示されない場合は、システム設定 → 環境変数から、ユーザーPATH変数に%USERPROFILE%\.local\binを追加してターミナルを再起動する。
VS Code拡張機能を入れただけではclaudeコマンドは使えない
これは見落としやすい罠なので独立の見出しにしておく。VS Code拡張機能をインストールしただけでは、claudeコマンドはPATHに追加されない。
拡張機能は、拡張機能自身のチャットパネル用にCLIのコピーを内部に持っているだけで、~/.local/binにclaudeを配置する処理はしない。つまり拡張機能だけを入れた状態だと、~/.local/bin/claudeはそもそも存在しない。
ターミナルからclaudeコマンドを使いたい場合は、拡張機能とは別に、以下のスタンドアロンインストーラーを実行する必要がある。
curl -fsSL https://claude.ai/install.sh | bash
「拡張機能は入れたのにコマンドが見つからない」で悩んでいる場合、まずこの前提を疑ってほしい。VS Code / Cursorでの実務的な使い分けについては別記事にまとめてある。

複数のインストールが競合していないか確認する
PATHは通っているのにclaude --versionが古いバージョンを表示する、あるいは挙動がおかしい場合、複数のclaudeインストールが競合している可能性がある。
claudeバイナリが来る可能性のある場所は主に3つある。ネイティブインストーラーが作る~/.local/bin/claude、古いバージョンのClaude Codeが作っていたレガシーなローカルnpmインストールの~/.claude/local/、そしてnpm install -gによるグローバルインストールだ。
macOS/Linuxでは、PATH上に見つかるclaudeバイナリを全て列挙できる。
which -a claude
何も表示されない場合はまだ何もPATHに乗っていない状態なので、上のPATH設定に戻る。
3つの場所を個別に確認することもできる。
ls -la ~/.local/bin/claude
ls -la ~/.claude/local/
npm -g ls @anthropic-ai/claude-code 2>/dev/null
No such file or directoryと出るのはエラーではなく、単にそこには何もインストールされていないという意味だ。
複数見つかった場合は、ネイティブインストール(~/.local/bin/claude)を1つだけ残して、他は削除するのが推奨されている。
# npmのグローバルインストールを削除
npm uninstall -g @anthropic-ai/claude-code
# レガシーなローカルnpmインストールを削除
rm -rf ~/.claude/local
# Homebrewでインストールした場合
brew uninstall --cask claude-code
Windowsの場合、PowerShellでwhere.exe claudeを実行するとPATH上のバイナリを列挙できる。WinGetでインストールした場合はwinget uninstall Anthropic.ClaudeCodeで削除できる。
ディレクトリの権限を確認する
PATHは正しいのにインストーラー自体がエラーで止まる場合、書き込み権限が原因のこともある。インストーラーは~/.local/bin/と~/.claude/への書き込み権限を必要とする(Windowsでは%USERPROFILE%配下がデフォルトでユーザー書き込み可能なので、この問題はほぼ起きない)。
書き込み可能かを確認する。
test -w ~/.local/bin && echo "writable" || echo "not writable"
test -w ~/.claude && echo "writable" || echo "not writable"
どちらかが書き込み不可の場合、ディレクトリを作成して所有者を自分のユーザーに変更する。
sudo mkdir -p ~/.local/bin
sudo chown -R $(whoami) ~/.local
npmインストール後に「native binary not installed」と出る場合
npmで@anthropic-ai/claude-codeをインストールした場合、パッケージはOSごとのネイティブバイナリを別パッケージ(例:@anthropic-ai/claude-code-darwin-arm64)としてダウンロードし、postinstallスクリプトがそれをclaudeコマンドとして配置する。この一連の流れがどこかで止まると、claudeはプレースホルダーのままになり、実行すると次のようなエラーが出る。
Error: claude native binary not installed.
Either postinstall did not run (--ignore-scripts, some pnpm configs)
or the platform-native optional dependency was not downloaded
(--omit=optional).
このエラーが出たら、以下を順番に確認する。
npm installに--omit=optional、pnpmの--no-optional、yarnの--ignore-optionalを付けていないか、.npmrcでoptional=falseになっていないか--ignore-scriptsでpostinstallをスキップしていないか。その場合はメッセージの指示通り手動でpostinstallを実行する
node node_modules/@anthropic-ai/claude-code/install.cjs
- 対応プラットフォーム(
darwin-arm64、darwin-x64、linux-x64、linux-arm64、linux-x64-musl、linux-arm64-musl、win32-x64、win32-arm64)以外を使っていないか - 社内npmミラーを使っている場合、8つの
@anthropic-ai/claude-code-*プラットフォームパッケージ全てがミラーされているか
npm経由のインストールでトラブルが多い場合は、そもそもネイティブインストーラーに切り替えるのが手っ取り早い解決になることが多い。
curl -fsSL https://claude.ai/install.sh | bash
FAQ
claude --versionは動くのに、コマンドを実行すると固まる・クラッシュする
PATHの問題ではなく、バイナリ自体の実行に問題がある可能性が高い。バイナリが実行可能な状態か確認する。
ls -la "$(command -v claude)"
Linuxで共有ライブラリが不足していないか確認するにはldd "$(command -v claude)" | grep "not found"を使う。Alpine LinuxなどmuslベースのディストリビューションではAlpine Linux向けのセットアップ手順が別途必要になる。
WSL環境でexec: node: not foundと出る
WSL側のnpm/nodeではなく、Windows側のNode.jsインストールを参照してしまっている可能性がある。which npmとwhich nodeを実行し、パスが/mnt/c/から始まっていればWindows側のバイナリを掴んでいる。Linuxディストリビューションのパッケージマネージャかnvm経由でNode.jsをWSL内に入れ直すのが対処法になる。
何度再インストールしても直らない
再インストールで直らない場合、ほぼ確実に原因はPATH設定か複数インストールの競合のどちらかだ。インストーラー自体を疑う前に、この記事のPATH確認と競合チェックを先に済ませてほしい。
まとめ
command not found: claudeは「インストールに失敗した」ように見えて、実際にはインストール自体は成功しているケースが大半だ。PATHが通っているか、複数のインストールが競合していないか、VS Code拡張機能とスタンドアロン版を混同していないか——この3点を順番に確認すれば、大抵は再インストールなしで解決する。