v2.1.3: folder initialization hangs forever on macOS TCC denial — no error logged, all /rest/db API endpoints hang
Author: c-withCreated Sep 6, 2026Updated Sep 12, 2026
v2.1.3: folder initialization hangs forever on macOS TCC denial — no error logged, all /rest/db API endpoints hang
What happened
On macOS, when the syncthing binary lacks TCC permission to read a folder path (e.g. ~/Documents), the affected folder never finishes initialization. Instead of surfacing an error, Syncthing silently deadlocks with severe side effects:
- The affected folder never logs anything — no
Ready to synchronize, no error, noStateChangedevents. It just silently never comes up. - The entire database/API layer hangs: all
/rest/db/*endpoints (/rest/db/status,/rest/db/completion,/rest/db/scan) and/rest/system/connectionshang indefinitely (curl timeouts after 90+ seconds), while config endpoints (/rest/config/*,/rest/system/status,/rest/system/ping) respond normally. - Other folders keep working, which masks the problem — the instance looks partially healthy.
- Remote peers show as connected via LAN, but the sync protocol stalls (non-zero send queues that never drain).
Environment
- Syncthing v2.1.3 (Homebrew, macOS 15.5, arm64)
- Folder A:
~/backups/...— unaffected (path not TCC-protected), works fine - Folder B:
~/Documents/Knowledge— deadlocks (TCC-protected path)
Evidence
Kernel sandbox violation log at each startup:
kernel: (Sandbox) [com.apple.sandbox.reporting:violation] System Policy: syncthing(59189) deny(4) file-read-data /Users/with/Documents/Knowledge
Syncthing logs only show TCC attribution requests, no folder error:
tccd: [com.apple.TCC:access] AUTHREQ_ATTRIBUTION: ... binary_path=/opt/homebrew/Cellar/syncthing/2.1.3/bin/syncthing
(No visible TCC consent dialog appeared — the process runs as a background service via brew services, so the prompt is never seen by the user.)
Expected behavior
Ideally one or more of:
- Log a clear folder-level error (e.g. "folder path denied by OS: permission error") and mark the folder as errored in GUI/API, instead of hanging during initialization.
- Keep
/rest/db/*endpoints responsive for healthy folders even when one folder's model is stuck. - Possibly detect the macOS TCC case specifically and point users to System Settings.
Notes
- Rebuilding the index database (
index-v2/) did not help — reproduced across 3 process restarts. - Granting the binary Documents access (TCC) immediately fixed everything: folder came up, sync resumed, API responsive.
- Possibly related to how
brew serviceslaunches the binary so TCC prompts go nowhere.
Source: syncthing/syncthing