Decided to dedicate some time this week to fixing my Syncthing Sync Conflicts. To give you some more insight, for my vault my .stignore folder in Syncthing is as follows
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/workspaces.json
.obsidian/workspace.sync-conflict-*.json
.obsidian/workspaces.sync-conflict-*.json
.obsidian/graph.json
.obsidian/vault-stats.json
.obsidian/plugins/recent-files-obsidian/data.json
.obsidian/plugins/recent-files-obsidian/data.sync-conflict-*.json
.obsidian/plugins/obsidianaitools/data.json
.obsidian/plugins/obsidianaitools/data.sync-conflict-*.json
.obsidian/plugins/obsidianaitools/sessions/
.obsidian/plugins/tasknotes/data.sync-conflict-*.json
.obsidian/plugins/workspaces-plus/data.json
.obsidian/plugins/workspaces-plus/data.sync-conflict-*.json
.obsidian/plugins/workspaces-plus/app.json.bak
.obsidian/plugins/workspaces-plus/appearance.json.bak
.obsidian/plugins/workspaces-plus/workspaces.json.bak
.obsidian/plugins/rss-dashboard/rss-dashboard.sqlite
.obsidian/plugins/rss-dashboard/data.json.bak
.obsidian/plugins/remember-cursor-position/
.obsidian/plugins/pane-relief/
.obsidian/plugins/bmo-chatbot/data/
.obsidian/plugins/media-extended/.claude/
.obsidian/plugins/obsidian-plugin-update-tracker/data.json
**.sync-conflict-*
1. Device-specific UI state workspace.json, workspace-mobile.json, workspaces.json, graph.json
These store things like which notes you have open, your pane layout, and where nodes are positioned in the graph view. Every device will have different notes open at different times, so these files change constantly and will always conflict. There’s no value in syncing them — each device should manage its own.
2. Plugin data that tracks per-device activity recent-files-obsidian/data.json, vault-stats.json, obsidian-plugin-update-tracker/data.json, remember-cursor-position/, pane-relief/
These plugins track things like which files you’ve recently opened, how many words you’ve written, where your cursor was, and which panes are pinned. All of that is meaningless on another device and changes every time you use Obsidian, making them prime conflict generators.
3. Plugins with large or binary data stores obsidianaitools/data.json, obsidianaitools/sessions/, rss-dashboard/rss-dashboard.sqlite, bmo-chatbot/data/
The AI tools plugin generates a new session file every single conversation — I have over 100 of them. The RSS dashboard uses a SQLite database, which Syncthing handles badly because SQLite locks the file while it’s open, causing read errors and corruption. These cause constant noise even if they weren’t device-specific.
4. Workspace-plus backup files and catch-all workspaces-plus/app.json.bak, appearance.json.bak, workspaces.json.bak, **.sync-conflict-*
The .bak files are just internal backups that Workspaces Plus creates itself — no need to sync them. The final **.sync-conflict-* rule is a safety net that catches any future conflict files across your entire vault before they pile up again, regardless of which plugin creates them.
The underlying principle across all of it is: if a file changes on every device independently and the two versions can never be meaningfully merged, don’t sync it.