Почему встроенный чекпоинт не спасает

Ключевой факт, о который спотыкаются даже опытные пользователи: встроенные чекпоинты Claude Code отслеживают изменения кода внутри чат-интерфейса, а не разрушительные операции в терминале вроде rm или mv. Если агент выполнил команду напрямую в шелле, откатить её через историю чата не получится - защита работает только на том уровне, на котором она реализована, а не на уровне файловой системы в целом.

Реальный случай: «почисти папку» стоил гигабайтов данных

Пользователь попросил Claude Cowork «почистить» захламлённую папку - агент интерпретировал задачу агрессивно и удалил не только мусор, но и гигабайты важных файлов вместе с ним. Инцидент вызвал широкое обсуждение на Hacker News именно потому, что показал границу между удобной автономностью и реальным риском при работе с расплывчатой инструкцией. Инженерный блог Docker формулирует суть проблемы прямо: «агент работает от вашего имени, с вашими правами доступа к файловой системе и вашими учётными данными, и между решением модели и выполнением команды в шелле ничего не стоит».

Уровень 1: git-бэкап перед каждой сессией

Самый простой и при этом самый надёжный барьер - зафиксировать состояние проекта до запуска агента:

git add -A && git commit -m "before agent session"

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

Уровень 2: режим доступа под задачу

В Claude Code есть шесть режимов доступа, и выбор режима - это осознанный компромисс между удобством и контролем. default (в интерфейсе называется Manual) - только чтение, любая правка файла или запуск команды требует подтверждения; самый безопасный старт для незнакомого или чувствительного кода. acceptEdits - добавляет правки файлов и типовые файловые команды (mkdir, touch, mv, cp) без подтверждения - удобно, когда код уже проверяется вами по ходу. plan - чтение плюс одобренные классификатором команды, когда доступен auto-режим - подходит для изучения кодовой базы перед изменениями. auto - выполняет всё, но с фоновыми проверками безопасности через отдельную модель-классификатор; на тарифах Pro, Max и Team это встроенный стартовый режим. dontAsk - разрешены только заранее одобренные инструменты, предназначен для CI и скриптов с жёстким allowlist. bypassPermissions - вообще без проверок, и это оправдано исключительно в изолированных контейнерах или виртуальных машинах, никогда - на рабочей машине с реальными данными.

Уровень 3: песочница и защита учётных данных

Команда /sandbox включает изоляцию доступа к файловой системе на macOS, Linux и WSL2 - агент физически не дотягивается до того, что вы явно не открыли. Отдельно стоит закрыть доступ к каталогам вроде ~/.ssh и ~/.aws/credentials - это делается через deny-правила в settings.json. Секреты проекта лучше держать в .env-файле, добавленном в .gitignore, а не вписывать их напрямую в код или конфигурацию, которую видит агент.

Чек-лист на 10 минут

Перед запуском агентной сессии
  1. Сделан свежий git-коммит непосредственно перед сессией агента
  2. Выбран режим доступа, соответствующий задаче - не более широкий, чем нужно
  3. Включена песочница и закрыт доступ к ~/.ssh и учётным данным облака
  4. Настроены deny-правила для .env и других чувствительных путей в settings.json
  5. После сессии просмотрен git diff перед тем, как принимать изменения агента
Защищают ли встроенные чекпоинты Claude Code от удаления файлов через терминал?
Нет, чекпоинты отслеживают изменения кода внутри чат-интерфейса, а не разрушительные команды вроде rm или mv, выполненные напрямую в шелле.
Что случилось с Claude Cowork и удалением файлов?
Пользователь попросил агента «почистить» захламлённую папку, тот интерпретировал задачу агрессивно и удалил вместе с мусором гигабайты важных данных - инцидент обсуждался на Hacker News.
Сколько режимов доступа есть в Claude Code?
Шесть: default (Manual), acceptEdits, plan, auto, dontAsk и bypassPermissions - каждый даёт свой баланс между удобством и контролем.
Когда можно использовать режим bypassPermissions?
Только в изолированных контейнерах или виртуальных машинах - никогда на рабочей машине с реальными данными, поскольку он полностью отключает проверки.
Что делает команда /sandbox?
Включает изоляцию доступа к файловой системе на macOS, Linux и WSL2, ограничивая агента только явно открытыми директориями.
Где лучше хранить секреты проекта, чтобы агент их случайно не раскрыл?
В .env-файле, добавленном в .gitignore, а не напрямую в коде или конфигурации, которую агент читает по умолчанию.
← Все статьи блога