概要
- Claude Codeが 10分ごとに自動的にgit fetch origin + git reset --hard origin/main を実行
- 未コミットの変更がサイレントに破棄 される現象を確認
- アンマネージドファイルやworktreeは影響を受けない
- 外部gitプロセスは起動せず、内部ライブラリで処理
- 回避策・関連バグ報告・技術的根拠を詳細に解説
Claude Codeによる10分ごとの自動gitリセット問題
- Claude Code v2.1.87 (Homebrew cask, Bunバイナリ) 環境下で発生
- macOS 15.4 (Darwin 25.3.0, arm64) 上で検証
- zshシェル 使用状況
- ユーザープロジェクトリポジトリで10分ごとに下記操作が自動実行
- git fetch origin
- git reset --hard origin/main
- 外部gitバイナリは一切起動せず、内部APIやlibgit2のようなライブラリ経由で処理
- trackedファイルの未コミット変更が消失、untrackedファイルは残存
- worktreeは完全に影響を受けない (reflogにreset履歴なし)
再現・証拠
- git reflogに10分間隔でreset: moving to origin/mainエントリが記録
- src/lib/api.ts(tracked)を変更し、.canary-test.txt(untracked)を新規作成
- 10分タイマーでapi.tsの変更のみ消失、untrackedファイルは無事
- fswatchで.gitディレクトリのロックファイル作成・削除を検知
- git fetch + reset --hardの典型的パターン
- lsofでClaude Codeプロセスのみが対象ディレクトリで動作
- 0.1秒間隔のプロセス監視で外部gitプロセス未検出
- worktreeのreflogにはreset履歴ゼロ
排除した外部要因
- Git hooks :全て未使用(.sampleのみ)、husky/lint-staged等なし
- Claude Codeユーザーフック :peon-ping(音声)以外なし、git操作なし
- プラグインマーケットアップデータ :削除後も現象継続
- macOSクラウド同期 :対象外ディレクトリ(iCloud, Dropbox, Syncthing等未使用)
- Cron/LaunchAgents :該当設定なし
- Vite/SvelteKit devサーバー :出力先のみ書き込み、git無関与
- IDE/エディタ :nvimは別リポジトリ、format-on-save等無効
- Time Machine :APFSローカルスナップショットは読み取り専用
- ファイルウォッチャー :fswatch/entr/watchman/guard等未稼働
バイナリ解析(部分的)
- /opt/homebrew/Caskroom/claude-code/2.1.87/claude
- hg1()関数が["fetch","origin"]を実行
- io1()関数はgit pullラッパー
- fileHistory stateでtrackedFiles管理
- setInterval等のタイマーは難読化・最小化コードで特定困難
影響
- main working treeのtrackedファイル未コミット変更が10分ごとに消失
- コミット済みの変更には影響なし(resetはno-op)
- 作業中に変更が何度も消されるため、原因特定まで再適用を強いられる
回避策
- git worktreeを利用 :reset対象外で安全
- 頻繁にコミット :コミット済み変更は消えない
関連バグ・報告
- #8072 :「Critical Bug: Code Revisions Being Repeatedly Reverted」
- #7232 :「CRITICAL: Claude executed git reset --hard without authorization causing data destruction」
- #32793 :「claude install corrupts project git remote URL」(本件とは別件)
Claude Code開発チームへの質問
- 内部で600秒ごとにprocess.cwd()に対してgit fetch origin + git reset --hardを実行する仕組みは何か?
- バイナリ難読化・sudo権限なしのため詳細なプロセストレース不可
- libgit2等のプログラム的git操作と推測されるが、公式な説明を求む