Cómo evitar que la IA borre archivos por accidente al programar: Git, permisos y recuperación

Checklist práctico para evitar borrados accidentales al programar con IA: Git, aislamiento del workspace, confirmación de comandos peligrosos, revisión read-only, reglas de ignore y flujo de recuperación para Codex, Claude Code, Cursor y otros Agent tools.

El accidente más aterrador en AI Coding no siempre es código incorrecto. A veces son archivos borrados.

Herramientas como Codex, Claude Code y Cursor pueden leer y escribir archivos, ejecutar comandos, refactorizar en lote y mover directorios. Si entienden mal el contexto o tienen permisos demasiado amplios, pueden borrar archivos, sobrescribir configuración, limpiar artefactos generados o eliminar trabajo sin commit.

Por eso la primera regla no es “hacer la IA más inteligente”, sino: no darle oportunidad de hacer operaciones destructivas en el alcance equivocado.

Este artículo resume un flujo práctico para reducir el riesgo de borrado accidental y recuperarse rápido si ocurre.

Quick Answer

No confíes solo en “no borres archivos”. Usa varias capas:

Capa Qué hacer Qué resuelve
Workspace Git Revisar git status antes; commits pequeños Recuperación tras borrado
Aislamiento Limitar la IA al repo o rama temporal Evitar archivos ajenos
Confirmación de comandos peligrosos Confirmar borrado, overwrite o movimientos masivos Evitar destrucción automática
Revisión read-only Analizar impacto antes de editar Reducir errores amplios
Reglas ignore Excluir cache, build, secretos, data Evitar archivos indebidos
Recuperación Preparar git restore, papelera, backups, snapshots No entrar en pánico

Lo más importante: antes de permitir edición, el proyecto debe poder recuperarse.

Situaciones típicas de borrado

1. “Clean up the project”

La IA puede interpretarlo como borrar archivos no referenciados, componentes viejos, scripts duplicados, Markdown antiguo o limpiar tmp, dist, build, public.

Pero “parece no usado” no equivale a “no se usa”. Puede estar referenciado por CI, scripts de deploy, imports dinámicos, plugins o docs.

Prompt más seguro:

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

2. Refactorizar estructura de directorios

Mover archivos afecta imports, assets, convenciones de frameworks, CI/CD, enlaces de docs, contenido multilingüe y artefactos de despliegue.

Flujo seguro:

  1. Crear plan de migración.
  2. Listar archivos que se moverán.
  3. Listar referencias que se actualizarán.
  4. Ejecutar en lotes pequeños.
  5. Verificar después de cada lote.
  6. Borrar rutas antiguas solo tras confirmación.

3. “Borra todo lo que no se use”

“No usado” necesita criterio. Sin evidencia, la IA puede adivinar por nombre, fecha o búsqueda.

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

Luego pregunta:

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

Paso 1: revisar Git antes de editar

Antes de que la IA toque archivos:

1
git status --short

Si ya hay muchos cambios sin commit, el riesgo sube. Después de un borrado será difícil saber qué hizo la IA y qué estaba antes.

Reglas:

  • Workspace limpio: más seguro.
  • Pocos cambios conocidos: continuar, pero marcar archivos prohibidos.
  • Muchos cambios sin commit: commit, stash o backup.
  • Archivos importantes sin trackear: añadirlos a Git o respaldarlos.

Los untracked son peligrosos:

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

Si se borran, git restore no los recupera.

Paso 2: crear puntos de recuperación

Antes de un cambio grande:

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

O stash con untracked:

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

El -u incluye archivos sin trackear. En trabajo diario, los commits pequeños suelen ser más claros que depender mucho de stash.

Paso 3: limitar el directorio

No ejecutes AI coding tools desde home, Downloads o Desktop root.

1
cd C:\Work\my-project

Y explícitalo:

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

Para temporales:

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

Para cambios de alto riesgo, usa worktree:

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

Paso 4: confirmar comandos peligrosos

Vigila:

 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

No están siempre prohibidos, pero deben tener ruta objetivo, impacto y recuperación claros.

En PowerShell:

1
Remove-Item -Recurse -Force

Regla segura:

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.

Paso 5: revisar antes de borrar

La IA puede listar candidatos, pero no decidir sola.

Archivo Motivo de IA Riesgo ¿Borrar?
old-script.js Sin referencia estática Medio Requiere confirmación
dist/ Build output Bajo Si se puede regenerar
legacy-config.json Parece antiguo Alto No borrar directamente

Después, pide revisar config, CI, deploy scripts, dynamic imports y docs.

Si usas Claude Code subagents, crea un cleanup-reviewer read-only que solo liste candidatos. Ver: /es/2026/07/10/claude-code-subagent-project-fit-guide/.

Paso 6: escribir reglas para la IA

Añade reglas a AGENTS.md, CLAUDE.md u otro archivo de instrucciones:

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.

En proyectos chinos también puedes escribir reglas en chino:

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

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

No garantiza perfección, pero reduce decisiones unilaterales.

Si mantienes memoria de proyecto, guarda qué directorios no tocar, qué comandos requieren confirmación y qué archivos son generados. Relacionado: /es/2026/07/08/claude-code-multi-project-memory-team-workflow/.

Paso 7: distinguir fuente, generados y datos

Muchos borrados ocurren porque la naturaleza del archivo no está clara.

Tipo Ejemplos ¿Puede borrar la IA?
Fuente src/, app/, content/ No directamente
Config .env.example, config/, package.json Alto riesgo
Generados dist/, build/, public/ Solo si se regeneran
Cache .cache/, .next/cache/ Normalmente sí
Datos de usuario uploads/, data/, notes/ Por defecto no
Secretos locales .env, *.key, secrets/ No leer ni modificar

Notas útiles:

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.

Paso 8: saber recuperar

Si algo se borra, detén cambios amplios.

Archivos trackeados:

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

Desde historial:

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

Si era untracked, revisa:

  1. historial local del editor;
  2. Papelera de Windows;
  3. historial de OneDrive, Dropbox o Syncthing;
  4. snapshots o backups;
  5. herramientas de recuperación;
  6. historial de conversación con IA.

Por eso importa hacer commit o git stash push -u antes de cambios grandes.

Paso 9: exigir diff antes de borrar

Antes del borrado:

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

La IA debe explicar:

  • qué se borrará;
  • qué se moverá;
  • qué solo se modificará;
  • qué está sin trackear;
  • cómo recuperar.

Cuidado con:

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

D es borrado de archivo trackeado. ?? es untracked y Git no lo restaura automáticamente.

Después de los cambios, revisa otra vez:

1
git status --short

Notas por herramienta

Codex

  • Revisar git status al inicio.
  • Prohibir explícitamente borrar untracked.
  • Pedir plan antes de cambios grandes.
  • Detenerse antes de Remove-Item, rm -rf, git clean, git reset.
  • Informar archivos realmente cambiados.

Claude Code

  • Escribir reglas en CLAUDE.md.
  • Usar subagents read-only para review.
  • Evitar hooks destructivos automáticos.
  • Marcar comandos que requieren confirmación humana.

Cursor / IDE

  • No aceptar borrados masivos de una vez.
  • Mirar cambios del árbol de archivos.
  • Confirmar archivos borrados uno por uno.
  • Para proyectos importantes, confiar en Git más que en undo del IDE.

Plantilla segura

Para limpieza, refactor o migración:

 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. 如果确实建议删除文件,列出完整路径、原因、风险等级和恢复方式,等待我确认。

Para ejecutar:

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

Cierre

AI Coding no significa no borrar nunca. Los proyectos necesitan limpiar componentes viejos, scripts obsoletos, recursos duplicados, docs caducados y caches.

La clave es que el borrado tenga evidencia, lista, confirmación, verificación y recuperación. Git, commits pequeños, revisión read-only, confirmación de permisos, reglas de proyecto y backups convierten el borrado accidental de desastre a incidente recuperable.

Si tu AI Agent ejecuta tareas largas, registra estado, alcance de cambios y punto de recuperación en cada fase. Así reduces el riesgo de repetir comandos peligrosos tras una interrupción. Ver: /es/2026/07/10/ai-agent-long-task-resume-guide/.

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy