• macOS वातावरण में प्रोजेक्ट के बदलाव हर 10 मिनट में अपने-आप मिट जाने की घटना रिपोर्ट की गई
  • जांच में पता चला कि कारण Claude Code नहीं, बल्कि उपयोगकर्ता द्वारा बनाया गया अलग लोकल ऑटोमेशन टूल था, जो GitPython के जरिए समय-समय पर git reset --hard origin/main चला रहा था
  • एक ही working directory साझा होने के कारण Claude Code वजह जैसा दिखा, लेकिन वास्तव में रीसेट बाहरी स्क्रिप्ट कर रही थी
  • Claude Code टीम ने स्पष्ट किया कि उसके आंतरिक कोड में यह कमांड चलाने का कोई लॉजिक नहीं है, और --dangerously-skip-permissions विकल्प इस्तेमाल होने पर ही ऐसा मिलता-जुलता व्यवहार संभव है
  • अंततः निष्कर्ष निकला कि यह Claude Code का bug नहीं बल्कि उपयोगकर्ता के टूल की समस्या थी, और शीर्षक संशोधित कर issue बंद कर दिया गया

समस्या का लक्षण और वातावरण

  • यह देखा गया कि Claude Code उपयोगकर्ता की प्रोजेक्ट रिपॉज़िटरी में हर 10 मिनट पर git fetch origin और git reset --hard origin/main चला रहा है
  • इस व्यवहार से commit न किए गए tracked files के सभी बदलाव मिट जाते हैं, जबकि untracked files बनी रहती हैं
  • Git worktree वातावरण में ऐसा रीसेट नहीं होता
  • वातावरण की जानकारी
    • Claude Code संस्करण: 2.1.87 (Homebrew cask, Bun binary)
    • OS: macOS 15.4 (Darwin 25.3.0, arm64)
    • Shell: zsh

जांच की प्रक्रिया

  • Git reflog में 10 मिनट के अंतराल पर reset: moving to origin/main लॉग 95 बार से अधिक दर्ज मिले
    • session के बीच offset अलग था, लेकिन हर session के भीतर यह ठीक 600 सेकंड के अंतराल पर दोहराया गया
  • रियल-टाइम पुनरुत्पादन परीक्षण में tracked file (api.ts) रीसेट के समय मूल स्थिति में लौट गई, जबकि untracked file (.canary-test.txt) वैसी ही रही
  • fswatch से .git/ डायरेक्टरी की निगरानी करने पर रीसेट के समय .git/refs और .git/logs/HEAD फाइलों में बदलाव का पैटर्न मिला
  • lsof के अनुसार उस रिपॉज़िटरी की CWD इस्तेमाल करने वाली प्रक्रिया केवल Claude Code CLI थी
  • बाहरी git process नहीं मिला, इसलिए अनुमान लगाया गया कि यह भीतर से libgit2 आदि के जरिए किया गया होगा
  • worktree वातावरण में reflog में रीसेट का कोई रिकॉर्ड नहीं मिला

जिन कारणों को खारिज किया गया

  • Git hooks, Claude Code user hooks, plugin update, macOS cloud sync, Cron/LaunchAgents, IDE, Time Machine, file monitoring tools आदि सभी को असंबंधित पाया गया
  • हर बिंदु को वास्तविक config files और processes की जांच के जरिए खारिज किया गया

बाइनरी विश्लेषण (आंशिक)

  • Claude Code binary के भीतर कुछ functions में ["fetch","origin"] कमांड चलाने वाला code fragment मिला
  • git pull wrapper function और fileHistory state management logic मौजूद थे, लेकिन 10 मिनट के interval वाला timer नहीं मिला

प्रभाव

  • commit न किए गए बदलाव हर 10 मिनट में अपने-आप मिट जाते थे, जिससे 2 घंटे के session में तीन बार से अधिक edits गायब हो गए
  • जब सभी बदलाव commit कर दिए जाते थे, तब रीसेट का असर नहीं होता था, इसलिए समस्या कभी-कभी होने वाली लगती थी

Claude Code टीम की प्रतिक्रिया

  • Jarred-Sumner ने साफ कहा, “Claude Code के भीतर git reset --hard origin/main चलाने वाला कोई code नहीं है”
  • उन्होंने बताया कि --dangerously-skip-permissions विकल्प इस्तेमाल करने पर Claude बिना prompt के shell commands चला सकता है, और अगर /loop 10m <prompt> कमांड समय-समय पर “remote के साथ sync” करने को कहे, तो git fetch && git reset --hard origin/main चल सकता है
  • जांच के तरीकों के रूप में:
    1. grep -r "reset --hard" ~/.claude/projects/ से session logs खोजें
    2. claude --debug-file /tmp/debug.txt --dangerously-skip-permissions चलाकर 10 मिनट प्रतीक्षा करें, फिर grep -i bash /tmp/debug.txt | grep reset खोजें
  • Claude Code का fileHistory फीचर git से संबंधित नहीं है, और यह भीतर से git reset नहीं चलाता

अंतिम निष्कर्ष

  • 30 मार्च 2026 के अपडेट में पुष्टि हुई कि समस्या का मूल कारण Claude Code नहीं, बल्कि उपयोगकर्ता का अलग लोकल टूल था
  • वह टूल GitPython का उपयोग करके हर 10 मिनट पर hard reset कर रहा था, और Claude Code की ही डायरेक्टरी को मॉनिटर कर रहा था
  • issue को “not planned” स्थिति में बंद किया गया, और शीर्षक “Claude Code रीसेट चलाता है” से बदलकर “मेरा ऑटोमेशन टूल रीसेट चलाता है” कर दिया गया

अस्थायी समाधान

  • git worktree का उपयोग करने पर रीसेट का प्रभाव नहीं पड़ता
  • बार-बार commit करके बदलावों को सुरक्षित रखा जा सकता है

संबंधित issues

  • #8072 — code edits बार-बार revert हो जाने की समस्या
  • #7232 — approval के बिना git reset --hard चलने से data loss होने की घटना
  • #32793claude install कमांड द्वारा git remote URL गलत बदलने की समस्या (मिलता-जुलता लेकिन अलग मामला)

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.