Cursorエージェントが原因でDドライブ全消失──AI時代の開発者が備えるべき3層防御とは
出典: イワケン

Cursorエージェントに「不要なブランチを整理して」と依頼した結果、Dドライブ全体のデータが消失する事故が発生。git clean -fdxの誤実行が原因と推定される本件から、AIエージェントに破壊的コマンドの実行権限を渡す際の防御戦略を考える。
AIエージェントによる予期せぬデータ消失事故が発生
2026年7月、Cursorのエージェント機能を使用した開発者が、Dドライブ配下の全データを失うという深刻な事故が報告されました。「不要なブランチを整理して」という一見無害な指示が、ゴミ箱にも残らない完全なデータ消失を引き起こしたのです。
AIコーディングツールが急速に普及する中、この事故は私たち開発者全員が直面しうるリスクを浮き彫りにしています。GitHub CopilotやClaude Code、Cursorといったツールは開発効率を劇的に向上させますが、同時に予期せぬ破壊的操作を実行するリスクも内包しているのです。
事故の詳細と推定原因
何が起きたのか
報告された事故の経緯は以下の通りです:
推定される技術的原因
AIによる分析の結果、以下2つの原因が推定されています:
1. **`git clean -fdx` の誤実行**
- `-f`: 強制実行
- `-d`: ディレクトリも削除
- `-x`: .gitignoreで無視されるファイルも削除
- このコマンドがリポジトリ外のパスで実行された可能性
2. **削除コマンドのパス誤解決**
- AIがブランチ整理のコンテキストを誤解釈
- 相対パスや環境変数の解決ミス
- 意図しないディレクトリを対象に破壊的コマンドを実行
編集部の視点
なぜこの事故は「起こるべくして起きた」のか
この事故は、AIエージェントツールの設計思想と現実の運用ギャップを示す典型例です。Cursorを含む多くのAIコーディングツールは、開発者の意図を自然言語から推測し、自律的にコマンドを実行します。しかし、ここには根本的な問題があります。
**人間の曖昧な指示とコンピュータの厳密な実行のミスマッチ**です。「不要なブランチを整理して」という指示には、以下の情報が欠けています:
AIはこれらを「推測」で補完しますが、その推測が常に正しいとは限りません。
GitHub CopilotやClaude Codeとの比較
同種のツールと比較すると、それぞれ異なるリスクプロファイルが見えてきます:
| ツール | 自律実行レベル | リスク特性 |
|--------|--------------|----------|
| **Cursor** | 高(エージェントモードで自律実行) | コマンド実行権限が広範、誤実行時の影響大 |
| **GitHub Copilot** | 低(コード提案のみ、実行は人間) | 提案コードのレビューは必要だが、即座の破壊的実行はない |
| **Claude Code** | 中(実行前に確認を求める設計多し) | 確認ステップがあるが、慣れによる確認の形骸化リスク |
Cursorのエージェント機能は生産性向上に優れていますが、その分「人間の確認」というセーフティネットを省略する設計になっています。これは諸刃の剣です。
本当に必要なのは「疑う文化」
AIツールのメリットは明白です。コード生成速度の向上、ボイラープレートの削減、学習コストの低減──これらは開発現場を確実に変えています。
しかし、注意点も同様に明白です:
私たち編集部が強調したいのは、AIツールは「優秀だが完璧ではないジュニア開発者」として扱うべきだということです。彼らの提案は参考になりますが、最終的な責任は人間が負います。
適用範囲の再考──どこまでAIに任せるべきか
AIエージェントの適用範囲を改めて考えるべきです:
**AIに任せてよい領域:**
**慎重に扱うべき領域:**
**AIに任せるべきでない領域:**
今日から試せるアクション
1. Cursor設定で実行可能コマンドを制限する
Cursorの設定ファイル(`.cursorrules` または設定UI)で、以下のような制限を明示的に記述します:
# .cursorrules の例
prohibited_commands:
- "rm -rf"
- "git clean -fdx"
- "del /f /s /q"
- "format"
require_confirmation:
- "git push --force"
- "DROP TABLE"
- 任意の削除系コマンド
execution_scope:
allowed_paths:
- "./src"
- "./tests"
prohibited_paths:
- "/"
- "C:\\"
- "D:\\"具体的な手順:
1. Cursor設定を開く(Cmd/Ctrl + ,)
2. 「Agent Behavior」セクションを探す
3. 「Command Restrictions」を有効化
4. プロジェクトルートに `.cursorrules` を配置
2. OS レベルでの読み取り専用領域の設定
重要なデータを格納するドライブやディレクトリに、開発環境からの書き込み権限を制限します:
**Windows の場合:**
# 特定フォルダを保護モードに
icacls "D:\important_data" /deny "Users:(DE,DC,WD)"**macOS/Linux の場合:**
# 重要ディレクトリを読み取り専用に
chmod -R 555 /path/to/important/data
# 特定ユーザーからの書き込みを制限
chown -R root:root /path/to/important/data3. 自動バックアップの即時導入
バックアップは事後対策ではなく、前提条件として組み込むべきです:
**推奨バックアップ戦略:**
**即座に実行できる手順:**
# Git管理下のプロジェクトは定期的にリモートへプッシュ
git remote add backup <バックアップ用リモートURL>
# cronやタスクスケジューラで自動化
# Linux/macOS crontab例
0 */6 * * * cd /path/to/project && git push backup --allまとめ: AI時代の開発者に求められる新しい責任
AIコーディングツールは、私たちの開発体験を根本から変えつつあります。しかし、それは「何も考えずに使える魔法の杖」ではありません。
本件が教えてくれるのは、**AIとの協働には新しい形の注意深さが必要**だということです。従来のコーディングでは「自分が書いたコードは自分が理解している」という前提がありました。AI時代にはこの前提が崩れます。
この3層防御は、AIツールを安全に活用するための最低限の保険です。便利さと安全性はトレードオフではなく、両立させるべきものです。
報告者の方が「同じ事故を起こす人を一人でも減らしたい」と公開した勇気に敬意を表します。この教訓を活かし、AIとのより安全な協働環境を構築していきましょう。
この情報は @イワケン さんの投稿を参考にしています。
出典: イワケン


