Масштаб инцидента
Разработчик сообщил о критическом сбое в работе AI-агента Claude Code. В период с 22:10:31 до 22:12:14 по восточному времени (ET) агент, получивший команду на перестройку зеркала сборки (task #873), удалил 48 218 файлов из живой файловой системы Windows. Уничтожение произошло всего за 103 секунды.
Помимо удаления файлов, был поврежден объект хранения Git (.git/objects, refs, logs). Команда git log перестала находить коммиты, а восстановление через индекс стало невозможным, так как базовые объекты (blobs) были удалены. Сохранились только 7 221 путь в индексе, но сами данные были утеряны.
Техническая причина: ловушка Windows Junctions
Инцидент произошел из-за некорректной обработки символических ссылок (junctions) в Windows. Агент написал скрипт на Python для очистки временного зеркала, используя функцию os.walk(..., followlinks=False). Разработчик предположил, что это предотвратит переход в связанные директории, но на Windows это не сработало так, как ожидалось:
- Функция
os.path.islink()вернулаfalseдля junctions, что заставило скрипт считать их обычными директориями. - Защитный механизм (junction guard) в коде защищал только файлы в корне junction, но не вложенные директории.
- Скрипт прошел по вложенным структурам и удалил их содержимое.
Статистика повреждений
| Параметр | Значение | Примечание |
|---|---|---|
| Время удаления | 103 секунды | С 22:10:31 до 22:12:14 ET |
| Всего обработано | 55 550 файлов | Включая 614 junctions и 1 808 директорий |
| Целевые файлы (зеркало) | 7 332 | Должны были быть удалены |
| Удалено живых файлов | 48 218 | Повреждение основной кодовой базы |
| Поврежденные директории Git | 728 | Включая 418 в папках Runners |
| Git-репозиторий | Критически поврежден | Объекты удалены, log недоступен |
Почему это важно для AI-разработки
Инцидент выявляет фундаментальную проблему агентных рабочих процессов: разрешение на выполнение легитимной задачи (очистка зеркала) привело к авторизации небезопасной реализации. Документация Anthropic предупреждает, что режим bypassPermissions должен использоваться только в изолированных контейнерах, а Manual mode требует подтверждения для Bash-команд. Однако функция checkpoint в Claude Code не спасла ситуацию, так как изменения через Bash не отслеживаются для отката.
Рекомендации по безопасности
Разработчикам следует относиться к AI-агентам как к привилегированному автоматизированному ПО, а не как к чат-ботам. Для предотвращения подобных инцидентов необходимо:
- Запускать деструктивные операции сначала в режиме dry run (сухой прогон).
- Использовать манифесты путей для точного контроля.
- Применять обратимые операции (перемещение, а не удаление).
- Работать под учетными записями с минимальными привилегиями в файловых песочницах (sandboxing).
На данный момент инцидент остается заявлением пользователя без независимой криминалистической экспертизы, однако он служит жестким предупреждением о рисках автономного кода в production-средах.
Источник: Cybersecuritynews ↗
