Visual Studio Code 1.140

Downloads for 1.140.0

Windows
x64Arm64

Already installed? Use Check for Updates in VS Code. For upcoming features, use the Insiders build.

Release highlights

This release expands agent workflows, improves worktree reuse, and adds enterprise AI controls.

Agents

Copilot harness

The Copilot harness adds exciting new agent functionality to VS Code while keeping the way you work familiar. It's powered by the Copilot SDK, so its behavior and capabilities are consistent with other Copilot products, including the standalone GitHub Copilot app and the Copilot CLI.

To start using the Copilot harness, select it from the harness picker in the chat input. In this release, it might already be the default selection for you. You can continue working as you normally do.

Screenshot showing the Copilot harness selected in the harness picker.

The harness runs in a dedicated agent host process based on the Agent Host Protocol (AHP), so you can connect to the same agent session from multiple VS Code windows.

Learn how to work with the Copilot harness, or explore the architecture and workflows in the agent host blog post. If you have feedback or requests, please file an issue.

HydraFusion model orchestration (Research Preview)

HydraFusion is an adaptive model orchestration system that chooses the models and workflow for each coding task. It can solve a task with one model, escalate to a stronger model, or have another model critique and revise the result. This approach aims to improve result quality while balancing speed and cost, without requiring you to coordinate models yourself.

Eligible users with preview features enabled can select HydraFusion in the model picker.

Multi-folder sessions (Experimental)

Multi-folder sessions let you coordinate related work across repositories or isolated worktrees in one session. Previously, every chat in a multi-chat session shared the same folder and checkout. In this release, each chat can use its own folder or worktree without changes leaking between chats.

Each chat uses its folder for its terminal, tasks, changes, pull request, and Agent merge state. Chats that use the same folder share that state. In the sessions list, hover over a session to see a summary across all its folders, or hover over a nested chat to see details for only its folder.

Screenshot showing the hover of a session with the main chat's workspace, worktree, branch, and pull request, and a Session summary that lists two repositories and their pull requests.

Example use cases include:

  • Implement a feature across repositories: Ask the main chat to work in one repository and create a peer chat for a second repository.

  • Compare approaches in separate worktrees: Ask the main chat to create peer chats that each use a fresh worktree of the same repository. Each approach gets its own branch, changes, and pull request.

Multi-folder sessions are experimental and disabled by default. The settings are not shown in the Settings editor. In your user-scoped settings.json file, set the setting for your harness to true, and then create a session:

  • Copilot: chat.agentHost.copilotAgent.multiRootEnabled Open in VS Code Open in VS Code Insiders
  • Claude: chat.agentHost.claudeAgent.multiRootEnabled Open in VS Code Open in VS Code Insiders
  • Codex: chat.agentHost.codexAgent.multiRootEnabled Open in VS Code Open in VS Code Insiders

New sessions pick up setting changes without restarting the Agent Host. There is no UI for adding a folder or choosing the folder of a peer chat, so ask the main chat to create the peer chat and describe the repository or worktree it should use.

Archive chats in a session

Keep the rest of a session active when one chat finishes its work. Because sessions can contain multiple chats, select Mark as Done to archive only the finished peer chat, not the entire session. To restore it with its title and transcript intact, select the Done filter in the sessions list.

Automatic Dev Container cleanup

Settings: chat.agentHost.devContainer.enabled Open in VS Code Open in VS Code Insiders , chat.agentHost.devContainer.idleTimeout Open in VS Code Open in VS Code Insiders (Agents window only)

When all sessions that use a Dev Container are inactive for five minutes, VS Code stops the container. It restarts automatically when you continue working. Marking as done or deleting the last session removes the container.

Faster Dev Container startup

Setting: chat.agentHost.devContainer.enabled Open in VS Code Open in VS Code Insiders (Agents window only)

Dev Container sessions let agents use your project's tools and dependencies in an isolated environment. Fresh containers can reuse cached VS Code Server and CLI downloads, which reduces setup time and repeated downloads across projects.

Choose the session relationship and workspace for delegated work

Make two separate decisions when you ask an agent to delegate work. First, decide whether the task belongs to the current session's plan or deliverable. Then specify a workspace only if the task needs repository files, and request a worktree only if file changes need isolation. Related work can still use a different workspace.

  • Create a peer chat for related work: Ask the agent to create a peer chat in the current session. To reuse the current workspace and checkout, say so in your prompt. Because the peer chat shares the checkout, use this option for research, planning, or related work that doesn't need isolated file changes.

    Create a peer chat in this session that reuses the current workspace and checkout to review the authentication flow. Do not modify files.
    
  • Create an independent session for unrelated work: Ask the agent to create an independent session with no workspace when a separate deliverable doesn't need repository files. The new session doesn't inherit the source folder. If the work does need a repository, name the project or folder and explicitly request a worktree when its changes need isolation.

    Create an independent session with no workspace to research licensing options for a separate project.
    

Learn more about orchestrating chats and sessions.

Create workspace-less chats on remote agent hosts

Setting: sessions.chat.unifiedWorkspacePicker.enabled Open in VS Code Open in VS Code Insiders (Agents window only)

Agent Host lets you run and track agent sessions on a remote host. This release adds support for running workspace-less chats on a remote host.

Select a connected host from the unified workspace picker without choosing a workspace. The Chat entry identifies the selected host, so you can confirm where the session runs before you start.

Screenshot showing a workspace-less chat on a remote agent host, with the selected host identified in the Chat entry.

Remote folders also appear alongside local folders in the main picker. This makes frequently used remote workspaces easier to select without opening the Remote submenu.

Delegate tasks to remote agent hosts (Experimental)

Settings: chat.remoteAgentHostsEnabled Open in VS Code Open in VS Code Insiders , chat.remoteSessions.tools.enabled Open in VS Code Open in VS Code Insiders (Agents window only)

Your agent can delegate work to connected remote agent hosts from the Agents window, without you selecting a host in a picker for each task.

The new built-in tools let your agent:

  • Discover hosts, models, resource capacities, and session load with list_agent_hosts.
  • Start a session with create_remote_session. Specify a host, or let automatic placement match an operating system (Windows, Linux, or macOS), minimum memory capacity, logical CPU count, and optional model. Among matching hosts, placement favors the host with the fewest running sessions and pending creations.
  • Check a remote session's status and latest response with get_remote_session.
  • Send follow-up work or report results and questions back to the originating chat with send_remote_message.

The tools are off by default. Enable this setting along with chat.remoteAgentHostsEnabled Open in VS Code Open in VS Code Insiders and connect the hosts you want to use. From a chat running on an agent host, ask:

Start a remote session on a connected Linux host with at least 16 GiB of memory and eight logical CPUs. Check the installed Node.js and Python versions and report back to this chat.

Sessions have no workspace unless you specify one. For repository work, use an existing trusted folder on the target host, either directly or in a new Git worktree. The tools do not clone or copy the originating workspace, and normal approvals still apply.

Keep the coordinating Agents window open and connected for messages to flow. Remote agents report back through send_remote_message; their final answers are not automatically forwarded.

Personalize new-session welcome phrases (Experimental)

Settings: sessions.chat.experimental.welcomePhrases Open in VS Code Open in VS Code Insiders , sessions.chat.experimental.welcomeName Open in VS Code Open in VS Code Insiders , accessibility.verbosity.newSessionWelcome Open in VS Code Open in VS Code Insiders (Agents window only)

Add some personality to the Agents window with an optional welcome heading when you create a new session in the Agents window. The heading shows one of five phrases, such as What are we building? or Let's ship something, and can append your first name from your GitHub profile.

Screenshot showing the Agents window new-session composer with the personalized welcome phrase Let's cook, Megan.

Welcome phrases are off by default. When enabled, you can use Set Welcome Name from the heading, its context menu, or the Command Palette to choose a different name. The name syncs across devices. Clear it to use your GitHub first name when available, or a generic phrase when your profile has no name.

When screen reader optimized mode is active, VS Code announces the heading once when the composer appears. Disable accessibility.verbosity.newSessionWelcome Open in VS Code Open in VS Code Insiders if you prefer not to hear the announcement.

Improved session composer controls (Experimental)

Settings: sessions.chat.experimental.newSessionComposerLayout Open in VS Code Open in VS Code Insiders , sessions.chat.unifiedWorkspacePicker.enabled Open in VS Code Open in VS Code Insiders (Agents window only)

The experimental session composer layout reduces the need to move between separate parts of the Agents window. In a new session, the workspace, branch, worktree, and harness controls are grouped above the chat input.

Screenshot showing the experimental session composer layout with workspace, branch, worktree, and harness controls grouped above the chat input.

Enable both settings to use the layout.

The unified workspace picker also has commands for moving directly to its controls. Use ⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F) to focus the workspace picker or ⌘K ⌘H (Windows, Linux Ctrl+K Ctrl+H) to focus the harness picker. Hovers show your configured keybindings, and each picker's context menu provides a Configure Keybinding action. These keyboard improvements require only the unified workspace picker, not the experimental composer layout.

Starting with this milestone, when you create a new worktree session, the branch picker defaults to the upstream branch of your current branch, such as origin/main. Before creating the worktree, VS Code automatically attempts to fetch the selected remote branch so the session starts from the latest available remote state.

The picker also loads branches once per workspace and filters them locally, which significantly reduces search latency, especially in large repositories.

Screenshot showing the new-session page with New Worktree selected and origin/main as the default branch.

See recently completed sessions first

The Done section in the Agents window now sorts sessions by when you marked them as done, with the most recently completed session listed first. This order stays the same when you switch between Created and Updated sorting and after you reload VS Code.

More reliable agent orchestration (Experimental)

Setting: chat.agentHost.agentOrchestrationLimits Open in VS Code Open in VS Code Insiders

Coordination-heavy agent workflows are less likely to stop before the work is complete. This release raises the process-wide limits for agent-created sessions, chats, inter-session messages, and recursive session creation.

For example, an agent can classify CI failures, delegate each fix to a separate session, and coordinate those sessions without exhausting the message limit before the work is complete. Reaching a limit blocks new orchestration actions but does not interrupt work that is already running.

The setting defaults to on, and changes apply without restarting the Agent Host. Set it to off to remove the orchestration limits. Confirmation requirements and input validation continue to apply.

Open a new session in the Agents window from a URL

Open the Agents window from another tool or webpage with a workspace and an editable prompt ready for review. Use a URL with the agents/new path and the optional prompt and workspace query parameters.

For example, this URL opens a new session with no workspace and the prompt already entered:

vscode://agents/new?prompt=Explain%20how%20this%20project%20runs%20its%20tests.%20Do%20not%20run%20anything%20yet.

VS Code places the decoded prompt in the New Session composer without sending it. To select a workspace, add the workspace parameter with a URL-encoded folder URI. If the URL omits workspace, the draft uses No Workspace. An existing occupied composer remains unchanged, so opening a link does not overwrite work in progress.

Learn more about opening VS Code with URLs.

Note: Use vscode-insiders:// instead of vscode:// for VS Code Insiders.

Chat

Persistent progress for agent responses (Experimental)

Settings: chat.experimental.persistentProgress Open in VS Code Open in VS Code Insiders , chat.experimental.persistentProgressVerbosity Open in VS Code Open in VS Code Insiders

Long-running agent responses are easier to follow with persistent progress. When enabled, chat keeps a progress indicator visible at the bottom until the response finishes.

Enabling persistent progress also improves the rendering and visibility of in-progress responses. Reasoning appears in separate collapsible previews, and tool calls remain visible while they run. With Compact verbosity, completed tool groups collapse into expandable summaries when response text resumes or the response finishes. Select Verbose to keep the full tool-call details visible.

Use chat.experimental.persistentProgress Open in VS Code Open in VS Code Insiders to turn the indicator off or choose a colored or monochrome Draw animation. The setting defaults to Draw in VS Code Insiders and is rolling out gradually to Stable.

Terminal output reflow

Setting: chat.tools.terminal.outputReflow Open in VS Code Open in VS Code Insiders

Since VS Code 1.132, terminal output in chat reflows to fit the width of the output preview.

The new chat.tools.terminal.outputReflow Open in VS Code Open in VS Code Insiders setting lets you control this behavior. If you prefer output to keep a fixed width instead, disable the setting and scroll horizontally to read long lines. Reflow remains enabled by default.

Use multiple chats in the editor window

A session can contain multiple chats. Until now, the main chat with its nested peer chats appeared only in the Agents window. The editor window also shows them: the Sessions view lists the main chat with its peer chats nested underneath, next to the Chat view. Select any row to open that chat in the Chat view.

Screenshot of the editor window with the Sessions view listing a session and its nested peer chats next to the Chat view showing the selected chat.

MCP

Add MCP servers to portable configuration files

You can add MCP servers to portable configuration files from the MCP: Add Server flow, so you can use the same server configuration across compatible Copilot tools without editing JSON manually.

For global servers, choose Copilot Global to save the server to $COPILOT_HOME/mcp-config.json, or ~/.copilot/mcp-config.json when COPILOT_HOME is not set.

Screenshot showing Copilot Global and the deprecated user configuration as global MCP server destinations.

For workspace servers, choose .mcp.json to save the server at the workspace root.

Screenshot showing workspace-root .mcp.json and the deprecated .vscode/mcp.json as workspace MCP server destinations.

Accessibility

Hear when confetti appears

Setting: accessibility.signals.confetti Open in VS Code Open in VS Code Insiders

The new Confetti accessibility signal provides the same celebratory feedback when you cannot see the animation. The joyful sound plays when chat thumbs-up confetti appears and when you successfully mark a session as done in the Agents window.

Source Control

Reuse ignored folders across worktrees (Experimental)

Setting: git.worktreeSymlinkFolders Open in VS Code Open in VS Code Insiders

Avoid reinstalling dependencies or duplicating large build artifacts in each Git worktree. Configure git.worktreeSymlinkFolders Open in VS Code Open in VS Code Insiders with .gitignore-style patterns for ignored folders, such as node_modules. When VS Code creates a new worktree, including for an agent session, it creates symlinks to matching folders in the current checkout.

Code Editing

New option to control selection text matching case sensitivity

Setting: editor.selectedTextMatchMode Open in VS Code Open in VS Code Insiders

We have added a new setting editor.selectedTextMatchMode Open in VS Code Open in VS Code Insiders to control the case sensitivity of selection matching.

The default value, findOptions, means selection matching sensitivity is tied to the Find widget, as was previously the case. There are two other values caseSensitive and caseInsensitive, which match case-sensitive and case-insensitive selections respectively.

Terminal

Sharper terminal text on macOS (Experimental)

Setting: terminal.integrated.fontRendering Open in VS Code Open in VS Code Insiders

On macOS high-DPI displays, terminal text can look softer than the same font in other terminals. Set terminal.integrated.fontRendering Open in VS Code Open in VS Code Insiders to grayscale to make terminal text look sharper.

Enterprise

Explain minimum version requirements

Administrators can require developers to update VS Code before using AI features, for example, to adopt newer sandboxing protections. Instead of an Update Required dialog, VS Code now explains the requirement wherever AI features are unavailable:

  • Chat: shows the required and installed versions, with an update action.
  • Editor window: shows a banner even when Chat is closed. Other editor features stay available.
  • Agents window: shows a blocking overlay, with an Open Editor Window action.

When an update is available, VS Code offers the matching Check for Updates, Download Update, Install Update, or Restart to Update action. If your organization disables built-in updates by policy, VS Code instead asks you to contact your administrator. The notices clear once the requirement is met. How VS Code enforces the requirement is unchanged.

Screenshot of the editor window with a banner and a Chat notice that explain that the organization requires a newer version to use AI features.

Set a default Auto tier

The Auto model in VS Code can operate in different tiers, optimizing for efficiency, balance, or intelligence. Administrators can align the Auto model's default behavior with organizational priorities without preventing developers from choosing another tier.

Administrators can set the default tier for the Auto model with the autoTier managed setting. Accepted values are efficiency, balance, and intelligence.

The tier applies to new chats in the Local harness and the Copilot agent host on the same machine. The managed tier appears as Default in the model picker.

The managed tier is a starting point, not a restriction. Developers can still choose a different tier. VS Code keeps explicit and restored choices when the managed tier changes or is removed.

Screenshot of the Auto model "Optimize for" menu with Intelligence selected and marked as Default.

Capture user identity in OpenTelemetry

Setting: github.copilot.chat.otel.captureIdentity Open in VS Code Open in VS Code Insiders

Organizations can attribute Copilot OpenTelemetry data to individual developers. When identity capture is enabled, Local chat sessions add the following attributes:

  • user.name on agent invocation spans, including subagents and inline chat.
  • process.user.name and host.name as resource attributes.

Identity capture is off by default and independent of content capture. Administrators control identity capture with the telemetry.capture.identity managed setting (CopilotOtelCaptureIdentity policy). A managed value takes precedence over COPILOT_OTEL_CAPTURE_IDENTITY and user settings. When a policy denies capture, VS Code removes identity from later exports without a reload, including identity attributes that are set explicitly as resource attributes.

This release also changes how managed telemetry settings are resolved:

  • VS Code applies the telemetry block from only the highest-priority delivery channel: native MDM, then server, then file. Fields that the selected block omits are no longer filled in from lower-priority channels.
  • Managed telemetry.resourceAttributes now take precedence over OTEL_RESOURCE_ATTRIBUTES.

Note: Identity capture currently applies only to the Local harness. Support for the agent host is tracked in #337413.

Social media

VS Code is now on Instagram! Follow @vscode.ig for VS Code updates, new features, tips, and more.

Proposed APIs

Authorization server on authentication sessions

The authIssuers proposal lets an extension name the OAuth authorization server it wants to authenticate against, which VS Code introduced for MCP in the 1.101 release notes. This release adds the opposite direction, so a session can tell you which authorization server issued it.

export interface AuthenticationSession {
  /**
   * The authorization server that issued this session, when provided by the authentication provider.
   * This identifies the OAuth server, not a REST API endpoint or resource audience.
   */
  readonly authorizationServer?: Uri;
}

If your extension talks to more than one deployment of a service, such as public GitHub and a GitHub Enterprise host, you can pair each credential with the destination it was issued for instead of reading a separate setting that the user can change independently. This prevents a valid token from being sent to the wrong host.

Keep in mind two things. The value identifies an OAuth issuer rather than an API endpoint, so map it to your own endpoints. The built-in GitHub provider populates it for public GitHub sessions as well as enterprise ones, so its presence alone does not make a session an enterprise session.

Try it out and let us know what you think in the API proposal issue. To learn how to build against a proposal, see using proposed APIs.

Deprecated features and settings

None

Thank you

Contributions to vscode:

  • @na2co3-ftw (na2co3): Modern UI: Fix redundant tab action fading in connected editor tabs PR #336871
  • @SimonSiefke (Simon Siefke)
    • fix: memory leak in terminal replay PR #338252
    • fix: memory leak in semantic tokens PR #336024
    • fix: memory leak in search editor PR #331014
    • terminal: cancel unnecessary telemetry timeout on disposal PR #333963
    • fix: memory leak in animation frame window disposal PR #338263
    • fix: memory leak in chat participant disposal PR #338230
    • fix: memory leak in custom document disposal PR #338250
    • fix: memory leak in mapped edit provider disposal PR #338245
    • fix: memory leak in extension host telemetry PR #334096
    • fix: memory leak in auxiliary window font measurements PR #338255
    • fix: memory leak in SCM artifact commands PR #338251
    • fix: memory leak in pixel ratio window disposal PR #338257
    • fix: memory leak in integrated browser element handles PR #338247
    • fix: memory leak in terminal horizontal scrollbars PR #338241
    • fix: memory leak in extension host tree view disposal PR #338235
    • fix: memory leak in composite drag and drop registrations PR #338215
    • fix: memory leak in integrated browser inspector sessions PR #338228
    • fix: memory leak in chatInputPart PR #327157
    • fix: memory leak in terminal shell execution streams PR #338243
    • fix: memory leak in notebook cell status bar commands PR #336028
    • fix: memory leak in issueReporterModel PR #335098
    • fix: memory leak in image carousel editor PR #333981
    • fix: memory leak in notebook serializer disposal PR #338212
    • fix: memory leak in MainThreadShare PR #334110
    • fix: memory leak in multi diff editor tabs PR #333186
    • fix: memory leak in test observer disposal PR #338213
    • fix: memory leak in modalEditorPart PR #326885
    • fix: memory leak in comment thread disposal PR #338216
    • fix: memory leak in line data event addon PR #332139

Issue tracking

Contributions to our issue tracking:


We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new.

If you'd like to read release notes for previous VS Code versions, go to Updates on code.visualstudio.com.