Claude Code, 코드 변경 사항을 10분마다 삭제하는 치명적인 버그!
Claude Code가 사용자 프로젝트의 Git 레포지토리(Repository)에 대해 10분 간격으로 강제 초기화(Hard Reset)를 수행하여 코드 변경 사항을 삭제하는 버그가 발생함.
문제의 원인으로 Claude Code 내부의 프로그래밍 방식 Git 연산(Programmatic Git Operations), 특히 타이머 설정이 지목됨.
커뮤니티에서는 권한 문제(Permission Issues), 크론 작업(Cron Jobs), 그리고 프롬프트 주입(Prompt Injection) 가능성에 대한 다양한 추측이 제기됨.
Git worktree를 사용하거나, 변경 사항을 자주 커밋(Commit)하는 것이 임시 해결책으로 제시됨.
자동 Git 초기화의 기술적 분석
문제는 Claude Code가 내부적으로 git fetch origin과 git reset --hard origin/main 명령어를 10분 간격으로 실행하면서 발생한다. 이는 추적 파일의 변경 사항을 무자비하게 삭제하는 결과를 초래한다. 특히, 외부 Git 바이너리(Binary)를 사용하지 않고, 프로그램적으로 Git 연산을 수행한다는 점이 특징이다. 이러한 동작은 코드 버전 관리(Code Version Control)의 기본 원칙을 훼손하며, 개발자의 작업 흐름을 방해한다. fswatch를 통해 파일 시스템 변경을 감지하고, 정확한 초기화 시간을 확인할 수 있었다.
원인 분석 및 배제된 가능성
문제의 원인을 파악하기 위해 다양한 외부 요인이 배제되었다. Git 훅(Hooks), Claude Code 사용자 훅, 플러그인, macOS 클라우드 동기화, 크론 작업, Vite/SvelteKit 개발 서버, IDE/에디터, Time Machine 등이 검토되었으나, 모두 관련이 없는 것으로 밝혀졌다. 특히, Claude Code 프로세스만이 해당 레포지토리의 CWD(Current Working Directory)를 가지고 있다는 점이 핵심적인 단서로 작용했다. 이는 Claude Code 내부의 타이머(Timer) 또는 스케줄러(Scheduler)에 의해 자동 초기화가 실행될 가능성을 시사한다.
커뮤니티의 다양한 의견
커뮤니티에서는 문제의 원인에 대한 다양한 추측이 제기되었다. 일부 사용자는 Claude Code가 크론탭(Crontab)을 설정했을 가능성을 제기했으며, 다른 사용자는 권한 문제(Permission Issues)를 지적했다. 또한, 프롬프트 주입(Prompt Injection)을 통해 악의적인 명령이 실행되었을 가능성도 언급되었다. 이러한 다양한 의견은 문제 해결을 위한 단서를 제공하는 동시에, 보안 취약점에 대한 경각심을 높인다.
임시 해결책 및 예방 조치
문제 발생 시, Git worktree를 사용하여 문제를 우회할 수 있다. Worktree는 메인 작업 트리와 격리된 환경을 제공하므로, 자동 초기화의 영향을 받지 않는다. 또한, 변경 사항을 자주 커밋(Commit)하여 데이터 손실을 최소화하는 것이 중요하다. 장기적으로는 Claude Code 개발팀의 공식적인 해결책 발표를 기다리는 것이 필요하며, 데이터 미저장 정책(Zero-Retention Policy)을 준수하는 환경에서 사용하는 것이 권장된다.