Claude Code réinitialise secrètement les modifications Git toutes les 10 minutes
Claude Code version 2.1.87 sur macOS exécute automatiquement git fetch origin et git reset --hard origin/main toutes les 600 secondes. Cela entraîne la perte de toutes les modifications non validées dans les fichiers suivis du dépôt. Un développeur a enregistré plus de 95 opérations de ce type sur 36 heures lors de quatre sessions en utilisant git reflog.
La reproduction a confirmé le problème : les modifications dans les fichiers suivis sont annulées exactement 10 minutes plus tard, tandis que les fichiers non suivis restent intacts. La surveillance du système de fichiers a révélé la création de fichiers de verrou dans .git/refs/remotes/origin/HEAD et .git/refs/heads/main sans lancer aucun processus git externe. Ces opérations sont intégrées au processus Claude Code, probablement via libgit2.
Enquête sur la cause
Facteurs externes écartés : git hooks, cron jobs, services de synchronisation cloud, IDEs, Time Machine, observateurs de fichiers, plugins. Seul le processus Claude Code exécuté avec l'option --dangerously-skip-permissions y a accès. Les décalages temporels dans le reflog sont cohérents au sein d'une session mais varient entre les exécutions, indiquant un minuteur interne.
Le CHANGELOG mentionne CLAUDE_CODE_DISABLE_CRON pour désactiver les tâches périodiques. Le bug passe inaperçu avec des commits fréquents — Claude Code les encourage, rendant la réinitialisation inoffensive. Le problème apparaît lors de travaux prolongés avec des modifications en cours : au moins 3 éditions perdues en 2 heures.
Des plaintes similaires sur GitHub manquent d'analyse approfondie. Anthropic n'a pas encore commenté.
Comment vérifier et se protéger
Vérifiez le reflog :
git reflog | grep "reset: moving to origin"
Recherchez des entrées espacées de 10 minutes.
Mesures de protection :
- Validez les modifications toutes les 5–7 minutes.
- Utilisez les git worktrees : elles sont totalement isolées de la réinitialisation.
- Lancez avec
CLAUDE_CODE_DISABLE_CRON=1pour désactiver le cron interne.
Les worktrees se créent ainsi :
git worktree add ../project-worktree main
Passer de l'un à l'autre empêche la perte de données.
Points clés
- Réinitialisation automatique toutes les 10 minutes : efface les modifications non validées dans les fichiers suivis.
- Minuteur interne : lié au démarrage de la session, contrôlé par
CLAUDE_CODE_DISABLE_CRON. - Reproductible sur macOS 2.1.87 : libgit2 sans processus externes.
- Worktrees comme solution : immunité totale au bug.
- Vérifiez le reflog : la clé du diagnostic dans votre projet.
— Editorial Team
Aucun commentaire pour le moment.