홈으로 돌아가기

Claude Code 버그: 10분마다 Git reset

macOS의 Claude Code 2.1.87이 10분마다 숨겨진 git reset을 수행하여 커밋되지 않은 변경 사항을 파괴합니다. 조사는 외부 원인을 배제하고, reflog 확인 및 DISABLE_CRON을 사용한 worktrees 보호를 제안합니다.

심각한 Claude Code 버그: 10분마다 코드 손실
Advertisement 728x90

# Claude Code, 10분마다 Git 변경사항을 몰래 리셋한다

macOS에서 Claude Code 버전 2.1.87이 600초마다 자동으로 git fetch origingit reset --hard origin/main을 실행합니다. 이로 인해 저장소의 추적된 파일에 있는 모든 커밋되지 않은 변경사항이 손실됩니다. 한 개발자가 git reflog를 사용해 4번의 세션에서 36시간 동안 95회 이상의 이러한 작업을 기록했습니다.

재현 테스트로 문제가 확인되었습니다: 추적된 파일의 변경사항은 정확히 10분 후에 롤백되며, 추적되지 않은 파일은 영향을 받지 않습니다. 파일 시스템 모니터링 결과, 외부 git 프로세스를 실행하지 않고 .git/refs/remotes/origin/HEAD.git/refs/heads/main에 락 파일이 생성되는 것으로 나타났습니다. 이러한 작업은 Claude Code 프로세스에 내장되어 있으며, libgit2를 통해 구현된 것으로 보입니다.

원인 조사

외부 요인 배제: git hooks, cron jobs, 클라우드 동기화 서비스, IDE, Time Machine, 파일 감시자, 플러그인. 접근 가능한 유일한 프로세스는 --dangerously-skip-permissions 플래그로 실행 중인 Claude Code입니다. reflog의 시간 오프셋은 세션 내에서는 일관되지만 실행 간에는 다르며, 내부 타이머를 가리킵니다.

Google AdInline article slot

CHANGELOG에서 주기적 작업을 비활성화하기 위해 CLAUDE_CODE_DISABLE_CRON을 언급합니다. 빈번한 커밋 시에는 버그가 눈치채지 못합니다—Claude Code가 이를 장려하므로 리셋이 무해합니다. 문제는 작업 중 변경사항으로 장시간 작업할 때 드러납니다: 2시간 동안 최소 3개의 편집이 손실되었습니다.

GitHub의 유사한 불만은 깊이 있는 분석이 부족합니다. Anthropic은 아직 공식 입장을 밝히지 않았습니다.

확인 및 보호 방법

reflog 확인:

Google AdInline article slot
git reflog | grep "reset: moving to origin"

10분 간격으로 된 항목을 확인하세요.

보호 조치:

  • 5~7분마다 변경사항을 커밋하세요.
  • git worktrees 사용: 리셋으로부터 완전히 격리됩니다.
  • 내부 cron을 비활성화하기 위해 CLAUDE_CODE_DISABLE_CRON=1로 실행하세요.

worktrees는 다음과 같이 생성합니다:

Google AdInline article slot
git worktree add ../project-worktree main

이들 간 전환으로 데이터 손실을 방지할 수 있습니다.

주요 포인트

  • 10분마다 자동 리셋: 추적된 파일의 커밋되지 않은 변경사항을 삭제합니다.
  • 내부 타이머: 세션 시작에 연동되며, CLAUDE_CODE_DISABLE_CRON으로 제어합니다.
  • macOS 2.1.87에서 재현 가능: 외부 프로세스 없이 libgit2 사용.
  • worktrees가 해결책: 버그에 완전한 면역.
  • reflog 확인: 프로젝트 진단의 핵심.

— Editorial Team

Advertisement 728x90

다음 읽기