Claude Code bug: automatic git reset destroys uncommitted changes every 10 minutes

✍️ OpenClawRadar📅 Published: March 30, 2026🔗 Source
Claude Code bug: automatic git reset destroys uncommitted changes every 10 minutes
Ad

Bug Details

Claude Code performs git fetch origin + git reset --hard origin/main on the user's project repository every 10 minutes via programmatic git operations (no external git binary spawned). This silently destroys all uncommitted changes to tracked files. Untracked files survive, and git worktrees are immune to this behavior.

Environment and Evidence

Affected version: Claude Code 2.1.87 (Homebrew cask, compiled Bun binary)

OS: macOS 15.4 (Darwin 25.3.0, arm64)

Evidence from investigation:

  • Git reflog shows 95+ entries at exact 10-minute intervals with entries like reset: moving to origin/main
  • Live reproduction confirmed modified tracked files are silently reverted at the 10-minute mark
  • fswatch captured the file operations pattern matching git fetch + reset
  • Only the Claude Code CLI process (PID 70111, claude --dangerously-skip-permissions) was found with CWD in the affected repo
  • No external git processes spawned - operations are programmatic within Claude Code (likely libgit2)
Ad

Technical Analysis

Binary analysis of the compiled binary at /opt/homebrew/Caskroom/claude-code/2.1.87/claude revealed:

  • hg1() function does ["fetch","origin"] via t_(C8(), _) without explicit CWD, defaulting to process.cwd()
  • io1() function is a git pull wrapper logging git pull: cwd=${H} ref=${_??"default"}
  • fileHistory state tracks {snapshots: [], trackedFiles: new Set, snapshotSequence: 0}

What Was Ruled Out

The investigation eliminated: git hooks, Claude Code user hooks, plugin marketplace updater, macOS cloud sync (iCloud, Dropbox, Syncthing, Synology, Google Drive), cron/LaunchAgents, Vite/SvelteKit dev servers, IDEs/editors, Time Machine, and external file watchers.

📖 Read the full source: HN AI Agents

Ad

👀 See Also