8月28日、Bruno Ferreiraが「Claude nukes a developer's 700 GB home directory while testing deletion safeguards; automatic model safety downgrade may have contributed to the screw-up」と題した記事を公開した。AnthropicのAIエージェントが「削除しないことを確認するスクリプト」のテスト中にホームディレクトリ700GBを丸ごと消去し、しかもその被害を拡大させたのが「安全性のための機能」だったという、皮肉な構造を持つ事故の報告だ。AIエージェントにファイルシステム操作を委ねるリスクを改めて問い直す事例として注目を集めている。
「削除しないことを確認するスクリプト」が700GBを消した
開発者Sebastien Guillemotは、AIエージェントが/tmpディレクトリに大量のゴミファイルを残していく問題に頭を悩ませていた。そこで、AnthropicのAIエージェント(元記事ではモデル名を含む経緯が詳細に記されている。後述)に対し、各エージェントを/tmp配下の専用フォルダにサンドボックスし、終了後にクリーンアップするスクリプトの作成を依頼した。
要件の核心は「実行中のファイルを誤って削除しない」こと。AIエージェントは稼働中エージェントを検出して削除を遅延させるロジックを提案したが、Guillemotが「複雑すぎる」と突き返した。
ここからが問題の連鎖だ。
削除処理を含むスクリプトであることを察知したエージェントは、自発的にアドバーサリアルレビュー(自己検証のため別インスタンスを立ち上げてコードの安全性を確認する手法)を実行した。これをAnthropicのハーネス(エージェント実行基盤)が「リスクあり」と判断し、モデルを自動ダウングレードした。
ダウングレードされたモデルが変数名の衝突を見落とした
ダウングレード後のモデルは、安全性テストとして削除コマンドのターゲットが/tmpやホームディレクトリと一致しないかを検証しようとした。ここまでは正しい。問題はテスト後のクリーンアップ処理にあった。
テスト本体とクリーンアップで同じ変数名が再利用されており、その結果、クリーンアップステップがユーザーのホームディレクトリを削除対象として実行した。Guillemotが気づいて処理を止めたときには、すでに700GBのデータと1週間分の作業が消えていた。
皮肉なことに、エージェントはホームディレクトリを消した後、本来のターゲットだった/tmpはそのまま残した。
モデルのダウングレードが事故を拡大した可能性
この事故で元記事が最も強調するのが、自動ダウングレードの構造的問題だ。元記事によれば、Anthropicのハーネスはリスクの高いタスクと判断した場合に自動的により安全性重視のモデルへ切り替える仕組みを備えており、今回その切り替えが発生した。元記事はダウングレード前後のモデル名についても言及しているが、本稿ではその名称の正確な表記を元記事に委ね、「コーディング能力の高いモデルから、より安全性重視の別モデルへの切り替え」として整理する。
問題の構造はシンプルだ。コーディング性能の高いモデルであれば検出できたかもしれない変数名の衝突を、ダウングレード後のモデルが見落とした。安全性を担保するために導入した機構が、より能力の低いモデルを走らせる結果となり、その低いモデルがより致命的なミスを犯した——という逆説だ。
なお、Guillemotはgit、nix、セッションログなどを駆使してデータの大部分を復元できたという。ただし、記事はこう締めくくる。「これだけ多くのエージェントが動いていたのに、日次バックアップは一つも走っていなかった」。
AIコーディングエージェントへの信頼コストを問い直す事例
今回の事故はClaudeに固有の問題というより、AIエージェントにファイルシステムの破壊的操作を委ねる際のリスク管理が業界全体として整備途上であることを示す事例として読むべきだろう。ファイル削除・移動・上書きといった非可逆操作をエージェントに許可する設計では、バックアップ戦略やサンドボックス環境の整備が前提条件となる。
コミュニティでは、エージェントの動作環境をホストシステムから隔離するアプローチへの関心が高まっているが、「そういったツールが必要な状況になっていること自体が問題だ」という声もある(※元記事に記載のコミュニティ反応より)。
※編集部の考察:自動ダウングレードのような安全機構が意図せず別のリスクを生む「安全策の副作用」は、AIエージェントの設計において今後も継続的に検討が必要なテーマだ。性能と安全性のトレードオフをどのレイヤーで管理するかは、エージェント基盤全体の設計思想に関わる。