Claude Code Macインストール — ネイティブとHomebrew、どちらを選ぶか
Claude CodeをMacに入れる方法は主に3つ。ネイティブインストーラー・Homebrew・npmの違いと、macOS特有のエラーへの対処までまとめます。
Macでの入れ方は3通りある
MacへのClaude Code導入は、ネイティブインストーラー・Homebrew・npmの3経路があります。迷ったらネイティブインストーラーが最短で、ターミナルに1行のcurlコマンドを貼るだけです。3経路は、更新の仕組みがいちばん違います。
3経路の違いは更新の扱い
ネイティブインストーラー
バックグラウンドで自動更新されます。書き込み先はホームディレクトリ内です。
Homebrew
自動更新はされず、
brew upgradeで手動更新します。他のツールをbrewでまとめて管理している人向けです。npm
Node.js 22以降が前提のグローバルパッケージです。更新は
npm install -g @anthropic-ai/claude-code@latestで行います。
評価軸ごとの比較はClaude Code Homebrew・npm・ネイティブ導入の比較にあります。
インストール前に確認する要件
導入前に、次の要件を満たしているか確認します。
| 項目 | 要件 |
|---|---|
| OS | 要件macOS 13.0以降 |
| メモリ | 要件4GB以上 |
| プロセッサ | 要件Appleシリコン(ARM64)またはIntel(x64) |
| ネットワーク | 要件インターネット接続が必要 |
| シェル | 要件zsh(macOSの既定)またはbash |
| 利用地域 | 要件Anthropicの対応国・地域 |
検索コマンドが使うripgrepは通常はClaude Codeに同梱されており、個別のインストールは不要です。
ネイティブインストーラーで入れて動作を確かめる
ターミナルを開いて、次の手順で進めます。
ネイティブインストーラーの流れ
- 1
curlコマンドを実行する
claude本体が~/.local/bin/claudeに置かれ、各バージョンの実体は~/.local/share/claude/versions/以下に入ります。 - 2
プロジェクトで claude を起動する
作業したいディレクトリで
claudeを実行し、ブラウザの案内に沿ってログインします。環境変数ANTHROPIC_API_KEYが設定されている場合は、ブラウザは開かず、そのキーを使うかどうかを一度だけ尋ねられます。 - 3
別のターミナルで確かめる
claude --versionでバージョンが出れば完了です。出力例は下に載せています。
手順1のコマンドです。
curl -fsSL https://claude.ai/install.sh | bash手順3のコマンドと、v2.1.289の出力例です。
claude --version
2.1.289 (Claude Code)
ls -la ~/.local/bin/claude
lrwxr-xr-x@ 1 user staff 48 10月 4 08:38 ~/.local/bin/claude -> /Users/user/.local/share/claude/versions/2.1.289~/.local/bin/claudeは、versions/以下の実体へのシンボリックリンクです。バージョン番号がリンク先のディレクトリ名と一致していれば、ネイティブインストールが正常に入っています。
インストーラーは、このほかにも次の場所を使います。権限エラーが出たときの調査対象になります。
| 場所 | 用途 |
|---|---|
~/.claude/downloads/ | 用途ダウンロードしたバイナリの置き場 |
~/.local/state/claude/ | 用途ロックファイル |
~/.cache/claude/ | 用途ダウンロード途中のデータ |
~/.claude.json | 用途グローバル設定。インストール方法もここに記録される |
XDG_DATA_HOME・XDG_STATE_HOME・XDG_CACHE_HOMEを設定していると、~/.local/share・~/.local/state・~/.cacheの代わりにそちらが使われます。CLAUDE_CONFIG_DIRを設定していれば、~/.claude.jsonの置き場もそのディレクトリの下に移ります。
署名と公証
バイナリは「Anthropic PBC」名義でコード署名され、Appleの公証も済んでいます。署名を自分で確かめたい場合は、次のコマンドで検証できます。
コード署名を手動で検証する
codesign --verify --verbose ./claudemanifest.jsonの署名検証と合わせると、ダウンロードしたバイナリが改ざんされていないかまで確認できます。マニフェスト署名はv2.1.89以降のリリースから提供されています。
自動更新の挙動
Claude Codeは起動時と実行中に定期的に更新を確認し、バックグラウンドでダウンロードします。更新が効くのは次に起動したときです。直近の更新結果はclaude doctorで見られます。
claude updateを実行すると、次の確認を待たずにすぐ更新できます。更新があればSuccessfully updated from <旧バージョン> to version <新バージョン>と表示され、最新ならClaude Code is up to date (<バージョン>)と出ます。
~/.local/bin/claudeを自作のスクリプトやシンボリックリンクに差し替えている場合、v2.1.207以降は自動更新もclaude updateもそれを置き換えません。新しいバージョンはversions/以下に入り、どれを動かすかは差し替えた側が決めます。管理を戻したいときは~/.local/bin/claudeを削除してclaude updateを実行します。
Homebrewで入れる
Homebrewで他のCLIツールを管理しているなら、caskでの導入も選べます。
brew install --cask claude-codecaskはclaude-codeとclaude-code@latestの2種類で、追従するチャネルが違います(下の「stableとlatestの使い分け」を参照)。入れたcaskに合わせて更新コマンドも変わります。
brew upgrade claude-code
brew upgrade claude-code@latest環境変数CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATEを1にすると、新しいバージョンが出たときにClaude Code自身がバックグラウンドでこの更新コマンドを代行し、成功後に再起動を促します。対象はClaude Codeのパッケージだけで、brewで入れた他のソフトには影響しません。
Homebrewは更新後も古いバージョンをディスクに残します。容量が気になるときはbrew cleanupを定期的に実行します。
npmで入れる
Node.jsのワークフローに組み込みたい場合は、npmのグローバルパッケージとしても導入できます。
npm install -g @anthropic-ai/claude-codenpmパッケージはNode.js 22以降が前提です。古いNode.jsではEBADENGINE警告が出ますが、インストールは完了してclaudeも動きます。パッケージはプラットフォーム別の依存関係(Appleシリコンなら@anthropic-ai/claude-code-darwin-arm64、Intelなら@anthropic-ai/claude-code-darwin-x64)経由でネイティブバイナリを取得し、実行時にNode.js自体は使わないためです。
更新はnpm install -g @anthropic-ai/claude-code@latestです。npm update -gは、最初にインストールしたときのsemver範囲を守るので、最新リリースまで進まないことがあります。
sudo npm install -gは使わないでください。権限エラーや意図しない所有権の変更につながります。npm固有の権限エラーが出たときは、ネイティブインストーラーに切り替える方法があります。
stableとlatestの使い分け
ネイティブインストーラーは、バージョン番号かlatest・stableのチャネルを引数に取れます。何も指定しなければlatestで、インストール時に選んだチャネルが自動更新の既定になります。
2つのチャネル
stable
最新リリースからおよそ1週間遅れで追従し、大きな不具合が見つかったリリースをスキップします。Homebrewではclaude-code、ネイティブではbash -s stable、設定では"autoUpdatesChannel": "stable"が対応します。
latest
リリース直後のバージョンをそのまま追跡します。Homebrewではclaude-code@latestが対応します。
stableチャネルを指定する例です。
curl -fsSL https://claude.ai/install.sh | bash -s stable特定バージョンに固定したい場合はバージョン番号を渡します。claude --versionには、渡した番号がそのまま出ます。
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89インストール済みのclaudeからは、claude installでも同じ指定ができます。v2.1.289のclaude install --helpの出力は次のとおりです。
claude install --help
Usage: claude install [options] [target]
Install Claude Code native build. Use [target] to specify version (stable,
latest, or specific version)
Options:
--force Force installation even if already installed
-h, --help Display help for command発売直後のモデルは、stableチャネルが配信するバージョンより新しいClaude Codeを要求することがあります。そのモデルをすぐ使いたいときはlatestに移ります。latestからstableへ切り替えると、現在のバージョンにとどまるか、ダウングレードを許可するかを/configで尋ねられます。とどまるを選ぶとminimumVersionにそのバージョンが入り、以降の自動更新とclaude updateは、その値より古いバージョンを入れません。
インストールで止まったとき
エラー文言ごとに原因を切り分けます。まず通信できているかを見るなら、次のコマンドで確かめます。
curl -sI https://downloads.claude.ai/claude-code-releases/latest1行目がHTTP/2 200なら、サーバーには届いています。403はプロキシやネットワークフィルターがホストを止めているか、利用地域が対象外のときです。5xxは一時的な障害のことが多く、数分待って再実行します。出力が空・Could not resolve host・タイムアウトなら、ネットワーク側が接続を止めています。社内プロキシ越しなら、HTTPS_PROXYとHTTP_PROXYをプロキシのアドレスにしてからインストーラーを実行します。
dyld: cannot loadが出る
dyld: Symbol not foundやdyld: cannot load、Abort trap: 6が出た場合、バイナリがそのMacのmacOSバージョンに対応していません。libicucoreを参照するSymbol not foundは、macOSがバイナリの要求より古いときに出ます。load command ... is unknownも同じく、macOSが古いことを示します。
Appleメニューの「このMacについて」でバージョンを確認し、13.0未満ならmacOSを更新します。Homebrewも同じバイナリを取得するため、経路を変えても解決しません。詳しいエラーパターンの見分け方はdyld cannot loadエラーの原因と対処にまとめています。
TLS/SSLの接続エラーが出る
curl: (35) TLS connect errorのようなエラーは、TLSハンドシェイクの失敗です。macOS標準のcurlはKeychainの信頼ストアを使うため、macOS自体を更新するとルート証明書も更新されます。
企業のプロキシがTLSを検査する環境ではunable to get local issuer certificateやSELF_SIGNED_CERT_IN_CHAINが出ることがあります。この場合は、プロキシのCA証明書を指定してインストールを実行します。
curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bashインストール後のClaude Code本体がAPIに接続するときは、同じ証明書をNODE_EXTRA_CA_CERTSで指定します。
export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pemインストールしたのにclaudeが見つからない
zsh: command not found: claudeが出るときは、~/.local/binがPATHに入っていません。次のコマンドで確かめます。
echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"何も出なければ、zshでは次の2行でPATHに追加します。
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcbashを使っているMacでは、書き込み先が~/.bashrcではなく~/.bash_profileです。macOSのターミナルはbashをログインシェルとして起動し、~/.bash_profile・~/.bash_login・~/.profileのうち最初に存在する1つだけを読むためです。~/.bash_loginか~/.profileだけがある場合は、~/.bash_profileを新しく作らず、そのファイルに追記します。
インストールしたシェルのウィンドウは古いPATHのままなので、新しいターミナルを開いて再実行する手もあります。VS Code拡張機能特有の罠を含めた切り分けはClaude Codeのcommand not foundをPATH設定で直すで扱っています。
書き込み権限のエラーが出る
会社支給のMacなどで、インストーラーがEACCES: permission deniedで止まる場合は書き込み権限を疑います。エラーには作れなかったパスが出ます。上の表の場所のうち、まず~/.local/bin/と~/.claude/を調べます。
test -w ~/.local/bin && echo "writable" || echo "not writable"
test -w ~/.claude && echo "writable" || echo "not writable"どちらかがnot writableと出た場合、ディレクトリを作成し所有者を自分のユーザーに変更します。
sudo mkdir -p ~/.local/bin
sudo chown -R $(whoami) ~/.localRaw mode is not supportedで止まる
組織のサーバー管理設定にセキュリティ承認が必要な変更が含まれていると、v2.1.246より前のClaude Codeはclaude installの途中で承認ダイアログを出そうとします。curl ... | bashでは標準入力がパイプのため端末として使えず、Raw mode is not supportedを含むエラーで失敗します。v2.1.246以降はclaude installとclaude updateの間はダイアログを出さず、次の対話セッションで出します。ただし、forceRemoteSettingsRefreshを設定するなど、起動時に設定の取得を待つ構成では、v2.1.246以降でもダイアログが出ます。その場合、パイプ経由のインストールは失敗します。
claude updateやclaude doctorが固まる
claude updateとclaude doctorは、古いclaudeのaliasを探すためにシェル設定ファイルを読みます。対象は~/.zshrc(ZDOTDIRを設定していれば$ZDOTDIR/.zshrc)・~/.bashrc・~/.config/fish/config.fishと、macOSでは~/.bash_profile・~/.bash_login・~/.profileのうち最初に存在する1つです。v2.1.214より前は、これらのパスの実体がディレクトリだと両コマンドが固まりました。claude updateはChecking for updatesの表示のあとで止まります。
次のコマンドで、行頭がdの行がディレクトリです。ディレクトリを別名に移すか、v2.1.214以降に更新します。更新ができないので、インストーラーのコマンドを再実行して入れ直します。
ls -ld ~/.zshrc ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.config/fish/config.fishHomebrewでCask 'claude-code' is unavailableが出る
手元のcask一覧が、claude-codeの公開より古いときに出ます。brew updateで一覧を更新してから、もう一度入れます。インストールされたバージョンが想定より古いときも、同じ原因のことが多く、最新が必要ならclaude-code@latestを入れます。
brew update
brew install --cask claude-code複数のclaudeが入っているとき
経路を乗り換えたあとに古いバージョンが起動する場合は、claudeが複数の場所に入っています。次のコマンドで一覧にします。
which -a claude
ls -la ~/.local/bin/claude
ls -la ~/.claude/local/
npm -g ls @anthropic-ai/claude-code 2>/dev/null見る場所は3つです。~/.local/bin/claudeはネイティブインストーラー、~/.claude/local/は古いバージョンが作っていたnpmのローカルインストール、npm -g lsの結果はグローバルのnpm版です。v2.1.289のネイティブインストールでは、which -a claudeが~/.local/bin/claudeの1行だけを返します。
複数見つかったら、1つだけを残して他を削除します。残す1つには、推奨されている~/.local/bin/claudeのネイティブインストールを選びます。乗り換えるときは元の経路をアンインストールしてから、新しい経路で入れ直します。
rm -f ~/.local/bin/claude
rm -rf ~/.local/share/claude上は、ネイティブインストールを消すコマンドです。Homebrewで入れた場合は、入れたcaskに合わせて次のどちらかを実行します。
brew uninstall --cask claude-code
brew uninstall --cask claude-code@latestnpmで入れた場合と、古いローカルインストールを消す場合は次のとおりです。
npm uninstall -g @anthropic-ai/claude-code
rm -rf ~/.claude/localまとめ
Macで迷ったら、更新を任せられるネイティブインストーラーが手数の少ない選択です。brewで一元管理するならHomebrew、Node.jsの流れに組み込むならnpmと、更新の持ち主で選べます。インストールで止まったときは、エラー文言の先頭(dyld・TLS・EACCES・command not found)から入口を選ぶと早く切り分けられます。