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:

bash
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. 1.Review and resolve sync conflicts:
  2. 2.- When the conflict banner appears, click "Show Conflicts"
  3. 3.- Compare "Local" vs "Cloud" versions
  4. 4.- Choose which version to keep:
  5. 5.- "Accept Local" keeps this machine's settings
  6. 6.- "Accept Cloud" downloads and applies the cloud version
  7. 7.Use machine-specific settings overrides. In your user settings.json:
  8. 8.```json
  9. 9.{
  10. 10.// Common settings (synced)
  11. 11."editor.fontSize": 14,
  12. 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. 1.Exclude specific settings from sync. In settings sync configuration:
  2. 2.- Press Ctrl+Shift+P
  3. 3.- Type "Preferences: Configure Settings Sync"
  4. 4.- Toggle off the categories you do not want to sync (e.g., Keybindings)
  5. 5.Use settings profiles for different work contexts:
  6. 6.- Press Ctrl+Shift+P
  7. 7.- Type "Profiles: Create Profile"
  8. 8.- Create separate profiles for "Work", "Personal", "Machine A"
  9. 9.- Profiles can be synced independently
  10. 10.Reset sync data if conflicts become unmanageable:
  11. 11.- Press Ctrl+Shift+P
  12. 12.- Type "Settings Sync: Reset Synced Data"
  13. 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.json for 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