claude-code

grith останавливает 0,27% действий Claude Code

Claude News

claude-code

Автор grith опубликовал статистику надзора за Claude Code: по 120 сессиям медиана операций, которые супервизор заморозил и вынес на решение человека, составила 0,27%. Остальное агент выполнял без участия разработчика. Цифры собраны за месяц работы на машине автора и опубликованы в блоге Grith.

Коротко

  • grith запускает агента через ptrace с предварительным фильтром seccomp-BPF и оценивает каждое чтение файла, порождение процесса и сетевое соединение по 18 правилам до того, как вызов исполнит ядро.
  • По медиане одной сессии 98,4% операций проходили без паузы, около 0,9% отклонялись автоматически, включая структурный запрет колец io_uring, и только 0,27% замораживались и выносились на решение человека.
  • В очередь попадали только обращения к чувствительным целям: каталоги ключей SSH и GnuPG, учётные данные AWS, /var/lib/sss/secrets и файлы .env чужого продакшн-проекта, которых не было в поставленной задаче.

Выбор между чтением каждого запроса на подтверждение и флагом --dangerously-skip-permissions выглядит как обмен безопасности на скорость, потому что решение принимается внутри самого агента. Перенос проверки под инструмент, на уровень системных вызовов, судя по всему, и есть главный аргумент grith: отравленный README, который может убедить модель, не влияет на детерминированные фильтры. Насколько это работает вне машины автора, по одному набору сессий оценить нельзя.

Профили для claude-code и codex автоматически разрешают рутину

grith поставляет именованные профили для claude-code, codex, aider, goose, cline и других инструментов. Каждый профиль автоматически разрешает рутину этих агентов: чтение исходников, запуск тестов, разрешение модулей, порождение git. По словам автора, именно поэтому медиана автоматических разрешений составила 98,4% сразу после установки.

В очередь уходит только неоднозначное: чтение хранилища учётных данных, запись вне рабочего дерева, исходящее соединение с адресом, к которому сессия ещё не обращалась. Процесс замирает на этом системном вызове и ждёт: операцию можно разрешить один раз, разрешить весь класс до конца сессии или отклонить, и grith запоминает выбор. Пороги настраиваются под окружение, а команда grith proxy test '<JSON>' показывает оценку вызова и сработавшие фильтры без его исполнения.

Вместо claude --dangerously-skip-permissions запускается grith exec claude, для Codex работает grith exec codex. Супервизор написан на Rust, и после сессии в аудит-логе остаётся полный перечень того, к чему агент обращался. Установка выполняется одной командой через установочный скрипт на сайте проекта.

Среди задержанных чтений оказались ключи SSH и .env чужого проекта

В очередь на проверку, по данным аудит-лога, попадали чтения ~/.aws/login и ~/.aws/cli, каталога ~/.ssh/keys вплоть до конкретного приватного ключа, ~/.gnupg/private-keys-v1.d, /var/lib/sss/secrets, а также .env и .env.local внутри продакшн-проекта, над которым в тот момент никто не работал. Ни одно из этих обращений не входило в поставленную агенту задачу, пишет автор.

Около 0,9% операций в медиане сессии grith отклонял самостоятельно, вообще без запроса: к ним относятся, например, кольца io_uring, запрещённые структурно. Слои сопоставления детерминированные, LLM в контуре принятия решений нет. Все оценённые вызовы попадают в локальный аудит-лог, который остаётся на машине пользователя; по нему, как утверждает автор, и восстановлена статистика по 120 сессиям.

Codex за четыре с половиной минуты обошёл 707 каталогов

На той же машине Codex получил задачу об ошибке DNS в одном репозитории. По описанию автора, процесс в его дереве четыре с половиной минуты обходил весь диск и читал всё, что по имени походило на секрет: ~/.aws, ~/.ssh, ~/.gnupg, ~/.docker, секреты проекта, на который его не направляли, ключевой материал в /usr/share. Всё это происходило во время обычной работы на машине разработчика, а не в подготовленной демонстрации.

Всего, по подсчётам автора, набралось около двух тысяч файловых операций в 707 каталогах, и все они имели форму обращения к учётным данным. grith заморозил каждое реальное хранилище учётных данных, до которого агент добрался: 11 обращений поставлено в очередь, ноль разрешено. Через полчаса, по словам автора, тот же обход повторился.

Что grith не закрывает

grith контролирует только то дерево процессов, которое запустил сам, но не машину целиком; для по-настоящему недоверенного кода автор рекомендует дополнительно использовать виртуальную машину или контейнер. Это не резервная копия: разрушительное удаление замораживается до исполнения, но уже случившееся не отменяется.

Для инструментов без готового профиля запросов сначала будет больше, пока рутинные операции не разрешены один раз. Ядро безопасности распространяется бесплатно под MPL-2.0 одним статическим бинарником и работает офлайн. Поддерживаются Linux x86_64 и aarch64, другие платформы не заявлены.

Комментарии

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.

Из Google мы используем только имя и аватар. Почту не сохраняем.