RemoteSync — Safe SFTP & Remote Deploy
Know exactly what reached your server.
Edit, sync and safely deploy files to remote servers directly from VS Code.
Coming from SFTP / vscode-sftp? Import your existing .vscode/sftp.json in one click. Passwords move to your system keychain.
Why RemoteSync
- Upload on save you can trust. Every save ends as ✓ uploaded, ⚠ skipped, ↻ retrying or ✕ failed — never silence. Uploads are verified by size on the server.
- No half-written files. Uploads go to a temporary file and are swapped into place only when complete. A dropped connection never leaves a broken file on your live site.
- Survives Wi-Fi drops. Lost connections reconnect and retry automatically, then report clearly if they give up.
- No passwords in project files. Secrets live in the OS keychain via VS Code SecretStorage.
- Production looks dangerous. Production asks before uploading, never deletes by default, and needs you to type
DELETE for removals.
- Preview before every folder deploy. See exactly what will upload, overwrite, delete or skip — then approve.
- Conflict detection. Warns before you overwrite a server file someone changed since your last sync.
- History. Every transfer is recorded, across restarts.
Getting started
- Open your project folder.
- Open the RemoteSync view in the activity bar → Add SFTP Server.
- Fill in host, username, remote folder and login. Click Test Connection. Save.
- Edit a file and save. Watch the status bar:
✓ index.php → My Server.
Configuration
Settings live in .vscode/remotesync.json (autocomplete included). Passwords are never stored there.
{
"version": 1,
"connections": [
{
"id": "production",
"name": "Production",
"environment": "production",
"host": "example.com",
"username": "deploy",
"remotePath": "/var/www/site",
"authentication": { "type": "privateKey", "privateKeyPath": "~/.ssh/id_ed25519" },
"watch": ["dist/**"],
"ignore": [".git/**", "node_modules/**", ".vscode/**", ".env"]
}
]
}
| Setting |
Values |
Default |
environment |
development, test, staging, production, custom |
development |
uploadOnSave |
off, ask, automatic |
ask on staging/production, automatic elsewhere |
remoteDelete |
off, ask, mirror |
off |
compareMode |
fast, safe, checksum |
safe |
conflictDetection |
true / false |
true |
watch |
globs uploaded when changed outside the editor |
none |
Authentication: password, privateKey, agent (SSH agent plus your ~/.ssh/config keys), keyboardInteractive (one-time codes). Host aliases from ~/.ssh/config work as the host.
Commands
Add / Edit / Test / Connect / Disconnect · Upload / Download File · Upload / Download Folder · Preview Local → Remote · Preview Remote → Local · Compare Local ↔ Remote · Retry Failed Transfers · Show Transfer History · Show Diagnostics · Copy Diagnostic Report · Restart File Watcher · Import Existing sftp.json
Not yet supported
FTP/FTPS, jump hosts (ProxyJump), rollback, Git-change deploys. SFTP comes first, done well.