Claude Code удалил 48 218 файлов за 103 секунды
AI-агент получил задачу пересобрать зеркало проекта, а в итоге удалил десятки тысяч файлов из рабочей директории.
Инцидент произошёл на Windows. Claude Code обнаружил, что существующий скрипт не может обновить зеркало на месте, после чего самостоятельно создал Python-скрипт для очистки старой копии.
Проблема оказалась в Windows junction — специальных ссылках на каталоги.
В каталоге зеркала находились 7 332 обычных файла и 614 junction-ссылок, которые указывали обратно на рабочее дерево проекта. Скрипт использовал os.walk(..., followlinks=False), рассчитывая, что это не позволит ему пройти внутрь связанных директорий.
Но на Windows os.path.islink() не распознал эти junction как обычные символические ссылки. В результате вложенные каталоги начали восприниматься как обычные папки и удаляться.
Итог:
- 48 218 рабочих файлов удалено;
- очищены каталоги .git/objects, refs и logs;
- git log перестал находить коммиты;
- было затронуто 728 директорий;
- операция заняла всего 103 секунды.
При этом Git-индекс сохранился и продолжал содержать информацию о 7 221 пути, но сами объекты Git были удалены, поэтому стандартное восстановление через репозиторий оказалось невозможно.
Самое интересное здесь даже не количество удалённых файлов. Агенту не требовалось специально атаковать систему — достаточно было дать ему слишком широкие права на выполнение команд.
Это хороший пример того, почему AI-кодеров опасно воспринимать просто как чат с автодополнением. Если агент может запускать Bash или PowerShell и свободно работать с файловой системой, фактически он становится привилегированным автоматизированным инструментом.
Для опасных операций разумнее использовать:
- предварительный dry run с перечнем файлов;
- перемещение в отдельный каталог вместо немедленного удаления;
- минимальные права пользователя;
- изолированный контейнер или виртуальную машину;
- ограничения файловой системы на уровне ОС.
У Claude Code есть режимы, требующие подтверждения команд, а bypassPermissions предназначен для изолированных окружений. При этом изменения, выполненные непосредственно через Bash-команды, включая удаление файлов, не обязательно попадут под механизм отката checkpoint.
Важная оговорка: 48 218 удалённых файлов — цифра из пользовательского отчёта и проверки, опубликованной вместе с ним. Независимого форензик-расследования этого инцидента пока нет, поэтому утверждать, что это доказанный дефект самого Claude Code, преждевременно.
Но сам сценарий вполне показательный: чем больше автономности получают AI-агенты, тем важнее ограничивать не только то, что им разрешено делать, но и где именно они могут это делать.