Site icon imageTomoMemo.dev

Memo on programming for Junior SWE. Provided by Tomo with passion.

Claude Code が突然 command not foundになった時の復旧ログ

Icon in a callout block
この記事はG's ACADEMY【技術記事書いてみた編】 Advent Calendar 2025、12/10投稿分となります

G’s FUKUOKA Dev03期、現役のバックエンドエンジニア、そして2025年よりチューターとして関わらせていただくことになりました、自称筋肉担当です。

Claude Codeが使えなくなったので再度環境を作り直した手順をまとめます。

事象整理(起きたこと)

  • ある日突然 claude 実行で zsh: command not found: claude
  • Node の LTS を更新した直後だったため、原因候補は PATH / Node切替による global npm の分離 / インストール方式の競合かも
  • だいぶ前に環境を作ったので…どんな手順で行ったか覚えてない
    • これを機に作り直す

前提(環境・変更点)

  • PC環境:Mac(macOS)
  • シェル:zsh
  • Node 管理:nvm
  • Node 環境を 22 → 24 に更新
  • 2025/12 時点の LTS(Node 24 系)へアップデートした直後に、claude が突然見つからなくなった

「本当に PATH にいないのか」を確認する

やること

  • claude が PATH にいるか・別名/別パスに存在するかを確認
command -v claude || echo "claude not in PATH"
type -a claude 2>/dev/null || true

Node / npm の状況確認

Node更新が絡む場合は必須。

  • Node/npm の実体・バージョン確認(nvm 配下か、brew 配下か、etc.)
node -v
npm -v
which node
which npm

nvm のバージョン並走状況を確認

やること

  • Node を複数入れていると「Nodeごとに global npm が別世界」なので、どれが active か・何が残っているかを把握
command -v nvm >/dev/null && nvm ls

(今回の状態:v18 / v20 / v22 / v24 が並走(まじか)、default は lts/* -> v24)

なぜnvmで管理しているかは個人的に管理しやすいから。これ以外の管理方法でもOK。

どの Node に npm版 claude が入っているかを棚卸し

やること

  • Nodeごとに global npm を確認し、claude が「どの Node にだけいる/いない」を特定

これで「Node更新が原因で消えた」の正体(=別バージョンに残ってただけ)を突き止める。

for v in 18.14.2 20.11.0 22.17.0 24.11.1; do
  nvm use $v >/dev/null
  echo "== node $(node -v) =="
  npm -g ls --depth=0 2>/dev/null | grep -E "claude|anthropic" || echo "(no claude)"
done

(今回の結果)

対策方針を決める

再発防止のため “ネイティブ版” に寄せる。

やること

  • npm版は Node 切替で見失いやすいので、Homebrew管理(ネイティブ)に統一して安定化する

以降「Node更新したらclaude消えた」が起きにくい(はずだと信じたい)

brew install --cask claude-code
exec zsh -l

インストールできたかdoctor でチェック

やること

  • claude がどの方式で動いているか(brew か npm か)を doctor で確定させる
type -a claude
which claude
claude doctor
  • claude/opt/homebrew/bin/claude
  • package-manager (homebrew) と表示
  • Auto-updates は package manager 管理

競合(混線)状態を予防

(任意だが推奨したい)

やること

  • nvm の特定 Node(今回 v22)に npm版 claude が残っていると、将来 nvm use 22 した瞬間に“別のclaude”が出てきて混乱する
  • npm版を削除して brew版一本化
nvm use 22.17.0 >/dev/null
npm -g rm @anthropic-ai/claude-code

最後に余談、これを機に古いNodeを整理整頓する。

古い Node を整理(任意)

やること

  • 古い Node を残す理由がなければ削除、将来の混線を減らす
nvm uninstall 18.14.2
nvm uninstall 20.11.0

まとめ

  • command not found の正体は「消えた」ではなく、Node切替(nvm)により npm の global が分離された
    • 普段使いの Node(v24) 側から見えなくなった可能性が高い(気がする)
  • 対策として Homebrew(cask) の Claude Code に統一し、claude doctor で brew 管理で動作していることを確定
  • 再発防止として nvm 側に残っていた npm版 claude を削除(任意)、古い Node バージョンも整理(任意)
  • claude codeが推奨するやり方を踏襲して環境は作る方がいい
Powered by Tomo with passion.