VS Code Extension · v1.1.0

FTP Deploy
Network Drive Safe

Upload files via FTP, FTPS or SFTP directly from VS Code. Built for Windows Samba shares, mapped drives and UNC paths — with multi-profile support and OS keychain password storage.

OUTPUT — FTP Deploy
[12:04:01] ✓ Profile: prod
[12:04:01] → Connecting to prod.example.com:22
[12:04:02] ✓ SFTP connected
[12:04:02] ↑ Uploading src/index.asp
[12:04:02] ✓ src/index.asp → /var/www/prod
[12:04:02] ↑ Uploading src/utils.asp
[12:04:03] ✓ src/utils.asp → /var/www/prod
[12:04:03] ✓ Done — 2 files uploaded
[12:04:03] ■ Upload on save: active 

Everything you need, nothing you don't

🗂️

Multiple Profiles

Switch between dev, staging and prod from the status bar. Active profile persists per workspace.

🔐

OS Keychain Storage

Passwords never touch settings.json. Stored in Windows Credential Manager or macOS Keychain via VS Code Secret Storage.

🌐

Network Drive Safe

Handles mapped drives (Z:\path), UNC paths (\\server\share) and Git Bash / WSL paths transparently.

💾

Upload on Save

Automatically uploads the active file on every save. Toggle per profile. Zero friction.

🖱️

Context Menu

Right-click any file or folder in the Explorer to upload it instantly without switching away.

🔑

SSH Key Auth

SFTP supports private key + passphrase authentication. No password required.

FTP
Standard, passive mode, port 21. Fast for internal networks.
FTPS
FTP over TLS. Explicit (STARTTLS port 21) or implicit (port 990).
SFTP
SSH File Transfer Protocol, port 22. Password or private key.

One JSON block, multiple environments

Add this to your workspace .vscode/settings.json. Passwords are stored in the OS keychain — never in this file.

JSON — .vscode/settings.json
{
  "ftpDeploy.profiles": {

    "dev": {
      "protocol": "ftp",
      "host":     "192.168.1.100",
      "user":     "ftpuser",
      "remotePath": "/var/www/myapp",
      "localRoot":  "Z:\\projects\\myapp",   // mapped drive OK
      "uploadOnSave": true
    },

    "staging": {
      "protocol": "ftps",
      "host":     "staging.example.com",
      "user":     "deploy",
      "remotePath": "/var/www/staging",
      "ftpsImplicit": false,
      "uploadOnSave": false
    },

    "prod": {
      "protocol": "sftp",
      "host":     "prod.example.com",
      "port":     22,
      "user":     "deploy",
      "remotePath": "/var/www/prod",
      "privateKeyPath": "C:\\Users\\you\\.ssh\\id_rsa",
      "uploadOnSave": false
    }

  }
}

Upload Entire Folder can also be triggered from a task/script with an explicit profile — executeCommand('ftpDeploy.uploadFolder', { profile: 'prod' }). Add "confirmBeforeUpload": false to a profile to skip the confirmation dialog for automation.


Up and running in 2 minutes

Install from the Marketplace

Open VS Code → Extensions (Ctrl+Shift+X) → search GPA FTP Deploy → Install.

Add your profile to workspace settings

Open Command Palette (Ctrl+Shift+P) → FTP Deploy: Open Workspace Config and paste your profile JSON.

Save your password securely

Run FTP Deploy: Save Password to Keychain — password is stored in the OS credential manager, never in plain text.

Start uploading

Save any file to trigger an upload, or right-click in the Explorer → FTP Deploy: Upload →. Watch the Output panel for live logs.