claude-code

Git-конфигурация запускает код до запроса

Promtime

claude-code

Исследование GitSpawn обнаружило в пяти CLI-агентах для программирования путь к выполнению заданной репозиторием команды с правами пользователя на хосте до запроса разрешения: Manifold описал механизм, который срабатывает при сборе Git-контекста открытого проекта в начале или после начала сессии.

Коротко

  • При обновлении индекса Git читает .git/config открытого проекта; записанный там параметр core.fsmonitor указывает на helper-программу, которую Git запускает, чтобы узнать об изменениях файлов в рабочем дереве.
  • Настройка не передается при clone, fetch или pull: опасный проект должен попасть на машину вместе с уже существующей .git, например внутри ZIP-архива или через общую папку.
  • Поскольку Git запускается собственным процессом агента как дочерний процесс, команда выполняется вне песочницы с привилегиями пользователя, а система разрешений не успевает показать запрос на одобрение.

Такой сценарий размывает границу, на которой обычно строятся ограничения CLI-агентов: контроль пользовательского подтверждения относится к действиям модели, но не обязательно к вспомогательным программам, запускаемым самим инструментом. Судя по описанию, риск наиболее заметен при обмене рабочими каталогами вне стандартного Git-потока, где происхождение .git-конфигурации легко принять за часть переданного проекта.

Параметр core.fsmonitor запускает helper при обновлении индекса Git

После открытия проекта агенты собирают сведения о репозитории. Им могут понадобиться текущая ветка, измененные и подготовленные к коммиту файлы, пути, затронутые изменением, либо полный список отслеживаемых файлов. Для этого они вызывают Git в разные моменты работы, в том числе при запуске и после начала сессии. Среди приведенных в исследовании примеров есть git status и git diff.

Эти команды выглядят как обычные операции разработчика, но при обращении к рабочему дереву Git обновляет индекс. Именно это обновление служит точкой запуска. core.fsmonitor предназначен для ускорения работы с крупными репозиториями: вместо проверки каждого файла на диске Git обращается к helper-программе, которая сообщает об изменениях. Документация Git предусматривает запуск такой программы во время обновления индекса.

Пять агентов вызывают Git без очистки конфигурации репозитория

Manifold проверил Claude Code, Goose, Grok Build, Hermes и Qwen Code. Авторы указывают, что тот же паттерн встретился им и в других агентах, однако публикация рассматривает только несколько продуктов. Для описанного сценария не имеет решающего значения, какую именно команду выбирает агент: и status, и diff способны вызвать обновление индекса и обращение к настройкам репозитория.

Git читает core.fsmonitor из .git/config самого репозитория. Если настройка содержит команду, она выполняется при подходящем обновлении индекса. Авторы также отмечают, что core.fsmonitor не единственная настройка Git, способная стать точкой запуска команд. Один из найденных ими вариантов не связан с этим параметром. Общий признак состоит в том, что агенты не очищают конфигурацию открытого репозитория перед вызовом Git.

ZIP-архив сохраняет .git, а clone не передает конфигурацию

Клонирование вредоносного адреса само по себе не переносит такую конфигурацию. То же относится к fetch и pull. Чтобы настройка сработала, репозиторий должен оказаться на машине уже в виде каталога с директорией .git внутри. В качестве способа передачи Manifold использовал ZIP-архивы во всех описанных доказательствах работоспособности.

Исследование называет и другие пути доставки: общий архив, сетевой диск, синхронизируемую папку и USB-накопитель. Такие каталоги могут передаваться между коллегами или от консультантов клиентам. После открытия проекта команда запускается на хосте от имени пользователя и с его правами. Ее порождает код агента, который вызывает Git как дочерний процесс, поэтому запрос на разрешение не появляется.

Полный список агентов Публикация не раскрывает полный перечень CLI-инструментов с тем же паттерном, хотя авторы сообщают, что нашли его в большем числе продуктов, чем пять подробно рассмотренных примеров. Поэтому точный масштаб затронутых агентов за пределами Claude Code, Goose, Grok Build, Hermes и Qwen Code из исходного материала не следует.

Комментарии

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

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

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

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