
Разработчик обнаружил, что Claude Code версии 2.1.87 на macOS каждые 10 минут выполняет скрытую операцию git fetch origin + git reset --hard origin/main в рабочем репозитории проекта. Это молча уничтожает все незакоммиченные изменения в отслеживаемых файлах. В git reflog автор нашел 95+ таких записей за 4 сессии на протяжении ~36 часов — с точным интервалом в 600 секунд.
Баг подтвержден живым воспроизведением: измененный отслеживаемый файл откатился к состоянию из удаленного репозитория на следующей 10-минутной отметке, тогда как неотслеживаемый файл выжил. Результат повторился четыре цикла подряд. Мониторинг файловой системы зафиксировал характерный паттерн операций с .git/ — создание lock-файлов для refs/remotes/origin/HEAD и refs/heads/main — при этом ни одного внешнего процесса git не вызывалось. Операции выполняются программно внутри самого процесса Claude Code, предположительно через библиотеку libgit2.
Автор провел детальное расследование и исключил все внешние причины: git-хуки, cron-задачи, облачную синхронизацию, IDE, Time Machine, file watchers и плагины самого Claude Code. Единственным процессом с доступом к репозиторию оказался сам Claude Code, запущенный с флагом --dangerously-skip-permissions. Смещение секунд в reflog одинаково внутри сессии, но различается между сессиями — это указывает на внутренний таймер, привязанный к моменту запуска. Косвенно существование такого механизма подтверждает свежий CHANGELOG Claude Code: в нем появилась переменная окружения CLAUDE_CODE_DISABLE_CRON, которая отключает "запланированные периодические задачи внутри сессии".
Коварность бага в том, что он невидим при обычном рабочем процессе. Если разработчик регулярно коммитит — а Claude Code к этому подталкивает, — reset становится пустой операцией. Проблема бьет по тем, кто долго работает с незакоммиченными изменениями. Автор жалобы за двухчасовую сессию как минимум трижды терял правки, прежде чем нашел причину. На GitHub уже есть похожие сообщения: разработчики жаловались на необъяснимый откат изменений, но без такого детального анализа.
Пока Anthropic не отреагировала на жалобу. Проверить, затронуты ли вы, можно командой git reflog | grep "reset: moving to origin" — если в логе есть записи с 10-минутным интервалом, баг воспроизводится в вашем проекте. В качестве защиты автор предлагает коммитить чаще и использовать git worktrees — отдельные рабочие деревья оказались полностью иммунны к сбросу. Также стоит попробовать запуск с переменной CLAUDE_CODE_DISABLE_CRON=1 — она может остановить внутренний таймер, вызывающий проблему.
P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.
