dyld cannot loadエラーの原因と対処 — Claude Code
macOSでClaude Codeが「dyld: cannot load」で落ちるのは、OSバージョンがバイナリの要求より古いサインです。2つのエラー文言の見分け方、macOS 11・12で起きた報告、更新できないときの選択肢をまとめます。
「dyld: cannot load」はmacOSのバージョンが古いサイン
macOSでClaude Codeをインストールまたは実行しようとしたとき、次のようなエラーで止まることがあります。
dyld: Symbol not found
dyld: cannot load
Abort trap: 6dyldはmacOSの動的リンカ(dynamic linker)で、実行ファイルが必要とする共有ライブラリをプロセス起動時に読み込みます。この段階で落ちるということは、ダウンロードしたネイティブバイナリが、いま動いているmacOSのバージョンやハードウェアと合っていないということです。
Claude Codeの動作要件はmacOS 13.0以降です。公式のトラブルシューティングは、この3つの表示を、macOSのバージョンまたはハードウェアとバイナリの不一致として扱っています。Symbol not foundとcannot loadの例では、原因はmacOSの古さだと説明されています。まず次の節で、手元に出た文言がどちらのパターンかを見ます。
エラー文言は2種類ある
パターン1 — Symbol not found(libicucore関連)
libicucore(国際化・文字処理のためのシステムライブラリ)への参照でSymbol not foundが出る場合、次のような詳細が一緒に表示されます。
dyld: Symbol not found: _ubrk_clone
Referenced from: claude-darwin-x64 (which was built for Mac OS X 13.0)
Expected in: /usr/lib/libicucore.A.dylibwhich was built for Mac OS X 13.0が、バイナリがmacOS 13.0向けにビルドされていることを示す一文です。バイナリが呼ぼうとした関数(シンボル)が、古いmacOSのシステムライブラリに無いと、この形で止まります。
パターン2 — cannot load(load command関連)
もう一つは、ローダーがバイナリの読み込み命令そのものを拒否するケースです。
dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)
Abort trap: 6load commandは、Mach-O形式の実行ファイルがOSに「どう読み込むか」を伝える低レベルの命令です。古いmacOSが知らない種類のcommandが含まれていると、読み込みを拒否してAbort trap: 6で終了します。パターン1と文言は違っても、公式の説明はどちらも「macOSが古い」です。
手元のMacが要件を満たしているか確かめる
画面左上のAppleメニューから「このMacについて」を開くと、バージョンが表示されます。ターミナルからは次のコマンドで確認できます。
sw_vers
uname -mApple SiliconのMacでmacOS 26.3.1を動かしている環境(Claude Code v2.1.287)で実行すると、次のように返ります。
ProductName: macOS
ProductVersion: 26.3.1
ProductVersionExtra: (a)
BuildVersion: 25D771280a
arm64見るのはProductVersionの先頭の数字です。macOSの名称は14、15、そして26へと続いており、26は13.0より新しいバージョンです。Intel Macならuname -mはx86_64を返します。
先頭の数字だけを13と比べるなら、次の1行でも判定できます。
[ "$(sw_vers -productVersion | cut -d. -f1)" -ge 13 ] && echo ok || echo too-old上の環境ではokと出ました。too-oldなら、次の節の対処に進みます。
13.0未満だったときの対処
dyldエラーが出たときの手順
- 1
macOSのバージョンを確認する
sw_vers -productVersionの値が13.0以降かを見ます。13.0ちょうども対象に含まれます。 - 2
13.0未満なら、macOSを更新する
「システム設定」→「一般」→「ソフトウェアアップデート」から更新します。13.0以降が一覧に出てこない場合は、次の節の選択肢に進みます。
- 3
更新後にインストールをやり直す
sw_versで13.0以降になったことを確かめ、インストールスクリプトを再実行します。 - 4
13.0以降なのに出るなら、別の原因を疑う
13.0以降と表示されていても
dyldが出る報告があります。issue #69928は題名がmacOS 13.xで、中身はlibc++のシンボル不足でした。その場合はExpected in:のライブラリ名とReferenced from:のバージョンを控え、issueを検索します。Illegal instructionが出るときはCPU側の問題なので、AVX非対応の記事が当てはまります。
手順3のインストールスクリプトは次のとおりです。
curl -fsSL https://claude.ai/install.sh | bash公式のトラブルシューティングは、Homebrewなどの方法も同じバイナリを取得するので、このエラーは解決しないと説明しています。Claude Codeの導入方法の比較にあるとおり、npmも同じネイティブバイナリを取り込むため、インストール手段を替えても結果は変わりません。
macOS 11・12で実際に起きた報告
公式はmacOS 13.0以降のみを要件としていますが、GitHubのissueには、それより古いmacOSで起動できなくなった報告が複数あります。出るシンボルは毎回同じではありません。
古いmacOSで落ちた報告
- 2026年4月v2.1.113がmacOS 11で起動しない
macOS 11.7(Big Sur)でnpm経由の
claude --versionが、_ubrk_cloneのSymbol not foundで止まりました。報告者はv2.1.112では動くとして、そちらへの固定を回避策に挙げています(issue #50383)。 - 2026年9月1日v2.1.257がmacOS 12で起動しない
自動更新でv2.1.257に上がったmacOS 12.7(Monterey)で、
claude --versionを含む全コマンドが止まりました。_DNSServiceGetAddrInfoExのSymbol not foundです。参照元は~/.local/share/claude/versions/2.1.257、期待先は/usr/lib/libSystem.B.dylibです(issue #91309)。 - 2026年9月1日v2.1.258で修正
公式のchangelogには、v2.1.255で入ったmacOS 12(Monterey)での起動失敗を直したとあります。
2件目で注目したいのは、エラーの出る場所です。パターン1のlibicucoreではなく、libSystemの別のシンボルが足りませんでした。つまり「libicucoreが出たら」という覚え方は当てになりません。見分けの軸は、which was built for Mac OS X 13.0のような記述と、Expected in:に続くシステムライブラリの場所です。libc++の例もあります。issue #69928では、インストールスクリプトの実行中にclaude-2.1.185-darwin-x64が/usr/lib/libc++.1.dylibのシンボルを見つけられませんでした。
同じissueでは、v2.1.251とv2.1.252はmacOS 12.7でも起動したという報告があります。2.1.253から2.1.256は公開されておらず、2.1.257が回帰を実際に受け取れた最初のリリースです。公式の要件は13.0以降なので、古いmacOSで動いている状態は保証されたものではありません。
自動更新が「動かないバージョン」を入れてしまう点も報告されています。このissueでは、更新が起動用のリンクを新しいバイナリへ付け替え、claudeそのものが動かなくなっていました。
macOS 12では、v2.1.258で起動を確認した報告があります。2.1.257に固定する必要はなく、インストールスクリプトを再実行して2.1.258以降へ上げれば足ります。固定していた場合は、次のDISABLE_AUTOUPDATERも外せます。macOS 11のように修正の報告が無い環境では、動いたバージョンを指定して入れます。番号は2.1.112のように、動いた版へ置き換えます。
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.112バージョン指定のインストールは公式のsetupに載っている書式です。自動更新を止める設定としてDISABLE_AUTOUPDATERもあり、settings.jsonのenvキーに"1"で指定します。DISABLE_AUTOUPDATERが止めるのはバックグラウンドの確認だけで、claude updateとclaude installは動きます。手動更新も含めて止めるならDISABLE_UPDATESです。更新を止めたままにすると新機能や修正も入らなくなるので、固定は新しいmacOSへ移れるまでのつなぎです。
Claude Desktop同梱のClaude Codeでも同じ
macOS 12のIntel MacBook Proでは、Claude Desktopが同梱するClaude Code(2.1.255)でも落ちたという報告が出ています(issue #91625)。表示は次のとおりです。
Claude Code requires a newer OS version. Update your operating system to continue.
dyld[...]: Symbol not found: _DNSServiceGetAddrInfoExCLIとデスクトップのどちらから起動しても、足りないのはシステム側の機能です。Desktop同梱の版はDesktop側の更新を待つことになります。ターミナルのclaudeは、インストールスクリプトで別に入れると動いたという報告があります。根本の解決はmacOSの更新です。
更新できない、または権限がないとき
13.0未満のMacは公式にサポートされず、動くバージョンは保証されません。将来の更新で再び落ちる可能性があり、恒久策は13.0以降が動くMacへの移行です。選択肢は3つです。13.0以降が動く別のMacで使うか、動いたバージョンに固定するか、ブラウザ版のclaude.aiを使うかです。claude.aiはブラウザで動くため手元のmacOSに縛られませんが、ターミナル上のファイル操作を伴うClaude Codeの代わりにはなりません。
会社支給のMacでmacOSの更新権限がない場合や、MDM(モバイルデバイス管理)でOSのバージョンが固定されている場合は、IT管理者への依頼が必要です。依頼にはエラーログのdyldから始まる行と、要件がmacOS 13.0以降である点を添えると話が早く進みます。curlのインストールスクリプトを実行できない環境も同じで、導入経路を管理者に相談することになります。
IntelかApple Siliconかは関係あるか
Symbol not foundの例に出るclaude-darwin-x64は、Intel Mac向けのバイナリ名です。Apple Siliconではdarwin-arm64向けの別のバイナリが使われます。npmにも、プラットフォーム別の依存パッケージがあります。@anthropic-ai/claude-code-darwin-arm64と@anthropic-ai/claude-code-darwin-x64です。
どちらのアーキテクチャでも、原因の構造(OSバージョンの不足)は同じです。uname -mはバイナリの種類を見るためのもので、dyldエラーの切り分けではOSバージョンの数値を先に確認します。
よくある質問
画面にAbort trap: 6としか出ません
インストールスクリプトの途中で落ちると、dyldの行の後に、シェルがAbort trap: 6を別の行で出すことがあります。issue #69928では、dyld: Symbol not foundの行に続けて、スクリプトのinstallの呼び出しがAbort trap: 6で終了していました。zsh: abort claudeのように、シェル側のメッセージが付く形もあります。どちらもdyldの行を探せば、原因のシステムライブラリが分かります。
Xcodeのコマンドラインツールで直りますか
Expected in:が指すのは、/usr/lib/libicucore.A.dylibや/usr/lib/libSystem.B.dylibのようなmacOS本体のライブラリです。Xcode側の更新ではなく、OSそのものの更新が公式の示す対処です。
まとめ
Expected in:が/usr/lib/のシステムライブラリを指していれば、再インストールや入れ方の変更では直らず、OS側で決まる問題です。他のOS別インストールエラーはClaude Codeインストールエラーの切り分けチェックリストにまとめています。