AI コーディングで一番怖い事故は、コードの間違いとは限りません。ファイルが消えることです。
Codex、Claude Code、Cursor のようなツールは、プロジェクトファイルを読み書きし、コマンドを実行し、まとめてリファクタし、ディレクトリを移動できます。コンテキストを誤解したり、権限が広すぎたりすると、ファイル削除、設定上書き、生成物の消去、未コミット変更の削除が実際に起きます。
そのため第一の安全原則は「AI をもっと賢くする」ではありません。間違った範囲で破壊的操作をする機会を与えないことです。
この記事では、誤削除の確率を下げ、起きた場合に素早く復旧するための実用フローをまとめます。
Quick Answer
「ファイルを削除しないで」という一文だけに頼らず、複数の防御層を使います。
| 防御層 | やること | 解決する問題 |
|---|---|---|
| Git ワークスペース | 編集前に git status、重要地点で小さく commit |
削除後に戻せる |
| 作業ディレクトリ分離 | AI を現在のプロジェクトや一時 branch に限定 | 無関係な資料を守る |
| 危険コマンド確認 | 削除、上書き、大量移動前に人が確認 | 自動破壊操作を防ぐ |
| 読み取り専用レビュー | まず影響範囲を分析させる | 大規模誤操作を減らす |
| ignore ルール | cache、build、secret、data を除外 | 触るべきでないファイルを守る |
| 復旧フロー | git restore、ごみ箱、バックアップ、snapshot を準備 |
事故後に慌てない |
重要なのは、AI が編集する前に、プロジェクトが復旧可能であることです。
誤削除が起きやすい指示
1. “Clean up the project”
この指示は危険です。AI は未参照ファイル、古いコンポーネント、重複スクリプト、古い Markdown、tmp、dist、build、public の削除だと解釈するかもしれません。
しかし「使っていなさそう」と「本当に未使用」は違います。CI、デプロイスクリプト、動的 import、プラグイン、ドキュメントから参照されることがあります。
安全な言い方:
|
|
2. ディレクトリ構造のリファクタ
ファイル移動は import、静的アセット、フレームワークの規約、CI/CD、ドキュメントリンク、多言語コンテンツ、デプロイ成果物に影響します。
安全な流れ:
- 移行計画を作る。
- 移動するファイルを列挙する。
- 更新する参照を列挙する。
- 小さな batch で実行する。
- batch ごとに確認する。
- 確認後に古い path を削除する。
3. “Delete everything unused”
“Unused” には根拠が必要です。ファイル名、更新日時、検索結果だけで判断すると危険です。
|
|
さらに確認します。
|
|
ステップ 1:編集前に Git 状態を見る
AI に編集させる前に確認します。
|
|
未コミット変更が多いほど、事故後に何が AI の変更か分かりにくくなります。
- クリーンなワークスペース:AI 編集に向く。
- 少数の既知変更:触ってはいけないファイルを明示する。
- 大量の未コミット変更:先に commit、stash、backup。
- 重要な未追跡ファイル:Git に追加するか backup。
未追跡ファイルは特に危険です。
|
|
削除されても git restore では戻せません。
ステップ 2:小さな復旧点を作る
大きな変更前に安全 commit を作ります。
|
|
または未追跡ファイル込みで stash します。
|
|
-u は未追跡ファイルを含めるため重要です。日常では、小さな commit のほうが見やすく、比較しやすく、戻しやすいです。
ステップ 3:AI の作業範囲を制限する
ホーム、Downloads、デスクトップ直下で AI コーディングツールを動かさないでください。
|
|
そして明示します。
|
|
一時ファイルの場所も指定します。
|
|
高リスク変更では Git worktree も使えます。
|
|
ステップ 4:危険コマンドを確認制にする
注意すべきコマンド:
|
|
常に禁止ではありませんが、対象 path、影響範囲、復旧方法が明確である必要があります。
PowerShell では特に注意します。
|
|
安全なルール:
|
|
ステップ 5:削除前にレビューする
AI は削除候補を探すのは得意ですが、単独で決定すべきではありません。
| ファイル | AI の理由 | リスク | 削除判断 |
|---|---|---|---|
old-script.js |
静的参照がない | 中 | 確認が必要 |
dist/ |
build output | 低 | 再生成可能なら可 |
legacy-config.json |
古そうな名前 | 高 | 直接削除しない |
その後、config、CI、デプロイスクリプト、dynamic import、docs から参照されないか確認します。
Claude Code subagent を使うなら、読み取り専用の cleanup-reviewer が候補だけを列挙する形にできます。関連: /ja/2026/07/10/claude-code-subagent-project-fit-guide/。
ステップ 6:AI 向けルールを書く
AGENTS.md、CLAUDE.md、またはプロジェクト説明ファイルに入れます。
|
|
中国語プロジェクトなら中国語でも構いません。
|
|
完全な保証ではありませんが、AI の独断を減らせます。
プロジェクト記憶を使っているなら、「触ってはいけないディレクトリ」「確認が必要なコマンド」「生成物の場所」をそこへ残します。関連: /ja/2026/07/08/claude-code-multi-project-memory-team-workflow/。
ステップ 7:ソース、生成物、ユーザーデータを分ける
誤削除の多くは、ファイルの性質が曖昧なことから起きます。
| 種類 | 例 | AI が削除してよいか |
|---|---|---|
| ソース | src/, app/, content/ |
直接削除しない |
| 設定 | .env.example, config/, package.json |
高リスク |
| 生成物 | dist/, build/, public/ |
再生成可能な場合のみ |
| キャッシュ | .cache/, .next/cache/ |
通常は可 |
| ユーザーデータ | uploads/, data/, notes/ |
原則禁止 |
| ローカル secret | .env, *.key, secrets/ |
読まない、変更しない |
README や AI ルールに書きます。
|
|
ステップ 8:復旧手順を知っておく
誤削除に気づいたら、まず広い変更を止めます。
追跡済みファイルを戻す:
|
|
履歴から戻す:
|
|
未追跡ファイルの場合は、順に確認します。
- エディタの local history;
- Windows ごみ箱;
- OneDrive、Dropbox、Syncthing の version history;
- NAS snapshot や backup;
- ファイル復旧ツール;
- AI 会話履歴。
これが、大きな変更前に commit や git stash push -u が必要な理由です。
ステップ 9:削除前に diff を出させる
削除前に AI に表示させます。
|
|
そして説明させます。
- 削除されるファイル;
- 移動されるファイル;
- 変更だけのファイル;
- 未追跡ファイル;
- 削除後の復旧方法。
特に注意:
|
|
D は追跡済みファイルの削除、?? は未追跡ファイルです。
AI の作業後にも再度確認します。
|
|
ツール別の注意
Codex
- まず
git statusを見る。 - 未追跡ファイル削除を明示的に禁止する。
- 大変更前に計画を出させる。
Remove-Item、rm -rf、git clean、git resetの前で止める。- 最後に実際の変更ファイルを報告させる。
Claude Code
CLAUDE.mdにファイル安全ルールを書く。- レビューには読み取り専用 subagent を使う。
- hooks で破壊的スクリプトを自動実行しない。
- 人の確認が必要なコマンドを明記する。
Cursor / IDE 系
- 大量削除を一括承認しない。
- ファイルツリーの変化を見る。
- 削除ファイルを一つずつ確認する。
- 重要プロジェクトでは IDE の undo だけでなく Git を基準にする。
安全プロンプトテンプレート
クリーンアップ、リファクタ、移行では次を使えます。
|
|
実行時:
|
|
最後に
AI コーディングは「絶対に削除しない」ことではありません。古いコンポーネント、重複リソース、期限切れドキュメント、build cache など、削除が必要な場面はあります。
重要なのは、証拠があり、一覧があり、確認があり、検証でき、復旧できることです。Git、小さな commit、読み取り専用レビュー、権限確認、プロジェクトルール、バックアップと復旧手順があれば、誤削除は災害ではなく戻せる事故になります。
AI Agent が長時間タスクをよく実行するなら、各フェーズの状態、変更範囲、復旧点も記録します。中断後に危険コマンドを繰り返すリスクを下げられます。関連: /ja/2026/07/10/ai-agent-long-task-resume-guide/。