threads / discuss / 64459

Git fsmonitor daemon processes spawn detached on macOS 26 Tahoe and never terminate

Subject: Git fsmonitor daemon processes spawn detached on macOS 26 Tahoe and never terminate

## tl;dr

2 messages between Nov 8, 2025 and Nov 14, 2025.

replies: 1people: 2as markdown or json

Jono Spiro· Nov 8, 2025, 21:55 UTC · lore

Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue)
1. Enabled git fsmonitor: git config --global core.fsmonitor true
2. Used git applications (Xcode, VS Code, GitX, terminal with Starship)
3. Performed normal git operations (open repository, stage files,
navigate directories)
4. Quit applications
What did you expect to happen? (Expected behavior)

fsmonitor--daemon processes should terminate when no longer needed, or at minimum when parent applications quit. Expected one daemon per active repository or so. I am seeing dozens and some users of gitx (which I am a maintainer on) are seeing thousands of orphaned git processes pile up after upgrading to Tahoe.

What happened instead? (Actual behavior)
fsmonitor--daemon processes spawn detached (not as children of parent
application) and
never terminate. They accumulate indefinitely (dozens to hundreds over
time). All show:
  git fsmonitor--daemon run --detach --ipc-threads=8
Processes must be manually killed: pkill -f fsmonitor-daemon
What's different between what you expected and what actually happened?

Daemons are spawning detached with no parent-child relationship. They never receive termination signals when parent applications quit, causing accumulation and git index.lock files to remain locked, blocking further git operations.

Anything else you want to add:
- Only occurs on macOS 26.0+ (Tahoe) - not present on earlier macOS versions
- Affects ALL git builds: /usr/bin/git, Homebrew 2.51.2, Xcode Command
Line Tools
- Affects ALL git applications: Xcode, VS Code, GitX, Starship, any git client
- Side effects: system resource exhaustion, locked repositories
- Workaround: git config --global core.fsmonitor false
- Related issue: https://github.com/gitx/gitx/issues/485
- Apple Feedback: FB20956467

Please review the rest of the bug report below. You can delete any lines you don't wish to share.

[System Info]
git version:
git version 2.51.2
cpu: arm64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
libcurl: 8.7.1
zlib: 1.2.12
SHA-1: SHA1_DC
SHA-256: SHA256_BLK
default-ref-format: files
default-hash: sha1
uname: Darwin 25.2.0 Darwin Kernel Version 25.2.0: Sat Nov  1 18:04:14
PDT 2025; root:xnu-12377.60.50.0.2~95/RELEASE_ARM64_T6000 arm64
compiler info: clang: 17.0.0 (clang-1700.3.19.1)
libc info: no libc information available
$SHELL (typically, interactive shell): /bin/zsh
[Enabled Hooks]
Koji Nakamaru· Nov 14, 2025, 07:16 UTC · re: Jono Spiro · lore

Re: Git fsmonitor daemon processes spawn detached on macOS 26 Tahoe and never terminate

On Sun, Nov 9, 2025 at 6:55 AM Jono Spiro <jono@lostinrecursion.net> wrote:
Show 43 quoted lines
>
> Thank you for filling out a Git bug report!
> Please answer the following questions to help us understand your issue.
>
> What did you do before the bug happened? (Steps to reproduce your issue)
>
> 1. Enabled git fsmonitor: git config --global core.fsmonitor true
> 2. Used git applications (Xcode, VS Code, GitX, terminal with Starship)
> 3. Performed normal git operations (open repository, stage files,
> navigate directories)
> 4. Quit applications
>
> What did you expect to happen? (Expected behavior)
>
> fsmonitor--daemon processes should terminate when no longer needed, or
> at minimum when
> parent applications quit. Expected one daemon per active repository or
> so. I am seeing dozens and some users of gitx (which I am a maintainer
> on) are seeing thousands of orphaned git processes pile up after
> upgrading to Tahoe.
>
> What happened instead? (Actual behavior)
>
> fsmonitor--daemon processes spawn detached (not as children of parent
> application) and
> never terminate. They accumulate indefinitely (dozens to hundreds over
> time). All show:
>   git fsmonitor--daemon run --detach --ipc-threads=8
>
> Processes must be manually killed: pkill -f fsmonitor-daemon
>
> What's different between what you expected and what actually happened?
>
> Daemons are spawning detached with no parent-child relationship. They
> never receive
> termination signals when parent applications quit, causing accumulation and git
> index.lock files to remain locked, blocking further git operations.
>
> Anything else you want to add:
>
> - Only occurs on macOS 26.0+ (Tahoe) - not present on earlier macOS versions
> - Affects ALL git builds: /usr/bin/git, Homebrew 2.51.2, Xcode Command
> Line Tools

The "git fsmonitor--daemon --detach --ipc-threads=8" command runs in the background and doesn't terminate when its parent process, such as VSCode, terminates. This behavior is observed even on macOS Sequoia 15.7.2 (my environment) and previous macOS versions. You can stop it by the "git fsmonitor--daemon stop" command or using pkill (as you mentioned).

Setting "git config --global core.fsmonitor true" quickly leads to many fsmonitor processes, so I avoid using it. Instead, I enable fsmonitor only for specific large repositories.

Show 34 quoted lines
> - Affects ALL git applications: Xcode, VS Code, GitX, Starship, any git client
> - Side effects: system resource exhaustion, locked repositories
> - Workaround: git config --global core.fsmonitor false
> - Related issue: https://github.com/gitx/gitx/issues/485
> - Apple Feedback: FB20956467
>
> Please review the rest of the bug report below.
> You can delete any lines you don't wish to share.
>
>
> [System Info]
> git version:
> git version 2.51.2
> cpu: arm64
> no commit associated with this build
> sizeof-long: 8
> sizeof-size_t: 8
> shell-path: /bin/sh
> feature: fsmonitor--daemon
> libcurl: 8.7.1
> zlib: 1.2.12
> SHA-1: SHA1_DC
> SHA-256: SHA256_BLK
> default-ref-format: files
> default-hash: sha1
> uname: Darwin 25.2.0 Darwin Kernel Version 25.2.0: Sat Nov  1 18:04:14
> PDT 2025; root:xnu-12377.60.50.0.2~95/RELEASE_ARM64_T6000 arm64
> compiler info: clang: 17.0.0 (clang-1700.3.19.1)
> libc info: no libc information available
> $SHELL (typically, interactive shell): /bin/zsh
>
>
> [Enabled Hooks]
>

-- Koji Nakamaru

← back to recent threads