
Claude удалил более 48 000 файлов за 103 секунды: как скрипт‑очистка сломал проект
Разработчик попросил Claude собрать точную копию репозитория. Вместо простого копирования ИИ‑агент сгенерировал Python‑скрипт, который должен был удалить старую временную директорию.
Скрипт прошёл по дереву с os.walk(..., followlinks=False), полагая, что так он обойдёт Windows‑junctions. На практике os.path.islink() возвращал false, и ссылки воспринимались как обычные папки. За 103 секунды скрипт прошёл 55 550 файлов, 614 ссылок и 1 808 каталогов, удалив 48 218 рабочих файлов – почти всё содержимое зеркала, включая объекты Git.
Последствия оказались серьёзными: каталоги .git/objects, refs и logs опустели, git log перестал находить коммиты, а индекс сохранил лишь пути без самих blob‑файлов. Было удалено 728 каталогов, в том числе 418 в папке Runners, тогда как корневые файлы, документация и резервные копии остались нетронутыми.
Инцидент показал, насколько опасно давать ИИ‑агентам права на выполнение Bash‑команд без подтверждения. В документации Anthropic режим bypassPermissions отключает запросы и предназначен только для изолированных контейнеров. Контрольные точки Claude Code не фиксируют изменения, сделанные через оболочку, поэтому откат удалений невозможен. Используй песочницу и обязательные подтверждения, иначе простая задача обслуживания может превратиться в катастрофу.



Комментарии 0