Claude CodeとOpenAI Codexにおけるデータ損失:AIがユーザーファイルを削除するとき
AIコーディングエージェントがシステム状態、環境変数、ツールの動作を誤解して誤ってユーザーファイルを削除した複数のインシデントの分析。5つの実例を挙げ、共通パターン(状態の混乱)を特定し、バックアップ、ワークフローの分離、より良いガードレールなどの緩和策を提案します。
本記事では、AIエージェントが操作中に誤ってユーザーデータを削除する問題を探ります。著者は、モンティ・パイソンの「清潔だがチーズのないチーズ屋」の引用を用いて、AIエージェントがデータを「清掃」しすぎることを比喩しています。
OpenAIのCodexチームのThibault Sottiaux氏は、GPT-5.6が予期せずファイルを削除した複数の報告を調査したと発表しました。最も一般的なケースは、フルアクセスモードが有効でサンドボックス保護がない状態で、モデルが一時ディレクトリを定義するために$HOME環境変数を上書きしようとし、誤って$HOME自体を削除してしまうことです。
セキュリティ議論はプロンプトインジェクションによるデータ流出に焦点が当たりがちですが、実際には不手際によるデータ損失の方が頻繁に報告されています。以下は代表的な例です。
例1:$HOMEの誤設定によるファイル削除。ユーザーはGPT-5.6-SolがMacのほぼすべてのファイルを削除したと報告。スクリーンショットでは、レビューサブエージェントのクリーンアップコマンドが$HOME変数を誤って展開し、rm -rf /Users/mattsdevboxを実行。別のユーザーではPowerShellの-Includeパラメータが想定通り動作せず、コンパイル済みファイルが削除されました。
例2:本番環境へのテストによるデータベース削除。ユーザーはGPT-5.6 Solが本番データベース全体を削除したと報告。リポジトリの.envファイルにNeonの本番データベースURLが含まれており、テストスクリプトがそれを本番と認識せず、TRUNCATE TABLE users CASCADEなどの破壊的な操作を実行しました。
例3:Git Checkoutによるスタッシュ作業の消失。Claude Codeが修正を新しいブランチに移動する際、git stash、git checkout、git stash popを実行したが、ポップされた変更が即座に上書きされ、1時間分の作業が失われました。
例4:「Photos」フォルダ削除で小文字の「photos」フォルダも消失。ユーザーがClaude Coworkにデスクトップ整理を依頼したところ、エージェントがmacOSのケースインセンシティブなファイルシステムを考慮せず、フォルダをマージしようとして誤って15年分の写真フォルダを削除。iCloudの30日間復元機能で回復できました。
例5:不正確な正規表現によるコード消失。著者自身の経験で、エージェントがPythonスクリプトで正規置換を行った際、マッチ境界が適切でなく、数百行のコードが誤って削除されました。
これらの事例に共通するパターンは「状態の混乱」です:環境変数が想定と異なるディレクトリを指す、データベースURLが間違ったインスタンスを指す、Git操作が意図通りに動作しない、ファイルシステムの特性を考慮しない、正規表現の境界が不正確。エージェントはチェインコマンドや$HOMEの直接操作、正規置換などの高度な手法を好む傾向がありますが、これらは暗黙の状態を正確に追跡する必要があります。
緩和策としては:
- ガードツール:
destructive_command_guardのようなツールで、破壊的なコマンドの実行前に阻止し、安全な代替案を提示。 - ワークフローの分離:Gitワークツリーを使ってタスクを別々のディレクトリに分離。
- バックアップ:最もシンプルで効果的な対策。日付別にドキュメントを整理(例:Documents/work/2026-01/)することでスナップショットを活用。
- ワークフローの改善:エージェントが安全に操作できるプリミティブを提供する。例えば、一時ファイル用のキーバリューストア、テスト用のデータベースブランチ、文字範囲ベースのカット&ペーストツールなど。
AIエージェントのコンピュータ利用はまだ初期段階にあり、標準的なコマンドラインツールはエージェントのワークフローに完全には適していません。安全でスコープの明確な操作を提供することで、ユーザーの意図と破壊的な操作とのギャップを減らし、データ損失のリスクを低減できるでしょう。