Introduction
VS Code Settings Sync keeps your extensions, settings, keybindings, and snippets synchronized across machines using your GitHub or Microsoft account. When multiple machines are used simultaneously, conflicts arise where one machine's settings overwrite another's:
Settings Sync: Conflicts detected
Your settings on this machine differ from the cloud.This can result in missing extensions, broken keybindings, or incompatible settings on one of the machines.
Symptoms
- Extensions installed on one machine get uninstalled on another after sync
- Keybindings from one machine overwrite another machine's custom shortcuts
- Settings change unexpectedly after opening VS Code on a different machine
- Sync shows a conflict banner but resolving it does not fix the issue
- Platform-specific settings (paths, terminal profiles) break on other OSes
Common Causes
- Same setting configured differently on different machines
- Settings Sync overwrites machine-specific settings with cloud values
- Extensions that are OS-specific (e.g., PowerShell on Windows) synced to incompatible machines
- Manual settings changes made while offline, then overwritten when reconnected
- Keybindings that conflict between platforms (Cmd vs Ctrl)
Step-by- Fix
- 1.Review and resolve sync conflicts:
- 2.- When the conflict banner appears, click "Show Conflicts"
- 3.- Compare "Local" vs "Cloud" versions
- 4.- Choose which version to keep:
- 5.- "Accept Local" keeps this machine's settings
- 6.- "Accept Cloud" downloads and applies the cloud version
- 7.Use machine-specific settings overrides. In your user
settings.json: - 8.```json
- 9.{
- 10.// Common settings (synced)
- 11."editor.fontSize": 14,
- 12."editor.tabSize": 4,
// Machine-specific overrides "terminal.integrated.defaultProfile.linux": "bash", "terminal.integrated.defaultProfile.osx": "zsh", "terminal.integrated.defaultProfile.windows": "PowerShell",
// OS-specific font settings "[markdown]": { "editor.fontFamily": "Cascadia Code, Consolas, monospace" } } ```
- 1.Exclude specific settings from sync. In settings sync configuration:
- 2.- Press
Ctrl+Shift+P - 3.- Type "Preferences: Configure Settings Sync"
- 4.- Toggle off the categories you do not want to sync (e.g., Keybindings)
- 5.Use settings profiles for different work contexts:
- 6.- Press
Ctrl+Shift+P - 7.- Type "Profiles: Create Profile"
- 8.- Create separate profiles for "Work", "Personal", "Machine A"
- 9.- Profiles can be synced independently
- 10.Reset sync data if conflicts become unmanageable:
- 11.- Press
Ctrl+Shift+P - 12.- Type "Settings Sync: Reset Synced Data"
- 13.- This clears the cloud data - then re-upload from your preferred machine
Prevention
- Use OS-specific setting keys (
*.linux,*.osx,*.windows) for platform-dependent values - Review sync conflicts before accepting - do not blindly accept cloud changes
- Keep machine-specific paths and tool locations out of synced settings
- Use
.vscode/settings.jsonfor project-specific settings (not synced) - Sync only essential settings (Editor, Extensions) and manage others locally
- Periodically review your synced settings in the Settings Sync web view
- Document which settings are machine-specific in your team's VS Code setup guide
- Use the same VS Code version across all machines to avoid setting schema conflicts