DEV

VS Code in 2026: The Complete Setup, Extensions & AI Coding Guide

Everything you need to run Visual Studio Code like a professional in 2026 -- installation and Settings Sync, profiles, the essential extensions, Remote-SSH and Dev Containers, integrated debugging with launch.json, tasks, Git and source control, and AI coding with GitHub Copilot, Continue, Cline, and Claude Code. Includes a head-to-head comparison with Cursor and real settings.json / launch.json examples.

By Jose Nobile | Updated 2026-07-01 | 24 min read

What Is VS Code and Why It Still Wins in 2026

Visual Studio Code is Microsoft's free, open-source code editor and, by a wide margin, the most-used development tool in the world. It is built on Electron and the open-source Monaco editor, and its source lives in the MIT-licensed "Code - OSS" repository. Microsoft ships a branded stable build roughly once a month, plus a nightly Insiders build, so features land continuously rather than in big-bang releases.

What makes VS Code endure is the combination of a lightweight core and a massive extension marketplace. The editor itself starts fast and stays responsive on large repositories, while everything language-specific -- linting, formatting, debugging, containers, remote development -- arrives through extensions you opt into. In 2026 that ecosystem is why nearly every AI coding tool, including Cursor, is built on top of VS Code rather than replacing it.

The other reason it matters: VS Code closed most of the AI gap itself. GitHub Copilot is now deeply integrated with inline completions, Copilot Chat, and a first-party agent mode that can run tools and MCP servers -- and the Copilot Chat extension was open-sourced in 2025. You no longer need a fork like Cursor to get agentic editing; you can get it in stock VS Code, or swap in open-source extensions such as Continue and Cline. This guide covers the whole professional setup end to end.

CORE

Free & Open Source

The core is MIT-licensed ("Code - OSS"). The branded Microsoft build is free for personal and commercial use, with no seat licensing. Monthly stable releases plus a nightly Insiders channel.

CORE

Official Marketplace

Access to the full Visual Studio Marketplace, including Microsoft-only extensions -- Pylance, C/C++, Remote-SSH, and Dev Containers -- that forks on Open VSX legally cannot ship.

CORE

Native AI & Agent Mode

Copilot inline completions, Copilot Chat, and a built-in agent mode that runs tools and MCP servers ship in stock VS Code. Copilot Chat is open source, and a free Copilot tier exists.

ECOSYSTEM

Remote-First

Remote-SSH, Dev Containers, WSL, and GitHub Codespaces let the editor UI run locally while the language server, terminal, and debugger run on a remote host or container. One tool, any environment.

Installation, Settings Sync & Profiles

Download VS Code for macOS, Windows, or Linux from code.visualstudio.com. On Windows the User Installer needs no admin rights; on macOS drag to Applications; on Linux install the .deb/.rpm or the Snap/Flatpak, or on Arch use the AUR. Install the code shell command (Command Palette → "Shell Command: Install 'code' command in PATH") so you can run code . from any terminal. VS Code auto-updates on the monthly stable channel.

Turn on Settings Sync immediately (Command Palette → "Settings Sync: Turn On", or the account icon in the Activity Bar). Sign in with a GitHub or Microsoft account and your settings.json, keybindings, snippets, extensions, and UI state replicate to every machine. Pair it with Profiles to keep separate stacks -- for example a lean "Python" profile and a heavier "Frontend" profile -- each with its own extensions and settings, exportable as a shareable .code-profile file.

// settings.json — open with "Preferences: Open User Settings (JSON)"
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" },
  "editor.rulers": [88, 100],
  "editor.tabSize": 2,
  "editor.stickyScroll.enabled": true,
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "files.autoSave": "onFocusChange",
  "terminal.integrated.defaultProfile.linux": "bash",
  "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff",
    "editor.tabSize": 4
  },
  "settingsSync.ignoredSettings": ["terminal.integrated.env.linux"]
}
SETUP

System Requirements

macOS 11+, Windows 10/11, or a modern Linux (glibc 2.28+). 4 GB RAM works; 8–16 GB is comfortable with language servers and AI extensions running. No GPU required.

SETUP

Three Settings Layers

User settings apply everywhere, Workspace settings (.vscode/settings.json) override per project and are committed to the repo, and Folder settings scope multi-root workspaces. Language-specific blocks ([python]) override per file type.

SETUP

Settings Sync

Sign in with GitHub or Microsoft to sync settings, keybindings, snippets, tasks, UI state, and extensions across machines. Use settingsSync.ignoredSettings to keep machine-specific keys local.

SETUP

Profiles

Bundle a set of extensions and settings into a named Profile per stack or client. Switch instantly, keep a bloated web profile away from a minimal editing profile, and export a .code-profile to share with your team.

SETUP

The code CLI

Install the code command to open files and folders from the shell (code .), diff two files (code --diff a b), install extensions (code --install-extension), or wait for an editor as your $EDITOR.

Essential Extensions

VS Code is deliberately minimal out of the box; extensions turn it into a full IDE. Install them from the Extensions view (Ctrl/Cmd+Shift+X) or the CLI (code --install-extension dbaeumer.vscode-eslint). The golden rule is restraint: every extension adds startup cost and a background process, so install what you use and lean on Profiles to keep per-stack sets isolated. Use the built-in Extension Bisect ("Help: Start Extension Bisect") to hunt down whichever one is slowing you down.

A handful are near-universal. ESLint (dbaeumer.vscode-eslint) and Prettier (esbenp.prettier-vscode) give you lint-on-save and format-on-save. GitLens supercharges the Git view with inline blame and history. Error Lens surfaces diagnostics inline at the end of the line instead of only on hover. EditorConfig enforces shared whitespace rules across a team.

Language stacks bring their own must-haves: the Python extension with Pylance and Ruff, rust-analyzer for Rust, the Go extension, and for TypeScript the built-in language service plus Pretty TypeScript Errors. Round it out with Docker / Container Tools, the Remote Development pack, REST Client or Thunder Client for API testing, and an icon theme like Material Icon Theme.

LINT

ESLint + Prettier

dbaeumer.vscode-eslint and esbenp.prettier-vscode. Format on save and auto-fix lint on save via editor.codeActionsOnSave. Set Prettier as the default formatter and let ESLint own code quality.

GIT

GitLens + Error Lens

GitLens adds inline blame, file/line history, and rich diffs on top of the native SCM view. Error Lens renders errors and warnings inline at end-of-line so you fix them without hovering.

LANG

Language Packs

Python + Pylance + Ruff, rust-analyzer, the Go extension, and the built-in TypeScript service. These provide IntelliSense, go-to-definition, refactors, and debugger integration per language.

SPEED

Keep It Lean

Extensions cost startup time and RAM. Use Profiles to scope sets per stack, disable extensions per-workspace, and run "Extension Bisect" or "Developer: Show Running Extensions" to find slow ones.

Practical tip: commit a .vscode/extensions.json with a recommendations array (for example ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "charliermarsh.ruff"]). When a teammate opens the repo, VS Code prompts them to install exactly the extensions the project expects -- zero-config onboarding for the whole team.

Remote-SSH & Dev Containers

Remote development is one of VS Code's biggest advantages over lightweight editors and forks. The Remote Development extension pack (ms-vscode-remote.vscode-remote-extensionpack) lets the editor UI run locally while the language servers, terminal, debugger, and extensions run on a remote host, a container, or WSL. Your laptop stays a thin client; the heavy compute lives wherever the code does.

Remote-SSH connects to any machine you can reach over SSH. VS Code installs a small server on the remote automatically, then folders, terminals, and debuggers all execute there. Add hosts to your ~/.ssh/config and pick them from "Remote-SSH: Connect to Host". Because Remote-SSH, Pylance, and Dev Containers are Microsoft-licensed, they only run in the official VS Code build -- not in Open VSX forks like Cursor.

Dev Containers define the whole toolchain in a committed .devcontainer/devcontainer.json. "Dev Containers: Reopen in Container" builds (or pulls) the image, mounts your source, forwards ports, runs a postCreateCommand, and installs the listed extensions inside the container. Everyone on the team gets a byte-identical environment, and the same config powers GitHub Codespaces in the browser.

// .devcontainer/devcontainer.json
{
  "name": "node-api",
  "image": "mcr.microsoft.com/devcontainers/typescript-node:22",
  "features": {
    "ghcr.io/devcontainers/features/docker-in-docker:2": {}
  },
  "forwardPorts": [3000],
  "postCreateCommand": "npm install",
  "customizations": {
    "vscode": {
      "extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
      "settings": { "editor.formatOnSave": true }
    }
  }
}
REMOTE

Remote-SSH

Edit code on any SSH-reachable host as if it were local. VS Code auto-installs a server on the remote; terminals, debuggers, and extensions run there. Configure hosts in ~/.ssh/config.

REMOTE

Dev Containers

Commit .devcontainer/devcontainer.json and "Reopen in Container". Everyone gets the same OS, runtime, tools, and extensions. Add capabilities with reusable Dev Container Features.

REMOTE

WSL & Codespaces

On Windows, "WSL" runs your Linux toolchain natively. The identical devcontainer.json also boots a GitHub Codespace -- a full VS Code in the browser with no local setup at all.

WORKFLOW

Local vs Remote Extensions

Extensions split into UI (theme, keymaps) that stay local and Workspace (linters, debuggers) that install on the remote/container. VS Code shows where each one runs and installs them in the right place.

Practical example: add a host block to ~/.ssh/config (Host gpu-box / HostName 10.0.0.5 / User dev), run "Remote-SSH: Connect to Host", pick gpu-box, and open a folder. The integrated terminal, Python interpreter, and debugger now all run on the GPU box while you edit from your laptop -- no code ever leaves the server.

Integrated Debugging & launch.json

VS Code has a first-class debugger built around the open Debug Adapter Protocol (DAP), so the same UI -- breakpoints, call stack, watch, variables, debug console -- works for Node.js and browsers out of the box and for Python, Go, Rust, and dozens of others through their extensions. Open the Run and Debug view (Ctrl/Cmd+Shift+D), press F5 to start, and step with F10/F11.

Debug configurations live in .vscode/launch.json. Each entry has a type (the debug adapter), a request (launch to start a process or attach to hook into a running one), and a program or port. Variables like ${workspaceFolder} and ${file} keep configs portable, and compounds start several configurations at once -- perfect for debugging a backend and frontend together.

Beyond plain breakpoints, VS Code supports conditional breakpoints (break only when an expression is true), logpoints (print a message without editing code or pausing), data/function breakpoints, and inline values shown right in the editor. You can also set preLaunchTask to build before debugging and postDebugTask to clean up afterward.

// .vscode/launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug API (tsx)",
      "type": "node",
      "request": "launch",
      "program": "${workspaceFolder}/src/index.ts",
      "runtimeExecutable": "tsx",
      "preLaunchTask": "build",
      "skipFiles": ["<node_internals>/**"],
      "console": "integratedTerminal"
    },
    {
      "name": "Python: Current File",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "justMyCode": false
    },
    {
      "name": "Attach to Chrome",
      "type": "chrome",
      "request": "attach",
      "port": 9222,
      "webRoot": "${workspaceFolder}"
    }
  ],
  "compounds": [
    { "name": "Full Stack", "configurations": ["Debug API (tsx)", "Attach to Chrome"] }
  ]
}
DEBUG

launch vs attach

launch starts and controls a fresh process; attach connects to an already-running one via a debug port. Use attach for servers in containers or a Chrome started with --remote-debugging-port.

DEBUG

Breakpoints & Logpoints

Conditional breakpoints break only when an expression is true; hit-count breakpoints fire on the Nth pass; logpoints print an interpolated message without pausing or editing code.

DEBUG

Compounds & Tasks

Start backend and frontend together with a compounds entry. Wire preLaunchTask to build first and postDebugTask to tear down services after the session ends.

DEBUG

Debug Adapter Protocol

One debugger UI, any language. DAP is an open standard, so the same breakpoints, watch, and call stack work for Node, Python (debugpy), Go (Delve), Rust (CodeLLDB), and more.

Practical example: to debug a running container, expose the inspector (node --inspect=0.0.0.0:9229 server.js), then add an attach config with "port": 9229 and a localRoot/remoteRoot mapping. Set a breakpoint in your source, press F5, and VS Code pauses execution inside the container while you inspect variables locally.

Tasks & Build Automation

Tasks let you run your build, test, lint, and deploy commands without leaving the editor. They live in .vscode/tasks.json and are surfaced through "Tasks: Run Task" and the shortcut Ctrl/Cmd+Shift+B for the default build task. A task can shell out to any command (npm run build, make, cargo test) and its output is captured in a dedicated terminal panel.

The real power is problem matchers. A problem matcher parses a task's output and turns compiler or linter errors into clickable entries in the Problems panel, complete with red squiggles in the editor. Built-in matchers like $tsc and $eslint-stylish cover common toolchains; you can define your own with a regex for anything else.

Tasks also support background/watch processes (isBackground: true with a background matcher that detects when a watcher goes idle), dependsOn chains to run tasks in sequence or parallel, and the group field to mark a task as the default build or test. Because a debug config can call a task via preLaunchTask, tasks and debugging compose into one keystroke workflow.

// .vscode/tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "shell",
      "command": "npm run build",
      "group": { "kind": "build", "isDefault": true },
      "problemMatcher": ["$tsc"]
    },
    {
      "label": "test:watch",
      "type": "shell",
      "command": "npm test -- --watch",
      "isBackground": true,
      "group": "test"
    },
    {
      "label": "ci",
      "dependsOn": ["build", "test:watch"],
      "dependsOrder": "sequence"
    }
  ]
}
TASKS

Run Task

"Tasks: Run Task" lists every task; Ctrl/Cmd+Shift+B runs the default build. Bind a task to a keyboard shortcut in keybindings.json for one-key builds and deploys.

TASKS

Problem Matchers

Turn raw compiler/linter output into clickable Problems entries and inline squiggles. Use built-ins like $tsc and $eslint-stylish, or write a custom regex matcher for any tool.

TASKS

Background Watchers

Mark long-running watchers with isBackground: true and a background problem matcher so VS Code knows when a compile/watch cycle starts and finishes without blocking other tasks.

TASKS

dependsOn Chains

Compose tasks with dependsOn and dependsOrder (sequence or parallel) to build pipelines -- lint, then build, then test -- from a single command.

TASKS

Task Variables

Use ${workspaceFolder}, ${file}, ${relativeFile}, and ${input:...} prompts to build reusable, portable task definitions that adapt to the active file or user input.

WORKFLOW

Wire Into Debugging

Reference a task from a launch config with preLaunchTask to compile before every debug session, and postDebugTask to shut down services when you stop. Build and debug become one action.

Practical example: define a build task with the $tsc matcher and mark it default. Now Ctrl/Cmd+Shift+B compiles the project; any TypeScript error appears in the Problems panel and as an inline squiggle you can jump to. Set "preLaunchTask": "build" in launch.json so pressing F5 always debugs freshly compiled output.

Git & Source Control

VS Code ships with a full Git client in the Source Control view (Ctrl/Cmd+Shift+G). It detects any repo in your folder and gives you staging, commit, branch, merge, and push/pull without touching the terminal -- while still letting you drop to the terminal whenever you want. The gutter shows added/changed/deleted lines, and the diff editor is the same rich three-way view used everywhere else.

The core source-control features you will use daily:

  • Stage & commit -- Stage individual files, hunks, or even selected lines from the diff, then commit from the message box (Ctrl/Cmd+Enter). Smart Commit stages everything when nothing is staged.
  • Branches & merges -- Create, switch, and publish branches from the status bar. Merge conflicts open in a dedicated 3-way merge editor with "Accept Incoming/Current/Both" actions.
  • Inline diff & blame -- The gutter marks changes against HEAD; hover to see and revert a hunk. GitLens adds per-line blame and full file history on top.
  • Timeline view -- The Timeline shows a file's Git history plus local edit checkpoints, so you can diff or restore any earlier version quickly.
  • Stashes & sync -- Stash work in progress, and use the status-bar sync button (pull then push) to keep your branch current in one click.
  • Pull requests -- The GitHub Pull Requests extension lets you create, review, comment on, and merge PRs entirely inside the editor.

Configure Git behavior in settings.json. Useful keys include git.autofetch to keep remotes fresh, git.confirmSync to avoid surprise pushes, diffEditor.ignoreTrimWhitespace for cleaner diffs, and git.mergeEditor to enable the 3-way merge UI. Pair with a committed .gitignore and .gitattributes so the whole team shares the same ignore rules and line-ending normalization.

// settings.json — Git and source control tuning
{
  "git.autofetch": true,
  "git.confirmSync": false,
  "git.enableSmartCommit": true,
  "git.mergeEditor": true,
  "git.branchProtection": ["main", "release/*"],
  "diffEditor.ignoreTrimWhitespace": false,
  "scm.defaultViewMode": "tree",
  "gitlens.currentLine.enabled": true
}
GIT

Stage Hunks & Lines

Open a changed file's diff, then stage or revert individual hunks or a selected range. Craft clean, atomic commits without git add -p gymnastics in the terminal.

GIT

3-Way Merge Editor

Conflicts open in a merge editor showing Incoming, Current, and Result. Accept either side, both, or hand-edit the result -- with a live preview of the merged file before you commit.

GIT

GitLens

Inline blame ("You, 3 days ago"), file and line history, a commit graph, and rich hovers. The most-installed Git extension turns the SCM view into a full history explorer.

GIT

GitHub Pull Requests

Create and review PRs in-editor: check out a PR branch, read the diff, leave line comments, request changes, and merge -- without switching to the browser.

TIP

.gitignore & .gitattributes

Commit both so the team shares ignore rules and line-ending normalization (* text=auto). VS Code also offers "Add to .gitignore" from the SCM context menu.

GIT

Timeline & Local History

The Timeline view combines Git commits with automatic local edit checkpoints, so you can diff or restore a file to a state from minutes ago even before you committed.

Practical example: after a rebase drops you into conflicts, VS Code lists conflicted files in Source Control. Open one, resolve it in the 3-way merge editor with "Accept Both" where safe, stage the file, and continue the rebase from the SCM menu -- all without leaving the editor or memorizing git checkout --theirs.

AI Coding in VS Code

In 2026 you do not need a fork to get first-class AI coding in VS Code. GitHub Copilot is the default option: inline completions, Copilot Chat, an agent mode that edits multiple files and runs tools, "edit" (multi-file) mode, and a model picker that lets you choose between OpenAI, Anthropic Claude, and Google Gemini models. There is a genuinely usable free tier, and the Copilot Chat extension was open-sourced in 2025, folding much of its UI into VS Code core.

If you prefer open source or bring-your-own-key, two extensions stand out. Continue is a configurable assistant (autocomplete, chat, and agent) that connects to any provider or a local model via Ollama, configured in ~/.continue/config.yaml and per-project .continue rules. Cline (formerly Claude Dev) and its fork Roo Code are autonomous agents with plan/act modes, terminal and browser tools, and MCP support -- you pay only for the API calls. Separately, Anthropic's Claude Code ships a VS Code extension that runs the terminal agent in a side panel and streams its edits as native diffs.

COPILOT

GitHub Copilot

The first-party option: inline completions, Copilot Chat, edit and agent modes, MCP tools, and a model picker across GPT, Claude, and Gemini. Free tier available; open-source Chat extension.

OPEN SOURCE

Continue

Open-source, provider-agnostic assistant for autocomplete, chat, and agents. Point it at hosted APIs or a local model via Ollama; configure models and rules in config.yaml.

AGENT

Cline / Roo Code

Open-source autonomous agents (Cline, formerly Claude Dev, plus the Roo Code fork). Plan/act modes, file edits, terminal and browser tools, MCP servers. Bring your own API key; pay per use.

ANTHROPIC

Claude Code Extension

Anthropic's Claude Code agent in a VS Code side panel: shares your open files and selection as context and renders its changes as native editor diffs you approve.

TIP

Bring Your Own Key / Local

Continue, Cline, and Roo Code let you use your own Anthropic, OpenAI, or Azure keys, or a fully local model via Ollama/LM Studio -- keeping code on your own infrastructure.

Practical example: keep Copilot for fast inline completions and everyday chat, add Cline (or the Claude Code extension) for long autonomous refactors where you want a plan-then-act loop, and drop in Continue with a local Ollama model for offline or privacy-sensitive work. Because they are just extensions, you can run several and switch per task -- no separate editor required.

MCP & Agent Mode

VS Code's agent mode (via Copilot) speaks the Model Context Protocol (MCP), so you can plug external tools and data sources straight into the AI. MCP servers expose capabilities -- database queries, GitHub operations, filesystem access, web fetch, custom business logic -- as tools the agent can call while it works. The same MCP servers are consumed by Cline, Roo Code, and the Claude Code extension, so a server you set up once is reusable across assistants.

Configure servers in a workspace .vscode/mcp.json (committed for the team) or in your user configuration. VS Code uses a top-level servers object and supports stdio (local command), plus http and sse remote transports. Use the inputs block to prompt for secrets at runtime instead of hardcoding tokens. Once added, the tools appear in the agent's tool picker and you approve each tool call the first time it runs.

// .vscode/mcp.json -- MCP server configuration for VS Code
{
  "inputs": [
    { "id": "gh_pat", "type": "promptString", "description": "GitHub PAT", "password": true }
  ],
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "${workspaceFolder}"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:gh_pat}" }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost:5432/mydb"]
    }
  }
}
MCP

Database Access

Connect PostgreSQL, MySQL, or SQLite via MCP. The agent reads your schema, understands the data model, and generates migrations, queries, and types informed by your actual database.

MCP

GitHub / GitLab Tools

Create issues, read PRs, and search repos through MCP. The agent can open a PR with a description, assign reviewers, and link issues -- all from a natural-language prompt in agent mode.

MCP

Custom MCP Servers

Expose internal APIs, business logic, or proprietary tools by writing your own MCP server. The agent invokes them like any built-in tool, extending VS Code with domain-specific capabilities.

CONFIG

Committed & Secure Config

Put .vscode/mcp.json in the repo so everyone gets the same tools, and use the inputs block with password: true to prompt for tokens at runtime instead of committing secrets.

Practical example: add the PostgreSQL MCP server, then in agent mode ask "analyze the users table and create a migration to add email-verification columns with proper indexes." The agent queries the live schema through MCP, writes the migration file, and generates matching TypeScript types -- approving each tool call as it goes.

VS Code vs Cursor and Other Editors

VS CODE

VS Code (stock)

Free, open-source, official marketplace with Microsoft-only extensions (Pylance, Remote-SSH, Dev Containers). Native Copilot agent mode and MCP. Add Continue/Cline/Claude Code as needed. The safe default.

CURSOR

Cursor

A VS Code fork with a superb Tab model, Composer, and Agent mode baked in. Uses Open VSX, so it cannot ship MS-licensed extensions. Best if you want the tightest, most polished AI editing UX. $0-200/mo.

COPILOT

Copilot in VS Code

The first-party AI layer: inline completions, Chat, edit and agent modes, model picker (GPT/Claude/Gemini), MCP tools. Free tier plus paid plans. Keeps you in stock VS Code with no fork.

CLAUDE CODE

Claude Code

Terminal-first agent with a VS Code side-panel extension. CLAUDE.md config, skills, subagents, MCP, worktrees. Pairs with any editor for deep autonomous work. Pro $20 / Max $100-200/mo.

FORKS

Windsurf & other forks

Windsurf (Cascade agent) and similar VS Code forks trade the official marketplace for a bundled AI experience. Strong free tiers, but the same Open VSX extension limits apply as with Cursor.

The honest 2026 take: the gap that made forks compelling has narrowed. Stock VS Code with Copilot agent mode covers most workflows, keeps the official marketplace and Microsoft-only extensions (Remote-SSH, Pylance, Dev Containers), stays free, and lets you mix in Claude Code, Continue, or Cline. Choose Cursor if its Tab prediction and Composer UX are worth giving up the official marketplace; choose Claude Code for terminal-first autonomous work. Many developers run VS Code as their editor and Claude Code alongside it for heavy automation -- the best of both.

Editions, Licensing & Cost

Editor -- $0

The VS Code editor itself is completely free for personal and commercial use -- no seats, no subscription. The core is open source (MIT "Code - OSS"); the Microsoft-branded build adds the marketplace, telemetry, and MS-only extensions.

Copilot -- $0-39/mo

GitHub Copilot is the paid add-on: a free tier with monthly limits, Pro (~$10/mo), Pro+ (~$39/mo) for more premium-model requests, plus Business and Enterprise seats. Everything else in the editor stays free.

BYO Key -- pay-per-use

With Continue, Cline, or Roo Code you pay only your provider's API rates -- or nothing at all running a local model via Ollama/LM Studio. Claude Code bills through your Anthropic Pro/Max subscription or API.

There is no license fee for VS Code, so budgeting is really about AI usage. The three levers are: a subscription (Copilot, or Claude Code via Anthropic Pro/Max) with predictable monthly cost; bring-your-own API keys, where you pay per token and control the spend; or fully local inference for zero marginal cost and maximum privacy. Most teams mix a Copilot subscription for everyday completions with BYO-key agents for heavy tasks.

TIP

Cost Optimization

Use inline completions and a cheap/fast model for routine edits, and reserve premium models (Opus, GPT, Gemini Pro) for hard reasoning. Watch premium-request counts on Copilot and set spend limits on BYO keys.

TIP

Go Local for Privacy

Run a local model via Ollama or LM Studio through Continue for offline, zero-cost, fully private assistance. Keep a cloud model configured as a fallback for the tasks a local model can't handle.

Team & Workspace Configuration

The .vscode/ folder is how a team ships a consistent environment in the repo itself. Commit settings.json, extensions.json, launch.json, tasks.json, and mcp.json and every clone comes preconfigured -- same formatter, same recommended extensions, same debug and build commands, same AI tools. New hires are productive on the first git clone, not the third day.

Layer that with a committed .devcontainer/devcontainer.json and an .editorconfig, and you standardize not just the editor but the entire runtime. For AI, agent instruction files (a repo AGENTS.md or Copilot instructions) give every assistant the same coding standards, and a workspace mcp.json gives every developer the same tools. This is portable across editors: the same files that configure VS Code also drive Codespaces and, for the shared parts, other VS Code-based tools.

TEAM

Committed Workspace Settings

Put .vscode/settings.json in the repo so formatter, tab size, and lint-on-save are identical for everyone -- overriding personal user settings only for this project.

TEAM

Recommended Extensions

.vscode/extensions.json with a recommendations list prompts teammates to install exactly the extensions the project needs -- ESLint, Prettier, the right language pack -- on open.

TEAM

Shared Debug & Tasks

Committed launch.json and tasks.json mean everyone debugs and builds with the same one-key commands. No "works on my machine" scripts living only in someone's shell history.

TEAM

Dev Containers

A committed devcontainer.json standardizes OS, runtime, and tools, not just the editor. The identical config also boots a GitHub Codespace in the browser for zero local setup.

TEAM

EditorConfig

.editorconfig enforces indentation, charset, and final-newline rules across every editor, so formatting stays consistent even for teammates who do not use VS Code.

WORKFLOW

Shared AI Instructions

Commit an AGENTS.md or Copilot instructions file so every assistant follows the same coding standards, architecture rules, and forbidden practices across the whole team.

WORKFLOW

Live Share

The Live Share extension enables real-time collaborative editing and debugging with shared terminals and servers -- pair programming or incident response without screen-share lag.

WORKFLOW

Shared MCP Servers

Put .vscode/mcp.json in the repo so everyone's agent gets the same tools -- database, GitHub, internal APIs -- with secrets prompted at runtime, not committed.

Practical example: a 15-person team commits .vscode/ (settings, extensions, launch, tasks, mcp), a .devcontainer/devcontainer.json, an .editorconfig, and an AGENTS.md. A new engineer clones the repo, reopens in the container, accepts the recommended extensions, presses F5 to debug, and their AI assistant already has the right MCP tools and coding rules -- all before writing a single line.

Related Technologies