9月22日、Cyber Security Newsが「Claude Code Agent Allegedly Deletes 48,000 Files in 103 Seconds」と題した記事を公開した。Claude Codeの自律エージェントが生成した削除スクリプトがWindowsジャンクションの挙動を正しく考慮しておらず、わずか103秒で48,000以上のライブファイルを消去したとされるデータ消失事故の詳細を伝えている。
Windowsのジャンクションが引き金に
事故の核心は、Windowsのディレクトリジャンクションに対してos.path.islink()がFalseを返すという仕様にある。
ジャンクション(Junction)はWindowsのNTFSが持つディレクトリレベルのリパースポイントであり、Unixのシンボリックリンクに相当するが、Pythonのos.path.islink()からは通常ディレクトリとして扱われる。Pythonの公式ドキュメントにも記載がある通り、この関数はWindowsジャンクションを検出しない。Unixライクな環境で書かれたスクリプトをWindowsで動かすと、ジャンクションをシンボリックリンクと同等に扱えるという前提が崩れることがある。これが今回の事故の根本的な原因だ。
このミラーには7,332個の通常ファイルと、ライブのDashboardツリーに向けて設定された614個のWindowsディレクトリジャンクションが含まれていた。エージェントが生成した削除スクリプトはos.walk(..., followlinks=False)を使用しており、これでジャンクション先への探索を防げると想定していた。しかし、この前提がWindowsでは致命的に機能しなかった。
スクリプト内にジャンクションのガード処理は存在したが、os.path.islink()がジャンクションに対してFalseを返すため、スクリプトはジャンクション配下のディレクトリを通常パスとして扱い、そのまま削除を実行した。保護範囲はジャンクション直下のファイルのみで、ネストされたディレクトリは保護されなかった。
103秒で48,218ファイルが消えた
AnthropicのClaude Codeユーザーが、自律コーディングエージェントによる深刻なデータ消失インシデントをRedditに投稿した。エージェントは午後10時10分31秒から10時12分14秒の間、わずか103秒で48,218個のライブファイルを削除し、さらにGitリポジトリのオブジェクトストアまで破壊したとされる。
事の発端は、タスク「#873」として定義されたミラー再構築作業だ。エージェントはbuild_mirror.pyがミラーをその場で更新できないと判断し、一時ディレクトリに保存された古いコピーを削除するPythonスクリプトを自ら生成した。ログには55,550ファイル、614ジャンクション、1,808ディレクトリの処理が記録されており、本来削除すべき7,332ファイルを差し引いた48,218個がライブ環境のファイルだったと計算されている。
Git履歴も道連れ
被害はアプリケーションファイルにとどまらなかった。.git/objects、refs、logsの各ディレクトリが空になり、git logでコミット履歴を参照できなくなった。インデックスは生き残り7,221パスを列挙し続けているが、肝心のblobデータが消えているためGitによる復元も不可能な状態だ。
728個のディレクトリが空になり、そのうち418個はRunnersディレクトリ配下だった。一方で、ルートファイル、ドキュメント、バックアップ、Dashboard外部のファイルは無事だったとされる。
AIエージェントへの「権限付与」が持つリスク
この事故が浮き彫りにするのは、エージェントへの権限付与の危うさだ。正当なメンテナンスタスクを完了させるための許可が、安全でない実装を実行する権限へと転化してしまった。
Anthropicのドキュメントによれば、Claude CodeのManualモードではBashコマンドやファイル変更に都度承認を求めるが、bypassPermissionsは確認をスキップし、隔離されたコンテナや仮想マシン内でのみ使用するべきとされている。
また、Claude Codeにはチェックポイント機能が備わっており、エージェントが加えた変更を特定の時点まで巻き戻せる仕組みだ。しかし今回のケースでは役に立たない。Bashコマンド経由の削除操作はチェックポイントの追跡対象外だからだ。
開発者が取るべき対策
記事では、AIコーディングエージェントを「会話型アシスタント」ではなく「特権を持った自動化ツール」として扱うべきだと指摘している。具体的な対策として以下が挙げられている:
- 破壊的操作の前にドライランとパスマニフェストの確認を行う
- 即時削除ではなく、可逆的な移動操作を使用する
- ファイルシステムを制限したサンドボックス内で最小権限アカウントで実行する
AnthropicはBash、PowerShell、子プロセスに対するOS強制のファイルシステム境界をドキュメント化しており、サンドボックスは「あると便利なオプション」ではなく必須の制御手段だとしている。
なお、この件はRedditへのユーザー投稿と添付された検証レポートが情報源であり、特定のClaude Codeの欠陥に起因するという独立した検証はまだ行われていない。フォレンジック証拠の公開が待たれる状況だ。
詳細はClaude Code Agent Allegedly Deletes 48,000 Files in 103 Secondsを参照していただきたい。