Как защитить файлы от удаления ИИ агентом Claude Code в 2026
Как защитить файлы от удаления ИИ агентом Claude Code: настройка permissions.deny, CLAUDE.md-запреты, git-страховка и план восстановления за 3 шага.

В этой статье
- Почему ИИ агент вообще удаляет файлы
- Первый уровень: permissions.deny — конкретный синтаксис
- Почему ИИ агент вообще удаляет файлы
- Первый уровень: permissions.deny — конкретный синтаксис
- Почему ИИ агент вообще удаляет файлы
- Первый уровень: permissions.deny — конкретный синтаксис
- Второй уровень: CLAUDE.md — инструкции, которые агент читает первой
- Третий уровень: git-страховка
- Агент уже удалил файлы: план действий за 3 шага
- Читайте также
- Как понять, что агент вышел за пределы задачи
Я, Арина Михална, расскажу, как защитить файлы от удаления ИИ агентом Claude Code: для этого можно использовать три способа сразу — прописать явные запреты в permissions.deny, добавить инструкции в CLAUDE.md и держать проект под git, тогда даже если агент что-то снесёт, это восстанавливается за минуту.

Почему ИИ агент вообще удаляет файлы
История с Codex от OpenAI, который удалял реальные файлы пользователей без разрешения, — не баг конкретного продукта. Это системная проблема всех агентов с доступом к файловой системе.
Claude Code работает так же: он получает задачу, планирует шаги и выполняет команды в терминале. Если в задаче написано «почисти проект от временных файлов», агент начнёт удалять то, что считает временным. И его представление о «временном» может не совпасть с твоим.
Три сценария, где это ломается чаще всего:
| Сценарий | Что может пойти не так |
|---|---|
| «Удали ненужные файлы» без уточнения | Агент сносит .env, логи, кеш — всё подряд |
| Рефакторинг с переименованием директорий | Старая папка удаляется до того, как новая проверена |
| Очистка node_modules или зависимостей | Агент захватывает соседние директории по паттерну |
| Авто-режим без подтверждений | Любая из трёх ситуаций выше без шанса остановить |
Это не значит, что агент плохой. Он просто делает то, что ему сказали, буквально.
Первый уровень: permissions.deny — конкретный синтаксис
permissions.deny в файле .Claude/settings.json — это ОС-уровень защиты. Если команда попала сюда, агент физически не сможет её выполнить. Никакой системный промпт это не перебьёт: permissions.deny вы—
title: ‘Как защитить файлы от удаления ИИ агентом Claude Code в 2026’
description: ‘Как защитить файлы от удаления ИИ агентом Claude Code: настройка permissions.deny, CLAUDE.md-запреты, git-страховка и план восстановления за 3 шага.’
pubDate: 2026-08-19
category: ‘skilly-i-agenty’
tags: [‘Claude code’, ‘безопасность’, ‘агенты’, ‘файлы’, ‘permissions’]
cover: ‘/images/blog/ii-agent-udalil-polzovatelyu-fayly-kak-zaschititsya-v-claude/cover.webp’
coverAlt: ‘Схема защиты файлов от удаления ИИ агентом Claude Code: конфиг permissions.deny и CLAUDE.md’
targetQuery: ‘как защитить файлы от удаления ИИ агентом Claude Code’
faq:
- q: ‘Может ли Claude Code удалить файлы без спроса?’ a: ‘Да, в авто-режиме агент выполняет команды без подтверждения. Именно поэтому важно прописать запреты в settings.json и CLAUDE.md ещё до того, как запустить агента на серьёзной задаче.’
- q: ‘Как прописать запрет на удаление конкретных файлов в Claude Code?’ a: ‘В файле .Claude/settings.json добавь в секцию permissions.deny паттерны Bash-команд: “Bash(rm:/.env)”, “Bash(rm:/migrations/)” и аналогичные. Агент не выполнит эти команды даже если системный промпт их разрешает.’
- q: ‘Что делать, если ИИ агент уже удалил файлы?’ a: ‘Первый шаг — git: команда “git reflog” покажет хэши всех коммитов, включая момент до удаления. Если файлы не были в git — проверь корзину ОС или Time Machine/теневые копии Windows.’
- q: ‘Что побеждает при конфликте: системный промпт или permissions.deny?’ a: ‘permissions.deny — всегда. Это слой ОС-уровня: если команда попала в deny-список, агент физически не сможет её выполнить, даже если CLAUDE.md написан иначе.’
- q: ‘Нужен ли git, если я использую Claude Code только для мелких задач?’ a: ‘Да, даже для мелких. Один нечаянный rm -rf на не той директории — и восстанавливать нечего. git init занимает 3 секунды, а покрывает любой сценарий.’ checklist:
- ‘Знаешь, как прописать запреты через permissions.deny с реальными паттернами’
- ‘Понимаешь, что побеждает при конфликте: permissions.deny выигрывает у системного промпта’
- ‘Настроила CLAUDE.md с явным списком защищённых директорий’
- ‘Есть git-страховка и понимаешь, как восстановить удалённое через reflog’
- ‘Знаешь три признака того, что агент вышел за пределы задачи’ sources:
- title: ‘OpenAI fixes Codex bug that deleted real user files without permission — The Decoder’ url: ‘https://the-decoder.com/openai-fixes-codex-bug-that-deleted-real-user-files-without-permission/’
- title: ‘Claude Code security documentation — Anthropic’ url: ‘https://docs.anthropic.com/en/docs/claude-code/security’
- title: ‘Claude Code settings reference — Anthropic docs’ url: ‘https://docs.anthropic.com/en/docs/claude-code/settings’ draft: false
Защитить файлы от удаления ИИ агентом Claude Code можно тремя способами сразу: прописать явные запреты в permissions.deny, добавить инструкции в CLAUDE.md и держать проект под git — тогда даже если агент что-то снесёт, это восстанавливается за минуту.
Почему ИИ агент вообще удаляет файлы
История с Codex от OpenAI, который удалял реальные файлы пользователей без разрешения, — не баг конкретного продукта. Это системная проблема всех агентов с доступом к файловой системе.
Claude Code работает так же: он получает задачу, планирует шаги и выполняет команды в терминале. Если в задаче написано «почисти проект от временных файлов», агент начнёт удалять то, что считает временным. И его представление о «временном» может не совпасть с твоим.
Три сценария, где это ломается чаще всего:
| Сценарий | Что может пойти не так |
|---|---|
| «Удали ненужные файлы» без уточнения | Агент сносит .env, логи, кеш — всё подряд |
| Рефакторинг с переименованием директорий | Старая папка удаляется до того, как новая проверена |
| Очистка зависимостей по паттерну | Агент захватывает соседние директории |
| Авто-режим без подтверждений | Любой из сценариев выше без шанса остановить |
Это не значит, что агент плохой. Он делает то, что ему сказали, — буквально.
Первый уровень: permissions.deny — конкретный синтаксис
permissions.deny в файле .Claude/settings.json — это слой защиты на уровне самого инструмента. Если команда попала сюда, агент физически не сможет её выполнить. Никакой системный промпт это не перебьёт: permissions.deny все—
title: ‘Как защитить файлы от удаления ИИ агентом Claude Code в 2026’
description: ‘Как защитить файлы от удаления ИИ агентом Claude Code: настройка permissions.deny, CLAUDE.md-запреты, git-страховка и план восстановления за 3 шага.’
pubDate: 2026-08-19
category: ‘skilly-i-agenty’
tags: [‘Claude code’, ‘безопасность’, ‘агенты’, ‘файлы’, ‘permissions’]
cover: ‘/images/blog/ii-agent-udalil-polzovatelyu-fayly-kak-zaschititsya-v-claude/cover.webp’
coverAlt: ‘Схема защиты файлов от удаления ИИ агентом Claude Code: конфиг permissions.deny и CLAUDE.md’
targetQuery: ‘как защитить файлы от удаления ИИ агентом Claude Code’
faq:
- q: ‘Может ли Claude Code удалить файлы без спроса?’ a: ‘Да, в авто-режиме агент выполняет команды без подтверждения. Именно поэтому важно прописать запреты в settings.json и CLAUDE.md ещё до того, как запустить агента на серьёзной задаче.’
- q: ‘Как прописать запрет на удаление конкретных файлов в Claude Code?’ a: ‘В файле .Claude/settings.json добавь в секцию permissions.deny паттерны Bash-команд: “Bash(rm:/.env)”, “Bash(rm:/migrations/)” и аналогичные. Агент не выполнит эти команды даже если системный промпт их разрешает.’
- q: ‘Что делать, если ИИ агент уже удалил файлы?’ a: ‘Первый шаг — git: команда “git reflog” покажет хэши всех коммитов, включая момент до удаления. Если файлы не были в git — проверь корзину ОС или Time Machine/теневые копии Windows.’
- q: ‘Что побеждает при конфликте: системный промпт или permissions.deny?’ a: ‘permissions.deny — всегда. Это слой инструмента: если команда попала в deny-список, агент физически не сможет её выполнить, даже если CLAUDE.md написан иначе.’
- q: ‘Нужен ли git, если я использую Claude Code только для мелких задач?’ a: ‘Да, даже для мелких. Один нечаянный rm -rf на не той директории — и восстанавливать нечего. git init занимает 3 секунды, а покрывает любой сценарий.’ checklist:
- ‘Знаешь, как прописать запреты через permissions.deny с реальными паттернами’
- ‘Понимаешь, что побеждает при конфликте: permissions.deny выигрывает у системного промпта’
- ‘Настроила CLAUDE.md с явным списком защищённых директорий’
- ‘Есть git-страховка и понимаешь, как восстановить удалённое через reflog’
- ‘Знаешь три признака того, что агент вышел за пределы задачи’ sources:
- title: ‘OpenAI fixes Codex bug that deleted real user files without permission — The Decoder’ url: ‘https://the-decoder.com/openai-fixes-codex-bug-that-deleted-real-user-files-without-permission/’
- title: ‘Claude Code security documentation — Anthropic’ url: ‘https://docs.anthropic.com/en/docs/claude-code/security’
- title: ‘Claude Code settings reference — Anthropic docs’ url: ‘https://docs.anthropic.com/en/docs/claude-code/settings’ draft: false
Защитить файлы от удаления ИИ агентом Claude Code можно тремя способами сразу: прописать явные запреты в permissions.deny, добавить инструкции в CLAUDE.md и держать проект под git — тогда даже если агент что-то снесёт, это восстанавливается за минуту.
Почему ИИ агент вообще удаляет файлы
История с Codex от OpenAI, который удалял реальные файлы пользователей без разрешения, — не баг конкретного продукта. Это системная проблема всех агентов с доступом к файловой системе.
Claude Code работает так же: он получает задачу, планирует шаги и выполняет команды в терминале. Если в задаче написано «почисти проект от временных файлов», агент начнёт удалять то, что считает временным. И его представление о «временном» может не совпасть с твоим.
Три сценария, где это ломается чаще всего:
| Сценарий | Что может пойти не так |
|---|---|
| «Удали ненужные файлы» без уточнения | Агент сносит .env, логи, кеш — всё подряд |
| Рефакторинг с переименованием директорий | Старая папка удаляется до того, как новая проверена |
| Очистка зависимостей по паттерну | Агент захватывает соседние директории |
| Авто-режим без подтверждений | Любой из сценариев выше без шанса остановить |
Это не значит, что агент плохой. Он делает то, что ему сказали — буквально.
Первый уровень: permissions.deny — конкретный синтаксис
permissions.deny в файле .Claude/settings.json — это слой защиты внутри самого инструмента. Если команда попала сюда, агент не сможет её выполнить. Никакой системный промпт это не перебьёт: permissions.deny всегда выигрывает у промпта.
Вот конфиг, который стоит положить в каждом проекте:
{
"permissions": {
"deny": [
"Bash(rm:*/.env*)",
"Bash(rm:*/secrets/*)",
"Bash(rm:*/migrations/*)",
"Bash(rm:*/.git/*)",
"Bash(rm -rf:*)",
"Bash(git reset --hard:*)",
"Bash(git clean -f:*)"
]
}
}
Разбираю, что здесь происходит:
Bash(rm:*/.env*)— запрет на удаление файлов.envи всего, что начинается с.env(.env.local,.env.production). Сюда же попадут иrm -rf .env/, иrm .env.Bash(rm:*/secrets/*)— защита директории с секретами.Bash(rm:*/migrations/*)— миграции базы. Их случайно удалить — больно.Bash(rm -rf:*)— запрет наrm -rfвообще. Глобально. Никакой агент не выполнитrm -rf .— а это, скажу честно, самой страшной команды для любого проекта.Bash(git reset --hard:*)иBash(git clean -f:*)— защита от сноса незакоммиченной работы. Обе команды удаляют файлы без возможности восстановления. Агент легко их вызовет, если задача про «почистить проект».
Паттерн простой: Bash(<команда>:<glob-паттерн>). Glob-паттерн — это маска пути, где * значит «любая директория», а конкретное имя — точное имя файла или папки.
Если агент всё-таки попробует выполнить запрещённую команду, он получит отказ и спросит, что делать дальше. Это, кстати, полезный поведенческий сигнал: если permissions.deny сработал, значит, задача агенту была поставлена шире, чем нужно.
Второй уровень: CLAUDE.md — инструкции, которые агент читает первой
permissions.deny — железный забор. А CLAUDE.md — вежливое правило, которое объясняет агенту, почему забор стоит.
Этот файл Claude Code читает в начале каждой сессии. Он ближе всех к системному промпту по влиянию на поведение. Пропиши в нём не только «не удаляй эти файлы», а «вот структура проекта и что здесь лежит ценного»:
# Защищённые файлы и директории
- `.env*` — переменные окружения, секреты. Не удалять, не
перезаписывать.
- `migrations/` — миграции базы данных. Удаление = потеря
истории изменений.
- `secrets/` — ключи API и сертификаты.
- `.git/` — служебные файлы git. Не трогать.
- `backups/`, `exports/` — сгенерированные данные, могут
понадобиться снова.
## Правила удаления
1. Перед удалением любого файла покажи его список и получи
подтверждение.
2. Не используй `rm -rf`. Для очистки директорий — `find
<путь> -type f -delete` с чётким путём.
3. Файлы, закоммиченные в git, помеченные как защищённые,
удалять только с явного разрешения пользователя.
4. Если сомневаешься, нужен ли файл — не удаляй. Лучше
оставить лишнее, чем снести нужное.
Разница между двумя уровнями: CLAUDE.md объясняет «почему», permissions.deny технически не даёт «как». Агент, который читает CLAUDE.md, чаще всего даже не попробует удалить защищённое — зачем, если там прямо написано не трогать? А если попробует — permissions.deny остановит.
Конфликт промптов решается просто: permissions.deny — технический слой, он выигрывает всегда. Подсказал в чате «удали этот файл», CLAUDE.md его защищает, агент откажется — правильно, забор стоит.

Третий уровень: git-страховка
permissions.deny и CLAUDE.md не дают агенту удалить лишнее — но они не покрывают всё. Рефакторинг, где агент из «лучших побуждений» переименовывает директорию и случайно теряет файл, который в нулевой момент существовал — такой сценарий не остановит ни один конфиг. Нужен git.
Базовый сценарий, который спасает в 90% случаев:
git init
git add -A
git commit -m "backup before agent task"
Три команды — и у тебя есть точка восстановления. Дальше за каждую серьёзную задачу агенту давай отдельный коммит: понял, что что-то пошло не так — git checkout -- . и вернулся.
Если агент что-то удалил и даже закоммитил это удаление, спасает git reflog:
git reflog
Команда показывает историю всех действий с HEAD, включая те, что git считал потерянными. Находишь коммит до удаления, проверяешь, что это то, что нужно, и возвращаешься:
git reset --hard <хэш>
Всё, файлы на месте.
Агент уже удалил файлы: план действий за 3 шага
Разберём момент, когда страшное случилось. Не паникуй, действуй по порядку.
Шаг 1. Стоп и оценка масштаба. Закрой сессию с агентом, не давай ему продолжать. Открой терминал и проверь, что именно пропало:
git status
git reflog | head -20
git status покажет удалённые файлы в рабочей директории (они будут в списке deleted). git reflog — последние действия с HEAD.
Шаг 2. Восстановление из git. Если файлы были закоммичены — верни их:
git checkout -- <путь/к/файлу>
Если удаление уже попало в коммит — через reflog:
git reset --hard <хэш до удаления>
Шаг 3. Если git не поможет. Файлы не были закоммичены или агент удалил .git вместе со всем. Тогда:
- macOS: корзина (Trash) и Time Machine — проверь обе.
- Windows: корзина и предыдущие версии файлов раздела.
- Linux: не удаляй ничего поверх, смотри
lsof +L1для открытых дескрипторов.
Если и это пусто — последний совет: научись на своём. Это было больно, но теперь ты точно настроишь все три уровня защиты.
Читайте также
- OpenAI Astra: киберугрозы и риски ИИ-агентов
- Claude MCP в 2026: что это и зачем нужен Claude Code
- MCP-сервер для Claude Code в 2026: как подключить и настроить
- Claude Code Skills в 2026: как скиллы работают внутри Claude Code
- На портале «Мастерская нейросетей»: Безопасность ИИ-агентов для бизнеса в 2026: как не потерять контроль
https://t.me/+jDf7-o-nDPw2ZGUy
Как понять, что агент вышел за пределы задачи
Не жди, пока файлы исчезнут. Научись замечать, что агент сворачивает не туда, раньше:
Я, Арина Михална, всегда говорю: если агент спрашивает разрешение на неожиданные команды — например, вдруг хочет удалить файл, о котором речи в задаче не было, — это не «инициатива», это тревожный звоночек, останови и уточни задачу. Если сработал permissions.deny, значит, ты прописал защиту правильно, и вот она загорелась: агент пытался что-то сделать, на что не имел права, — разберись, что именно. И наконец, если агент делает шаги, которых ты не просила, — задача была «добавь орм-страницу», а он вдруг «почистил старые файлы» или «переименова…»
Чек-лист: что у тебя теперь есть
- Знаешь, как прописать запреты через permissions.deny с реальными паттернами
- Понимаешь, что побеждает при конфликте: permissions.deny выигрывает у системного промпта
- Настроила CLAUDE.md с явным списком защищённых директорий
- Есть git-страховка и понимаешь, как восстановить удалённое через reflog
- Знаешь три признака того, что агент вышел за пределы задачи
Частые вопросы
Может ли Claude Code удалить файлы без спроса?
Да, в авто-режиме агент выполняет команды без подтверждения. Именно поэтому важно прописать запреты в settings.json и CLAUDE.md ещё до того, как запустить агента на серьёзной задаче.
Как прописать запрет на удаление конкретных файлов в Claude Code?
В файле .Claude/settings.json добавь в секцию permissions.deny паттерны Bash-команд: "Bash(rm:*/.env*)", "Bash(rm:*/migrations/*)" и аналогичные. Агент не выполнит эти команды даже если системный промпт их разрешает.
Что делать, если ИИ агент уже удалил файлы?
Первый шаг — git: команда "git reflog" покажет хэши всех коммитов, включая момент до удаления. Если файлы не были в git — проверь корзину ОС или Time Machine/теневые копии Windows.
Что побеждает при конфликте: системный промпт или permissions.deny?
permissions.deny — всегда. Это слой ОС-уровня: если команда попала в deny-список, агент физически не сможет её выполнить, даже если CLAUDE.md написан иначе.
Нужен ли git, если я использую Claude Code только для мелких задач?
Да, даже для мелких. Один нечаянный rm -rf на не той директории — и восстанавливать нечего. git init занимает 3 секунды, а покрывает любой сценарий.
Следующий шаг
Твой личный ДЖАРВИС
Первый ИИ-ассистент за вечер: по шагам, на живой практике, без кода.
Пройти курсИли просто следи
А.М. решает вопросы — 5 000+ подписчиков, разборы Claude каждый день.
Подписаться в Telegram

