Stale git fsmonitor daemon on an external volume hangs `git status`
Date: 2026-09-25
Source: live reproduction on Zappo (macbook-pro-3), repo /Volumes/FATTY/src/pool
Symptom
The daily repo-hygiene-sweep cron (0bed40efa6f0, 19:52) failed with
subprocess.TimeoutExpired: git -C /Volumes/FATTY/src/pool status --porcelain after 20s.
A plain git status run by hand did not return within 240s. git rev-parse,
git ls-files -m, df and ls on the same volume were all instant.
Cause
core.fsmonitor=true in that repo, with an fsmonitor--daemon process left running since
a previous boot (PID 4185, started Sat 06:00, holding
/Volumes/FATTY/src/pool/.git/fsmonitor--daemon.ipc). Git client and daemon never complete
their handshake, so git status blocks indefinitely. The daemon was started by the
Command Line Tools git; a later git command respawned a daemon from /usr/local/opt/git,
so two git installs are involved. The volume is healthy APFS (91% used, no I/O errors).
Fix
git -C /Volumes/FATTY/src/pool config core.fsmonitor false(durable, repo-scoped).- Kill the orphaned daemon.
repo_hygiene_sweep.pynow calls every git command with-c core.fsmonitor=false, so a stale daemon on any repo under/Volumes/FATTY/srccannot hang the sweep again.
Verify
git -C /Volumes/FATTY/src/pool status --porcelain returns in 0.0s with the same 6 modified
files; python3 ~/.hermes/scripts/repo_hygiene_sweep.py exits 0 in 7.6s and reports
attention: 60 repo(s) dirty/ahead.
Lesson
When one git command on an external volume hangs while rev-parse, ls-files and df
stay instant, suspect the fsmonitor daemon before suspecting the filesystem. Bypass with
-c core.fsmonitor=false to confirm in one command, then disable it for that repo.