Skip to content

原文(日本語に翻訳)

読み取り専用gitコマンドが--no-optional-locksフラグを追加することでmacOSのFSEventsファイルウォッチャーループを引き起こしていた問題を修正しました(anthropics/claude-code#25750)

原文(英語)

Fixed read-only git commands triggering FSEvents file watcher loops on macOS by adding --no-optional-locks flag (anthropics/claude-code#25750)

概要

macOSのFSEvents APIはファイルシステムの変更を監視するメカニズムです。gitの一部の読み取り専用コマンド(git statusgit logなど)は内部でロックファイルを一時的に作成しますが、このロックファイルの作成がFSEventsを通じてClaude Codeのファイルウォッチャーをトリガーし、さらにgitコマンドが実行されるという無限ループが発生していました。--no-optional-locks フラグを追加することで、gitがオプショナルなロックファイルを作成しなくなり、このループが防止されます。

基本的な使い方

この修正はClaude Code内部で自動的に適用されます。ユーザーが明示的に設定する必要はありません。

bash
# Claude Codeがgitコマンドを実行する際(内部的に)
# 修正前: git status(ロックファイルを作成してFSEventsループを引き起こす)
# 修正後: git status --no-optional-locks(ロックファイルを作成しない)

# ユーザーとしての使用方法は変わらない
claude
> このリポジトリのgit statusを確認してください
# 内部的に --no-optional-locks フラグが付加されて実行される

実践例

ユースケース1: 大規模リポジトリでの作業

大きなリポジトリでの作業中にCPU使用率が高くなる問題が解消されます。

bash
# 修正前の問題の症状:
# 1. Claude Codeがgit statusを実行
# 2. gitがロックファイルを作成
# 3. FSEventsがロックファイルの変更を検知
# 4. Claude Codeのファイルウォッチャーが起動
# 5. 再びgit statusが実行される → 無限ループ

# 修正後の正常な動作:
# Claude Code内部でgitコマンドを実行する場合
git status --no-optional-locks
# ロックファイルを作成しないため、FSEventsがトリガーされない

# macOSのactivitymonitorでCPU使用率が低下していることを確認できる

ユースケース2: ファイル変更の自動検知と連携

Claude Codeがファイルの変更を監視しながらgitコマンドを使う場合。

bash
# プロジェクトディレクトリでClaude Codeを起動
claude

> このプロジェクトの変更を監視しながら、git logで最近のコミットを表示してください

# 修正前: git logの実行がFSEventsループを引き起こしてCPUを高負荷にしていた
# 修正後: --no-optional-locksにより正常に実行される

# 内部的に実行されるコマンド:
# git log --no-optional-locks -20 --oneline

ユースケース3: 継続的なgit操作を含む開発ワークフロー

頻繁にgitコマンドを使う開発作業でのパフォーマンス改善。

bash
claude

> 以下の作業を繰り返し実行してください:
> 1. git statusで変更を確認
> 2. 変更があればgit diffで内容を確認
> 3. 問題があれば修正を提案

# 修正後: この繰り返し操作でもFSEventsループが発生しない
# CPUとメモリの使用量が安定する

注意点

  • --no-optional-locks フラグはgitの読み取り操作のパフォーマンスに実質的な影響を与えません。
  • この問題はmacOS固有の問題です。LinuxやWindowsでは同様の問題は発生しませんでした。
  • gitのバージョンによっては --no-optional-locks フラグの動作が異なる場合があります(git 2.15以降で利用可能)。
  • この修正はClaude Codeが内部でgitコマンドを実行する場合に自動的に適用されます。ユーザーが手動でgitコマンドを実行する場合は影響しません。
  • FSEventsループが発生していた場合、Macのファンが回りやすくなったり、バッテリー消費が増えたりする症状が見られることがありました。

関連情報