Visual Studio Code 1.145
Downloads for 1.145.0
Release highlights
This week, your remote agent sessions feel a bit more local. Preview apps and use canvases right in VS Code, fine-tune automation schedules with cron, and turn down the noise in chat. And when you need a break, Blobby is ready to play.
-
Remote agents: Preview apps and use interactive canvases from remote agent sessions without leaving the Agents window.
-
Automations: Run recurring agent tasks on custom schedules beyond the built-in presets with cron.
-
Agent verbosity: Keep chats concise or see the full details of the agent's reasoning and tool calls, your choice.
-
File exclusions: Exclude folders while keeping the files you need visible and searchable.
-
Fun: Take a short break with a platform-jumping game starring Blobby, the VS Code pet.
Already installed? Use Check for Updates in VS Code. For upcoming features, use the Insiders build.
Remote agents
Browse over remote agent host connections (Preview)
Setting: workbench.browser.enableRemoteProxy
When an agent session runs on a remote agent host, the integrated browser in the Agents window now loads pages through that host, as it already does in remote workspaces. When the agent starts a dev server on the remote machine, you can open it right in the Agents window to preview the app, validate the agent's changes, and give it feedback, as you would in a local session.

Enable workbench.browser.enableRemoteProxy to try it out, and file any issues you encounter in the VS Code repository.
Remote canvases (Preview)
Settings: workbench.browser.enableRemoteProxy , chat.canvases.enabled
Thanks to the remote agent host connections support, you can now also use canvases that are hosted on a remote agent host.
Enable chat.canvases.enabled and workbench.browser.enableRemoteProxy to try it out, and file any issues you encounter in the VS Code repository.
Agents
Mix and match agent harnesses in one session (Preview)
Setting: chat.agentHost.multipleChatProviders.enabled
Nested sessions let you keep related conversations together within a single main chat session. Previously, every nested session inherited its parent session's harness. If you wanted a second opinion from another agent, you had to start a separate session and lose that grouping.
In this release, nested sessions can use different harnesses than their parent session. For example, ask Claude to review the plan that a Copilot chat wrote, or give Codex the same task, side by side in the same session. When you create a new nested session, use the harness picker to switch to a different harness.
Each chat has its own model, agent, and permission levels, based on its harness. Changing them in one chat doesn't affect the others. When you move a chat, it keeps its history and continues with its selected harness. When you fork a nested session, it continues with the same configuration.
A chat that uses a different harness than its session names its harness when you hover over its chat tab or its row in the sessions list.
Enable chat.agentHost.multipleChatProviders.enabled to get started. Let us know what you think by filing an issue.
Cron schedules and custom agents for local automations
Instead of manually running agent tasks one by one, you can use automations to schedule and run them automatically, either on demand or on a set schedule.
This release gives you more flexibility for local automations and keeps the Automations view focused on active work:
-
Use cron schedules: Select Cron to enter a five-field cron expression when the other schedule presets aren't precise enough. The dialog validates the expression and describes the resulting schedule. Cron schedules are not available for cloud automations.
-
Use workspace custom agents: Choose a custom agent from the selected workspace when you create or edit a local automation.
-
Focus on active automations: Disabled automations appear in a collapsed Disabled automations section, so they don't obscure run history and active automations.

Learn more about creating and managing agent automations.
Pin canvases to sidebar (Experimental)
Setting: chat.canvases.enabled
To make it easier to access frequently used canvases, you can now pin a canvas to appear in the left sidebar. To pin a canvas, open it and select the Add to Sidebar button above the canvas. Pinned canvases remain accessible in the sidebar even when you navigate away from them.
Copilot harness
The Copilot harness continues to be the default for new sessions in VS Code. It's our latest harness, built on the Copilot SDK, a shared foundation that helps align behavior, capabilities, and improvements across Copilot products.
When you start a new session, Copilot in the harness picker indicates that the session uses the Copilot harness. In VS Code, you can keep Copilot harness sessions running in the background and access them from both the VS Code editor window and the Agents window. These sessions run through the Agent Host.
To help you adopt the Copilot harness with your existing workflows, we've added a Local-to-Copilot harness transition guide. It covers customization compatibility, session continuity, and organization rollout and verification.
Thank you for the feedback that continues to shape these improvements. Please continue filing issues about your experience, especially if a workflow or integration prevents your organization from moving off the Local harness.
Learn how to work with the Copilot harness, or explore the architecture and workflows in the agent host blog post.
Working set improvements (Experimental)
Setting: chat.editor.workingSet.enabled
Last release, we introduced the working set for Copilot harness sessions, letting you review pending agent edits. You can keep or undo changes, as you could do with the Local harness.

We are further improving the working set experience in Copilot harness sessions:
- Files in WSL, Dev Containers, and SSH workspaces open from the working set on the correct host.
- When several tool calls edit the same file in parallel, the working set tracks those edits and the editor's inline review controls remain available after editing finishes.
The working set functionality remains enabled by default in the editor window. Learn more about reviewing agent edits with the working set, including which edits it tracks.
Improved guidance when required sandboxing is unavailable
Agent sandboxing limits what terminal commands can access, like the file system and network resources. Your organization can require it with managed settings that disallow bypassing the sandbox.
If your organization requires sandboxing but your machine can't run it, the warning banner explains why terminal commands are blocked and how to resolve the problem. It shows the specific cause, such as a missing dependency, and links to troubleshooting steps.
If your account and organization support cloud sessions (Experimental), consider running agent tools in the cloud instead of on your machine.
Chat
Choose agent verbosity (Experimental)
Setting: chat.persistentProgressVerbosity
Keep long chats readable, or follow the agent's reasoning and tool calls in detail when you need to understand its actions. Open the Chat view's More Actions menu and select View Mode:
- Conversation: Focus on the conversation. Reasoning and tool calls are grouped into collapsed sections between blocks of response text. Expand a section to inspect its details.
- Verbose: Follow each step with tool calls expanded, without an internal scrolling limit on tool groups.
- Compact (default): Preview tool calls while they run, then collapse completed groups to expandable summary rows.
You can switch modes without starting a new chat. The modes change how the conversation is displayed, not its context or the work the agent performs.
With persistent progress enabled, the active progress indicator stays above the chat input while you scroll back through a response. If you prefer an animated input border instead, enable chat.progressBorder.enabled .
Chat performance improvements
Reopen and browse long Copilot harness chats more smoothly. VS Code reuses existing reasoning titles and renders terminal output as you reveal it. Terminal output in restored tool calls is rendered when you expand or reveal it, rather than all at once.
This release also reduces repeated progress updates and layout measurements when restoring and navigating long conversations.
Inline chat attachments (Experimental)
Setting: chat.inlineAttachments.enabled
Keep file references and other context next to the instructions they belong to. Enable this setting to insert attachment pills at the cursor in your prompt, rather than in a separate row above the input.
Move across, select, or delete an attachment pill as a single character. Previous messages keep the pills inline, so references stay with the surrounding instructions.
Inline attachments are on by default in Insiders and off by default in Stable.

Attach files from anywhere on your computer
Previously, to give chat a file outside your workspace, such as a screenshot or mockup on your desktop, you had to drag it in from your file manager or ask the agent to find it. Select Add Context (+) > Files to choose one or more files with the standard file dialog, even in a new chat without a workspace. In cloud sessions, the chooser lists only images.

When sandboxing is enabled in Copilot harness sessions, the agent can read the files and folders you attach, even when they're outside the workspace. Each attached path is readable for the rest of the session, but the agent can't write to it, and the access isn't saved to your settings. With Manual permissions, the agent no longer asks before reading an attached file. If your organization's managed settings define their own list of readable paths, attachments aren't added to it.
MCP
Support for tools provided by MCP apps
MCP apps are interactive interfaces provided by MCP servers. They can now register tools that the language model can call in its next request.
For example, the ShaderToy server lets the model iterate on shaders in real time.
Managed MCP allowlist precedence
For MCP servers started by VS Code, the enterprise-managed allowedMcpServers list takes precedence over registry-only access, so your organization can approve servers without publishing them to its registry. See the Enterprise section on managed MCP allowlists for configuration details and restrictions.
Editor Experience
Show specific files in excluded folders
Settings: files.exclude , search.exclude
You can filter which files and folders are shown in the Explorer, Search, and Quick Open by using the files.exclude and search.exclude settings.
To keep part of an excluded folder visible, prefix a pattern with ! in
files.exclude
. Matching files and folders show in the Explorer, Search, and Quick Open, even when another pattern or .gitignore excludes them. Exceptions in
search.exclude
apply only to Search and Quick Open.
"files.exclude": {
"node_modules": true,
"!node_modules/@types": true
}
Exceptions never hide files. Patterns such as !**/node_modules/@types match at any depth but can make searches slower.
Smart subgraph titles in Mermaid diagrams
Edges in Mermaid diagrams no longer cover subgraph titles. A title moves to the side when an edge would cross it. With the default vscode Mermaid theme, subgraphs are outlined instead of filled, so nested subgraphs stand out.

Enterprise
Organization-required plugins can't be uninstalled
When your organization requires an agent plugin, for example with the enabledPlugins managed setting, the Customizations views previously offered Uninstall for it. That action always failed and changed to Retry Uninstall, which also failed. The same happened for the prompts, skills, agents, hooks, and MCP servers that the plugin contributes.
{
"enabledPlugins": {
"my-plugin@my-marketplace": true
}
}
The Uninstall action for these plugins and their contributions is now disabled and a message is shown on hover and keyboard focus. This applies to Browse, the plugin details, the plugin editor, and the plugin and MCP server menus.

Managed MCP allowlists take precedence over registry-only access
Previously, when an organization limited MCP to servers from its registry and also defined an allowlist in managed settings, VS Code still required each server to be in the registry. Servers that the allowlist approved but that weren't published to the registry couldn't run.
The enterprise-managed allowedMcpServers list is now authoritative. A server that matches the list can run even if it isn't in the registry, and a registry server that doesn't match is blocked. For example, the following enterprise-managed settings allow one remote server and one local server:
{
"allowedMcpServers": [
{ "serverUrl": "https://mcp.example.com/mcp" },
{ "serverCommand": ["node", "approved-server.js"] }
]
}
- An empty list (
[]) blocks all servers. If the list is absent, the registry restriction applies as before. - User and workspace allowlists can't add servers to the enterprise list.
deniedMcpServersand turning off MCP still take precedence over the allowlist.- Prefer
serverUrlandserverCommandrules. AserverNamerule matches a label that the server's author chooses.
Note: This change applies to MCP servers that VS Code starts, not to servers managed by the Agent Host.
Contributions to extensions
GitHub Pull Requests
There has been more progress on the GitHub Pull Requests extension, which enables you to work on, create, and manage pull requests and issues. New features include:
- The pull request overview timeline shows more events, including label, milestone, and title changes, review requests and dismissals, draft and ready-for-review changes, force pushes, branch restores, auto-merge changes, and merge queue updates.
- Pull request description templates support issue variables such as
${issueTitle},${issueNumber}, and${issueNumberLabel}, filled in from the issue associated with the branch by "Start Working on Issue". - When you stack pull requests, you're prompted to disable auto-merge on any pull request in the stack that has it enabled.
Review the changelog for the 0.176.0 release of the extension to learn about everything in the release.
Extension Authoring
Timeline API finalized
Extensions published to the Marketplace can add their own history to the Timeline view, next to Git commits and Local History. Register providers with workspace.registerTimelineProvider for files and folders, or workspace.registerWorkspaceTimelineProvider for the whole workspace. Set TimelineItem.resourceUri to the resource's content as of that entry so users can compare it with other entries by using Compare Selected.
Learn more about the Timeline API in the Timeline API documentation.
Fun!
Blobby jump game (Experimental)
Take a short break with Blobby, the VS Code pet. Enter /vscode-pet in chat to show Blobby. On the new-session screen in the Agents window, choose Play Jump Game from Blobby's context menu. Hold the spacebar to charge a jump and use the arrow keys to aim for the next platform. The game remembers your high score on this device.
Deprecated features and settings
New deprecations in this release
Install Extension tool removed from the Local harness
The Install Extension (#installExtension) agent tool is no longer available in Local agent sessions. When you create a new workspace from chat, the agent no longer installs extensions. Instead, it adds the extensions the project needs to .vscode/extensions.json, so you can review and install them from the Extensions view. When you run a Python cell in a Jupyter notebook without the Jupyter extension, the kernel picker prompts you to install it.
If your custom agents or prompt files reference #installExtension, remove that reference.
Run VS Code Command tool removed from the Local harness
The Run VS Code Command (#runCommand) agent tool is no longer available in Local agent sessions. Built-in workflows that relied on it now work without it. For example, when chat diagnoses network issues, it asks you to run Developer: Chat Diagnostics and share the report.
If your custom agents or prompt files reference #runCommand, remove that reference.
Workspace creation tool and slash command removed from the Local harness
The Create New Workspace (#newWorkspace, previously #new) agent tool and the /new slash command are no longer available in Local agent sessions. The Generate New Workspace link on the Welcome page is also no longer available. The dedicated project-setup skills are removed.
To create a project, open an empty folder and describe the project you want in an agent session. The agent uses its standard tools to create files, run scaffolding commands, and configure tasks.
Remove references to #newWorkspace, #new, /new, project-setup-info-local, and project-setup-info-context7 from your custom agents and prompt files. The github.copilot.chat.newWorkspaceCreation.enabled, github.copilot.chat.newWorkspace.useContext7, and github.copilot.chat.useProjectTemplates settings are also removed. Notebook creation is unchanged.
Upcoming deprecations
None
Notable fixes
-
When an organization turned off the Claude or Codex agent, users who had picked that agent before got a read-only chat with no input from New Chat (
+), New Chat Editor, and new windows. New chats now fall back to the default harness, and an unsent prompt carries over. Your previous choice applies again if the policy is lifted. #345207 -
When an organization set MCP access to registry only in its GitHub Copilot policies, a failed policy refresh, for example from a network error or rate limiting, removed the restriction until the next successful refresh. VS Code now keeps the last known registry policy, and clears it only when GitHub reports that no registry applies. #344895
Thank you
Issue tracking
Contributions to our issue tracking:
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
Pull requests
Contributions to vscode:
- @bompus (Aaron Queen): Refresh markdown preview html before a hidden panel is rebuilt PR #334681
- @cipheraxat (Akshat Anand): web: release
code -w -g file:lineonce the file's editor closes PR #344740 - @denizguney (Deniz Güney Yıldırım): test: add mock reset configuration and test coverage support PR #338159
- @hardikkaurani (Hardik K): fix(arrays): throw TypeError for negative indices in quickSelect PR #342816
- @hirossan4049 (hirose): editorFind: fix swapped findMatch foreground colors (#_228782) PR #270395
- @kinqsradio (Anh Dang)
- Fix requireLocalPort for range, regex, and host-and-port rules PR #344185
- Preserve inherited port protocol for exact-port attributes PR #344764
- @nathan-vincent-dev (nathan vincent): Fix typos "curent" and "filterd" PR #345134
- @Nikhil-4404 (Nikhil Kumar): Fix SSE stream-wide byte order mark handling PR #344094
- @pl4nty (Tom Plant): win32: fix installer's context menu COM surrogate kill command PR #344505
- @rfeltis (Ralph Feltis): Log telemetry when the closed-chat promo pip is armed PR #337997
- @RReverser (Ingvar Stepanyan): Fix copilot code reference output channel race PR #342272
- @SimonSiefke (Simon Siefke)
- fix: task system readiness races PR #342418
- fix: memory leak in terminal auto replies PR #336022
- @spencrr (Spencer Schoenberg): agentHost: add setting to turn off Copilot's Co-authored-by trailer PR #339437
- @VaggelisGian (Vaggelis Giannopoulos): Progress: store scoped while state with start time and delay swapped PR #332735
- @vscodebot-pr (VS Code PR Bot): fix: guard ListView dynamic-height probe against shrunk model (fixes #333550) PR #333563
- @wozhenbang2004 (Kayokoi): testing: respect keybindings before type-to-filter PR #344892
- @wycats (Yehuda Katz): Recognize userPromptTransformed plugin hooks in Copilot sessions PR #345068
Contributions to vscode-pull-request-github:
- @kinqsradio (Anh Dang): Fix orphan stack worktree cleanup through macOS path aliases PR #9100
- @tamird (Tamir Duberstein): Batch Git config reads for branch operations PR #8978
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.