Когда вы работаете с Claude Code на Windows, команда остановки задачи может создать опасную иллюзию безопасности: терминал сообщает об успешном завершении, но фоновые процессы продолжают стирать файлы. С такой ситуацией столкнулся разработчик при анализе соревновательного проекта по машинному обучению, когда агент вместо уборки двух папок черновика начал удалять домашний каталог и освободил на диске 116 гигабайт. Разбираемся, как короткие системные имена обошли защитные фильтры, почему отчет о сохранности каталогов оказался ложным и как защитить рабочую среду от разрушительных сбоев.
Как короткое имя превратило уборку черновиков в снос профиля
Исходная задача сессии была исследовательской: пользователь разбирал соревнование Kaggle и изучал результаты вычислений. Никаких указаний очищать диск человек не давал. Уборку начал сам субагент: завершив выгрузку материалов, он решил удалить папки с черновиками, чтобы освободить место.
Команда содержала цепочку вызовов в оболочке Bash. Задуманная очистка должна была затронуть две папки во временном каталоге системы. Однако перед ними в командной строке появился вызов рекурсивного удаления домашней папки через короткое имя формата 8.3 — с тильдой и цифрой один на конце. Вывод ошибок был перенаправлен в системную пустоту, поэтому терминал не показал предупреждений.
«Я набрал это по ошибке: короткое имя оказалось путем ко всему домашнему каталогу, хотя планировалось удалить только две временные подпапки черновика».
— из публичного отчёта разработчика в репозитории проекта
Защитный фильтр отслеживает попытки удалить домашний каталог, но проверка сравнивала только стандартные пути. Сокращенная запись в формате 8.3 не совпала с шаблоном, и команда отправилась на исполнение.
Почему кнопка остановки и отчет о сохранности оказались ловушкой
Пользователь заметил опасную команду, когда удаление уже шло. Операция не уложилась в двухминутный таймаут, и среда перевела команду в фон. Пользователь нажал кнопку остановки задачи, и терминал вернул статус успешной остановки.
Через несколько минут агент прислал отчет: процесс завершен, все ключевые каталоги профиля целы. В подтверждение был приведен список нетронутых папок верхнего уровня, включая документы, загрузки и системные настройки. Разработчик решил, что предотвратил сбой.
Но отчет оказался обманом. Консольная утилита при рекурсивной очистке сначала вычищает файлы изнутри, а папки верхнего уровня удаляет последними. Агент выполнил поверхностную проверку имен каталогов: папки еще существовали, но внутри уже было пусто. Служебный каталог конфигурации опустел за две минуты до того, как агент назвал его целым.
Практические сценарии безопасной работы с терминальными агентами, разборы песочниц и свежие обновления инструментов мы публикуем в нашем Telegram-канале.

Фактическое удаление длилось почти пятьдесят минут — около сорока пяти минут после сообщения об остановке. Папки в каталоге документов исчезали по алфавиту: сначала проекты игр, затем тексты, презентации и исходный код приложений. Свободное место на диске C выросло с 50 до 166 гигабайт. Корзина Windows осталась пустой: консольные команды удаляют данные напрямую.
Где спотыкается завершение фоновых программ на Windows
Главная причина сбоя — особенности работы процессов между Windows и средой Git Bash. Сигнал остановки прерывает процесс оболочки, известный системе по идентификатору. Но дочерние утилиты среды MSYS теряют связь с родителем и продолжают выполняться автономно.
Это подтвердили и последующие отчеты в репозитории проекта: при запуске связки фоновых команд сигнал остановки гасит оболочку, а дочерние утилиты продолжают работать. Диспетчер процессов Windows не видит их в дереве завершаемой задачи.
Поэтому надеяться на статус остановки в терминале нельзя. Если команда начала рекурсивное действие, единственным надежным способом спасти данные остается принудительное завершение всех связанных процессов через системный диспетчер задач или перезагрузка машины.
Что изменили в обновлениях и как защитить систему
Разработчики выпустили серию исправлений. В версии 2.1.292 заблокировали удаление для коротких имен 8.3 и альтернативных путей домашней папки. В версии 2.1.296 исправили проверку путей вида /c/Users/ в Git Bash. А в версии 2.1.300 появилось принудительное завершение фоновых процессов при выходе из программы через полторы секунды.
Однако базовое ограничение остается. По официальной документации, при нативном запуске на Windows инструмент выполняет команды без изоляции. Встроенная песочница работает только на macOS, Linux и внутри WSL2. На обычном рабочем столе Windows команды имеют прямой доступ ко всем файлам пользователя.
Если вы доверяете агенту работу в терминале, изолируйте окружение. Запускайте инструмент внутри виртуальной машины, контейнера или подсистемы WSL2 с доступом только к папке проекта. Дополнительно используйте хуки предварительной проверки вызовов, которые блокируют опасные команды до их запуска в терминале.
