何が起きたか
Anthropicが提供するAIコード編集ツール「Claude Code」で、プロジェクトリポジトリに対して定期的にgit reset --hard origin/mainを自動実行するバグが報告された。このコマンドは10分間隔で自動的に実行され、ユーザーの未コミット変更が無音で削除される。複数セッションにわたって継続的に発生していた。
背景と経緯
このバグはGitHub Issuesで報告された(Issue #40710)。報告者によれば、追跡対象ファイル(tracked files)への変更は完全に削除されるが、未追跡ファイル(untracked files)は保護される。また、Gitワークツリーは影響を受けない。レポートには明確な証拠が複数用意されており、再現性も確認されている。このバグはデータ損失の可能性があることから「data-loss」ラベルで分類されている。
技術的な仕組み
バグの詳細分析によれば、以下の挙動が観察されている:
- 自動実行メカニズム:外部のgitバイナリを起動せず、プログラム的なGit操作として
git fetch originとgit reset --hard origin/mainを実行
- 定期実行タイマー:セッション開始時を起点とする600秒間隔タイマーによって駆動
- 選別的な削除:追跡対象ファイルのみを削除し、
.gitignoreで除外されたファイルは温存
- ファイルシステム監視:ファイルシステムの変更検知により、正確なタイミングで複数のファイル操作が実行されていることが確認された
業界への影響
このバグは複数の領域で深刻な影響をもたらす:
- 開発効率の喪失:数時間の作業成果が突然削除される可能性があり、継続的な開発が困難に
- 信頼性への疑問:AIコーディングツールの採用を検討する企業にとって、自動削除機能は致命的な欠陥
- バージョン管理の混乱:Gitの使用パターンに変化をもたらし、開発チームのワークフロー設計に影響
- 広範なプラットフォームでの被害:複数の環境・配布方法を通じて影響が及ぶ
再現性と検証結果
報告者による詳細な検証では、以下のステップで確認可能:
- 追跡対象ファイルを編集
- 未追跡ファイルを新規作成
- 定期的にファイル状態を監視
- 次の10分マーク時点で、追跡対象ファイルの変更が完全に消失し、未追跡ファイルは残存
- この現象を複数サイクルで再現確認
Git reflogの記録から、複数セッションにわたって同一パターンで繰り返されていることが証明されている。
今後の展望
このIssueは「closed as not planned」として処理されているが、データ損失という重大性から、Anthropicによる早急な対応が求められる。ユーザー側の当面の対策としては、Claude Codeを使用する際に頻繁に手動でコミットを実行する、あるいはGitワークツリーを活用することが推奨される。
参考リンク
この記事はAI業界の最新動向を速報でお届けする「AI Heartland ニュース」です。
よくある質問
Q. Claude Codeで10分ごとにgit resetが実行されるのはなぜですか?
報告されたバグにより、セッション開始時を起点とする600秒間隔のタイマーが自動的にgit reset --hard origin/mainを実行する仕様になっているためです。原因や設計意図については不明です。
Q. 未コミットの変更がすべて削除されるのですか?
追跡対象ファイル(Git管理下のファイル)への変更は削除されます。未追跡ファイルと.gitignore除外ファイルは保護されます。
Q. Gitワークツリーなら安全ですか?
はい。報告では「Git worktrees are immune」と明記されており、ワークツリーを使用すればこのバグの影響を回避できます。
Q. Claude Codeのどのバージョンで発生していますか?
記事本文に具体的なバージョン情報は記載されていません。GitHub Issue #40710で報告されていますが、バージョン詳細については不明です。
Q. 削除されたコードは復旧できますか?
git reflogに記録されているコミットハッシュがあれば、git reset --hard [ハッシュ]で復旧可能です。記事本文では「Git reflogの記録から、複数セッションにわたって同一パターンで繰り返されていることが証明されている」と述べられています。