Claude CodeがMacで理由もなく強制終了する「Malicious Script Blocked」問題を追った

Claude CodeがMacで理由もなく強制終了する「Malicious Script Blocked」問題を追った

Claude Codeが作業中に突然killされ「Malicious Script Blocked」と表示される不具合をGitHub Issueから整理。犯人はmacOS標準のXProtectで、スクリプト監視ルールが2026年に2→14へ拡大されたことが背景にある。切り分け方と現状の対処法をまとめた。

エンジニアのゆとです。

作業中のClaude Codeが何の前触れもなく落ちて、画面に「Malicious Script Blocked」という見慣れないアラートだけが残る——という報告が2026年9月に入ってGitHub Issueに集まっている。エラーメッセージもスタックトレースも残らない。ターミナルには何も表示されず、ただプロセスが消える。しかも再現条件が特定できず、「さっきまで同じような作業をしていたのに、今回だけ落ちた」というランダム性が一番厄介だ。

原因を追うと、Claude Code自体のバグというより、macOSに標準搭載されているマルウェア対策機構XProtectが関係している可能性が高いことが分かってきた。何が起きているのか、自分の環境で疑わしいか確認する方法、今できる対処法を整理する。

まず結論——原因はほぼ特定できたが、Anthropic側の修正はまだない

対象になっているのはmacOS版のClaude Codeで、報告に出ているバージョンは2.1.246〜2.1.258あたり(2026年8月末〜9月上旬)。Terminal.app・iTerm2どちらでも起きており、特定の設定やプロジェクトに依存する再現条件は今のところ見つかっていない。

症状は共通していて、作業中に前触れなくプロセスがkillされ、次のようなダイアログが表示される。

Malicious Script Blocked

A script was blocked because it contains malware.
The script did not harm your Mac.

[Done]

起点になっているGitHub Issue #91447は2026年9月2日にオープンされ、9月8日時点でもOpenのまま、Anthropic側から原因を特定したという公式コメントはまだ付いていない。ラベルにはbug・platform:macos・area:packaging・area:securityが付いており、パッケージング(配布バイナリ)とセキュリティ機構の両方に関わる不具合として扱われていることが分かる。

先に結論を書いておくと、この文言はAppleのマルウェア対策機構XProtectが表示するものであり、Claude Codeが本当に悪意あるスクリプトを実行しようとしたわけではない。とはいえ現時点で確実な回避策は存在しないので、「これはXProtectの誤検知だと理解した上で、発生したら再実行する」レベルの対応が現実的なところだ。

何が起きているか——GitHub Issueに集まった報告

最初の報告者は、直近1週間で3回この現象に遭遇したと書いている。状況はいずれも特に危険な操作をしていたわけではない。

  • ドキュメントや既存ファイルを読んで、これから書くコードの計画を立てている最中
  • プルリクエストのレビューコメントを読み、修正コードとコメントを書いている最中
  • ドメイン名の情報収集でwhoisコマンド等を実行している最中

いずれもコード実行そのものは無害で、ユーザー自身が「危ないことをした」という自覚はない。報告者自身の言葉を借りると、Claude Code自身に聞いても「hereドキュメント内のPythonスクリプトの何かに反応したのかもしれない」という程度の推測しか返ってこなかったという。

再現性がないのも厄介なポイントだ。報告者は「同じ1週間で数十回セッションを回して、影響を受けなかったものも大量にある」と書いており、並行してセッションを走らせていても発生するのは一部だけ。バージョンでいうと2.1.240前後では起きておらず、2.1.246以降のどこかで発生し始めたという申告があり、リグレッションとして扱われている。

コメント欄には「同じ現象が起きている」という追認が複数付いており、少なくとも自分以外にも複数の独立したユーザーが同じアラートを踏んでいることが確認できる。

github.com
[BUG] MacOS kills Claude and says "Malicious Script Blocked" · Issue #91447 今回取り上げた不具合の報告元。再現状況や複数ユーザーからの追認コメントが確認できる。記事執筆時点(2026年9月上旬)でOpenのまま。

犯人はおそらくXProtect——Macに標準搭載された「見えないウイルス対策」

XProtectという名前を意識したことがない人も多いと思うが、これはmacOSに標準搭載されているシグネチャベースのマルウェア対策機構だ。サードパーティのウイルス対策ソフトのように別途インストールする必要はなく、常時バックグラウンドで動いている。

Appleの公式ドキュメントでは、macOSのマルウェア対策は次の3層構造になっていると説明されている。

  • 公証(Notarization): アプリを配布する前にAppleが既知のマルウェアパターンをスキャンする仕組み
  • Gatekeeper: ダウンロードしたアプリを初回起動する際、開発者の署名と公証状況を確認する仕組み
  • XProtect: 既知のマルウェアの特徴をYARAシグネチャで管理し、アプリの初回起動時・ファイルシステム上での変更検知時・シグネチャ更新時に自動でスキャンする仕組み

XProtectは既知マルウェアのシグネチャに一致するものを検出すると、実行をブロックし、該当ファイルをゴミ箱に移動したうえでユーザーに通知する。今回のアラートに出てくる「A script was blocked because it contains malware. The script did not harm your Mac.」という文言は、まさにこのXProtectが出す通知の定型文と一致している。

support.apple.com
macOSでのマルウェアからの保護 - Apple サポート 公証・Gatekeeper・XProtectの3層防御について、Apple公式が仕組みを解説しているページ。

なぜスクリプトを実行するだけのはずのClaude Codeが引っかかるのか

XProtectには、アプリ本体のスキャンとは別に、AppleScript/OSAScriptの内容を専門にスキャンするXPScripts.yrというルールセットがある。Open Scripting frameworkがスクリプトを実行しようとするタイミングで、メインのYaraルールとは別に呼び出される仕組みだ。

このルールセットは2026年に入って大きく改訂されており、あるバージョンではルール数が2件から14件へと一気に7倍に増えている。検知対象には「ブラウザ名を検索する挙動」「暗号資産ウォレットに関連するパスを探す挙動」など、既知マルウェアが実際に使う特徴的なパターンが含まれている。

ここから先は状況証拠からの推測になるが、Claude Codeが内部でシステム通知やクリップボード操作のためにAppleScript/osascriptを呼び出す場面、あるいはBashのheredocで生成した一時スクリプトを実行する場面が、拡大されたルールのどれかに部分一致してしまっている可能性が高い。報告者が挙げていた「ブラウザのタブ情報を読む作業」「ドメイン名をまとめて調べるwhois作業」は、いずれも偶然にも「ブラウザ名」「ドメイン・ネットワーク情報」を扱うマルウェアの挙動パターンと字面が似通いやすい領域でもある。

念のため書いておくと、AnthropicからもApple側からも、この一致がなぜ起きるのかを公式に説明したコメントはまだ出ていない。あくまで公開されているXPScripts.yrの改訂内容とIssueの報告内容を突き合わせた上での推測であり、確定した原因ではない点は踏まえておいてほしい。

eclecticlight.co
How XProtect is hunting scripts – The Eclectic Light Company XPScripts.yrルールの改訂内容を独自に解析した技術ブログ。ルール数が2件から14件に拡大された経緯が確認できる。

自分の環境で本当にXProtectが原因か確認する方法

Claude Codeが理由もなく落ちたときに、それが今回の現象なのか、それとも別の原因(メモリ不足やネットワーク断など)なのかを切り分けたい場合、以下の手順が使える。

まずConsole.appを開き、左サイドバーで「すべてのメッセージ」を選択したうえで、検索欄にXProtectまたはmaliciousと入力する。プロセスがkillされた直前後の時間帯にXProtect関連のログが出ていれば、それが今回の現象である可能性が高い。

ターミナルからであれば、統合ログを直接検索することもできる。

# 直近1時間のログから「malicious」を含むメッセージを検索
log show --predicate 'eventMessage CONTAINS[c] "malicious"' --last 1h --info

もう一つの切り分けポイントは、クラッシュレポートの有無だ。メモリ不足(OOM)やセグメンテーションフォルトでプロセスが落ちた場合は~/Library/Logs/DiagnosticReports/にclaude関連のクラッシュレポートが残るのが普通だが、XProtectによるkillの場合はアプリ側の異常終了ではなく外部から強制終了されているため、クラッシュレポートが残らないケースが多い。「クラッシュレポートがないのにプロセスだけ消えている」という状態であれば、今回の現象を疑う根拠になる。

あわせてclaude --versionとsw_versでClaude Codeとmacのバージョンを控えておくと、Issueに再現報告を追加する際にそのまま使える。

Claude Codeが起動直後にSIGSEGVで落ちる——glibc 2.44とmimallocの干渉バグをGitHub Issueで追った
Claude Codeが起動直後にSIGSEGVで落ちる——glibc 2.44とmimallocの干渉バグをGitHub Issueで追ったClaude Code v2.1.242/2.1.243でArch Linux・CachyOSなどglibc 2.44環境が「claude --version」すら実行できずSIGSEGVでクラッシュする不具合を解説。原因はバンドルmimallocのfree(NULL)未対応、v2.1.245で修正済み。ダウングレード手順つき。読む →

今できる対処法

上流の修正を待つ間、実務でできることは限られているが整理しておく。

  1. まず再実行する。ランダムに発生する現象なので、同じ作業をやり直すと大抵は問題なく通る
  2. Claude Codeを最新版に更新しておく。claude updateを実行しても直接この不具合を修正するわけではないが、報告時点のバージョン(2.1.246〜2.1.258)より新しいビルドで発生頻度が変わっている可能性がある
  3. GitHub Issue #91447にリアクションを付ける、または自分の再現条件(macOSバージョン・Claude Codeバージョン・そのとき何をしていたか)をコメントで追加する。Anthropic側が原因を絞り込むための一次情報になる
  4. どうしても頻発する場合は、長時間の連続実行を避けて作業をこまめに区切る。仮説段階だが、報告に挙がっている事例はいずれも「ドキュメントを読み込みながら計画を立てる」「複数のドメイン情報をまとめて調べる」といった、比較的長時間・情報量の多いタスク中に発生している
  5. サードパーティのセキュリティソフト(EDR製品など)を併用している場合は、XProtectとの多重スキャンが引き金になっていないか、一時的に対象から除外して切り分けてみる
Claude Codeの終了コード1・3・137:原因を数字だけで決めない
Claude Codeの終了コード1・3・137:原因を数字だけで決めないClaude Codeの「process exited with code 1/3/127/137」エラーを原因別に整理。認証競合・Windows特有のクラッシュ・OOM・新設定sandbox.network.strictAllowlistまで、切り分け手順つきで解説する。読む →

過度に心配しなくていい理由

アラート自体の文言が「The script did not harm your Mac」と明言している通り、ブロックされたスクリプトが実際に何か悪さをしたわけではない。XProtectは「実行前に止める」防御機構なので、実害という意味では発生しても被害はゼロだ。

ただし、これが月に何度も起きる、あるいは特定の作業だけで毎回起きるという場合は、話が少し変わってくる。会社のMDMプロファイルや別のセキュリティ製品が同時に動いている環境では、XProtect単体とは違う挙動になっていることもあるので、その場合はIT管理者に相談したうえでIssueにも環境情報を書き添えておくと、原因特定の助けになる。

2026年9月はこの手の「地味だが作業を止められる」不具合の報告が続いた時期でもあった。設定は合っているのに挙動だけがおかしいという別のリグレッションも同じ時期に報告されている。

Claude CodeのCo-Authored-Byが消えない — attribution設定を書いても上書きされる2026年9月の不具合
Claude CodeのCo-Authored-Byが消えない — attribution設定を書いても上書きされる2026年9月の不具合attribution設定でCo-Authored-Byを無効化しても、セッション途中のsystem-reminderが「これが優先」と主張して上書きする不具合が2026年9月に複数報告された。原因と、公開PRに紛れ込ませないための回避策をGitHub Issueの実例から整理した。読む →

FAQ

「Malicious Script Blocked」と出たパソコンはウイルスに感染していますか?

いいえ。アラート自体が「The script did not harm your Mac(このスクリプトはMacに害を与えていません)」と明言している通り、XProtectが実行前にブロックしているため実害はない。ウイルス対策ソフトでの追加スキャンは基本的に不要。

XProtectを無効化すれば直りますか?

技術的には無効化する手段はあるが、macOS標準のマルウェア対策そのものを止めることになるため推奨しない。今回のような誤検知の可能性がある不具合であっても、無効化で得られるものよりリスクの方が大きい。

これはClaude Code特有の問題ですか?

現状の報告はすべてClaude Codeユーザーからのものだが、XProtectのXPScripts.yrルールはOSAScript/AppleScriptの実行全般を監視する仕組みなので、内部で同種のスクリプト実行を行う他のAIコーディングツールでも理論上は同じ現象が起こりうる。ただし記事執筆時点でそうした報告は確認できていない。

いつ直りますか?

記事執筆時点(2026年9月上旬)でGitHub Issue #91447はOpenのままで、Anthropic側からの修正版アナウンスはまだ出ていない。Issueをウォッチしておくか、発生時は再実行で回避するのが現実的な対応になる。

macOSのセキュリティ機構が誤検知でツールの邪魔をしてくる、というのは今回が初めてではないし、最後でもないと思う。実害がないと分かっているだけでも精神衛生上はましだが、原因不明のまま作業が止まるのはやはりストレスだ。直るまでは、落ちたら淡々と再実行する、くらいの距離感で付き合うのがちょうどいい。

← 記事一覧に戻る