AI コーディングでファイルの誤削除を防ぐ方法:Git、権限、復旧フロー

AI コーディングでファイル誤削除を防ぐための実践チェックリスト。Git、作業ディレクトリ分離、危険コマンド確認、読み取り専用レビュー、ignore ルール、復旧手順で Codex、Claude Code、Cursor などの Agent ツールのリスクを下げます。

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、tmpdistbuildpublic の削除だと解釈するかもしれません。

しかし「使っていなさそう」と「本当に未使用」は違います。CI、デプロイスクリプト、動的 import、プラグイン、ドキュメントから参照されることがあります。

安全な言い方:

1
First list the files you think can be cleaned up and explain why. Do not delete anything until I confirm.

2. ディレクトリ構造のリファクタ

ファイル移動は import、静的アセット、フレームワークの規約、CI/CD、ドキュメントリンク、多言語コンテンツ、デプロイ成果物に影響します。

安全な流れ:

  1. 移行計画を作る。
  2. 移動するファイルを列挙する。
  3. 更新する参照を列挙する。
  4. 小さな batch で実行する。
  5. batch ごとに確認する。
  6. 確認後に古い path を削除する。

3. “Delete everything unused”

“Unused” には根拠が必要です。ファイル名、更新日時、検索結果だけで判断すると危険です。

1
Only identify candidate files without static references. Rank them by risk. Do not delete.

さらに確認します。

1
Could these files be loaded dynamically, referenced by config, CI, deployment scripts, or docs?

ステップ 1:編集前に Git 状態を見る

AI に編集させる前に確認します。

1
git status --short

未コミット変更が多いほど、事故後に何が AI の変更か分かりにくくなります。

  • クリーンなワークスペース:AI 編集に向く。
  • 少数の既知変更:触ってはいけないファイルを明示する。
  • 大量の未コミット変更:先に commit、stash、backup。
  • 重要な未追跡ファイル:Git に追加するか backup。

未追跡ファイルは特に危険です。

1
2
3
?? notes.md
?? scripts/new-tool.ps1
?? content/post/2026/07/41/

削除されても git restore では戻せません。

ステップ 2:小さな復旧点を作る

大きな変更前に安全 commit を作ります。

1
2
git add .
git commit -m "chore: save working state before ai changes"

または未追跡ファイル込みで stash します。

1
git stash push -u -m "before ai changes"

-u は未追跡ファイルを含めるため重要です。日常では、小さな commit のほうが見やすく、比較しやすく、戻しやすいです。

ステップ 3:AI の作業範囲を制限する

ホーム、Downloads、デスクトップ直下で AI コーディングツールを動かさないでください。

1
cd C:\Work\my-project

そして明示します。

1
Only modify files inside the current repository. Do not read or modify paths outside the repo.

一時ファイルの場所も指定します。

1
Put all temporary files under tmp/ai-work/. Do not create or delete temp files elsewhere.

高リスク変更では Git worktree も使えます。

1
git worktree add ../my-project-ai-test -b ai-test

ステップ 4:危険コマンドを確認制にする

注意すべきコマンド:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
rm -rf
del /s
Remove-Item -Recurse
git clean -fd
git reset --hard
git checkout -- .
mv
move
robocopy /MIR
rsync --delete

常に禁止ではありませんが、対象 path、影響範囲、復旧方法が明確である必要があります。

PowerShell では特に注意します。

1
Remove-Item -Recurse -Force

安全なルール:

1
Before delete, overwrite, mass move, git reset, git clean, or rsync --delete, stop and explain the exact target paths and impact. Wait for my confirmation.

ステップ 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.mdCLAUDE.md、またはプロジェクト説明ファイルに入れます。

1
2
3
4
5
6
7
8
# File Safety Rules

- Do not delete files unless the user explicitly asks for deletion.
- Before deleting, moving, or overwriting files, list the exact paths and wait for confirmation.
- Never run git reset --hard, git clean -fd, rm -rf, Remove-Item -Recurse, rsync --delete, or robocopy /MIR without explicit confirmation.
- Do not modify files outside the repository root.
- Treat untracked files as user-created files, not disposable temporary files.
- Prefer small edits and small commits.

中国語プロジェクトなら中国語でも構いません。

1
2
3
4
5
6
7
# 文件安全规则

- 不要主动删除文件。
- 删除、移动、覆盖前,必须先列出完整路径和原因。
- 未跟踪文件默认视为用户文件,不要当成临时文件处理。
- 不要执行 `git reset --hard``git clean -fd``Remove-Item -Recurse` 等破坏性命令,除非用户明确确认。
- 不要修改仓库外的文件。

完全な保証ではありませんが、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 ルールに書きます。

1
2
3
4
5
6
## Directory Notes

- `content/` is source content. Do not delete posts.
- `public/` is generated by Hugo and can be rebuilt.
- `.env` and `secrets/` must not be read or modified.
- `tmp/ai-work/` is the only allowed temporary workspace.

ステップ 8:復旧手順を知っておく

誤削除に気づいたら、まず広い変更を止めます。

追跡済みファイルを戻す:

1
2
3
4
git status --short
git restore path/to/file
git restore path/to/directory
git restore --source HEAD~1 path/to/file

履歴から戻す:

1
2
git log -- path/to/file
git restore --source <commit> path/to/file

未追跡ファイルの場合は、順に確認します。

  1. エディタの local history;
  2. Windows ごみ箱;
  3. OneDrive、Dropbox、Syncthing の version history;
  4. NAS snapshot や backup;
  5. ファイル復旧ツール;
  6. AI 会話履歴。

これが、大きな変更前に commit や git stash push -u が必要な理由です。

ステップ 9:削除前に diff を出させる

削除前に AI に表示させます。

1
2
git diff --stat
git status --short

そして説明させます。

  • 削除されるファイル;
  • 移動されるファイル;
  • 変更だけのファイル;
  • 未追跡ファイル;
  • 削除後の復旧方法。

特に注意:

1
2
3
D  src/important.ts
 D content/post/2026/07/old/index.zh-cn.md
?? backup/

D は追跡済みファイルの削除、?? は未追跡ファイルです。

AI の作業後にも再度確認します。

1
git status --short

ツール別の注意

Codex

  • まず git status を見る。
  • 未追跡ファイル削除を明示的に禁止する。
  • 大変更前に計画を出させる。
  • Remove-Itemrm -rfgit cleangit reset の前で止める。
  • 最後に実際の変更ファイルを報告させる。

Claude Code

  • CLAUDE.md にファイル安全ルールを書く。
  • レビューには読み取り専用 subagent を使う。
  • hooks で破壊的スクリプトを自動実行しない。
  • 人の確認が必要なコマンドを明記する。

Cursor / IDE 系

  • 大量削除を一括承認しない。
  • ファイルツリーの変化を見る。
  • 削除ファイルを一つずつ確認する。
  • 重要プロジェクトでは IDE の undo だけでなく Git を基準にする。

安全プロンプトテンプレート

クリーンアップ、リファクタ、移行では次を使えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
请先分析,不要修改文件。

目标:找出这次任务可能需要修改、移动或删除的文件。

要求:
1. 不要删除任何文件。
2. 不要执行 git reset、git clean、rm -rf、Remove-Item -Recurse、rsync --delete、robocopy /MIR。
3. 未跟踪文件默认视为用户文件,不要当作临时文件处理。
4. 先输出计划、影响范围和风险点。
5. 如果确实建议删除文件,列出完整路径、原因、风险等级和恢复方式,等待我确认。

実行時:

1
2
3
只执行我确认过的这些文件操作。
每次删除或移动前,再输出目标路径。
完成后运行 git status --short,并汇报新增、修改、删除的文件。

最後に

AI コーディングは「絶対に削除しない」ことではありません。古いコンポーネント、重複リソース、期限切れドキュメント、build cache など、削除が必要な場面はあります。

重要なのは、証拠があり、一覧があり、確認があり、検証でき、復旧できることです。Git、小さな commit、読み取り専用レビュー、権限確認、プロジェクトルール、バックアップと復旧手順があれば、誤削除は災害ではなく戻せる事故になります。

AI Agent が長時間タスクをよく実行するなら、各フェーズの状態、変更範囲、復旧点も記録します。中断後に危険コマンドを繰り返すリスクを下げられます。関連: /ja/2026/07/10/ai-agent-long-task-resume-guide/。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。