Claude Code удалил 48 218 файлов за 103 секунды

AI-агент получил задачу пересобрать зеркало проекта, а в итоге удалил десятки тысяч файлов из рабочей директории.

Claude Code удалил 48 218 файлов за 103 секунды

Инцидент произошёл на 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-агенты, тем важнее ограничивать не только то, что им разрешено делать, но и где именно они могут это делать.

22