Start Debugging

Claude Code 2.1.183 запрещает автоматическому режиму выполнять разрушительные команды Git и IaC

Claude Code v2.1.183 (2026-06-19) блокирует git reset --hard, git clean -fd и terraform/pulumi/cdk destroy в автоматическом режиме, если вы их не запросили, закрывая агентскую лазейку, где один неудачный ход уничтожает незакоммиченную работу.

Claude Code v2.1.183 вышел 2026-06-19, и главное изменение в нём - это ограждение, которое должно было существовать с того же дня, что и автоматический режим: агент больше не может по собственной инициативе выполнять несколько необратимых команд. Если вы явно не запросили git reset --hard, модели не разрешено решать, что он нужен посреди задачи.

Сценарий сбоя, который это закрывает

Автоматический режим (раньше - вариант “просто сделай” в стиле YOLO) позволяет агенту выполнять команды оболочки без запроса подтверждения на каждую команду. Это именно то, что вам нужно для цикла из dotnet build, dotnet test и правок. И это именно то, чего вы не хотите, когда модель, пытаясь “вернуться к чистому состоянию” после запутанного рефакторинга, прибегает к git reset --hard и стирает час незакоммиченной работы или выполняет terraform destroy против не того стека.

Новый релиз проводит черту: разрушительные, труднообратимые команды блокируются в автоматическом режиме, если запрос, который их вызвал, явно не назвал это действие. Заблокированный набор в 2.1.183:

# Blocked in auto mode unless you asked for them
git reset --hard
git checkout -- .
git clean -fd
git stash drop

# Blocked for commits the agent did not make this session
git commit --amend

# Blocked unless a specific stack is named
terraform destroy
pulumi destroy
cdk destroy

Различие - в намерении, а не в полном запрете. Если ваш промпт говорит “сбрось рабочее дерево с помощью git reset --hard”, агент это выполнит. Если он сам приходит к выводу, что сброс - это правильный ход, он останавливается и сообщает вам об этом. То же самое с инфраструктурой: terraform destroy, нацеленный на конкретный названный вами стек, разрешён; голый destroy - нет.

Почему amend получает особое обращение

Правило для git commit --amend - самое тонкое. Изменять коммит, который агент сам сделал ранее в сессии, нормально, это обычное поведение при итерации над собственной работой. Изменять коммит, который он не создавал, переписывает историю, которая ему не принадлежит, что может незаметно затереть коммит коллеги или вашу работу до сессии. Классификатор теперь проверяет авторство в рамках сессии, прежде чем это разрешить.

Это естественно дополняет более раннюю работу по безопасности: --safe-mode из v2.1.169 даёт вам чистую базу для отладки, а теперь сам автоматический режим отказывается быть тем, что теряет ваши данные. Если вам действительно нужно, чтобы агент выполнил одну из этих команд без запроса, правильный ход - сказать об этом в промпте или выйти из автоматического режима на этот шаг и подтвердить его вручную.

Остальная часть релиза

2.1.183 также добавляет предупреждения об устаревании, когда вы запрашиваете модель, которая была заменена (выводятся в stderr в режиме print и во frontmatter агента), новую настройку attribution.sessionUrl, чтобы не включать ссылки на сессии claude.ai в ваши коммиты и PR, и /config --help для вывода сокращённых ключей. Исправления ошибок охватывают WebSearch, возвращающий пустой результат в субагентах, повреждение полноэкранного TUI в Windows Terminal и ходы, которые завершаются молча, когда был выдан только блок размышления.

Полные заметки находятся в журнале изменений v2.1.183.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад