Visual Studio Code Release Notes
Last updated: Apr 16, 2026
- Apr 15, 2026
- Date parsed from source:Apr 15, 2026
- First seen by Releasebot:Apr 16, 2026
- Modified by Releasebot:Apr 16, 2026
Visual Studio Code by Microsoft
Visual Studio Code 1.116
Visual Studio Code releases 1.116 with stronger chat and agent workflows, including agent debug logs, Copilot CLI thinking effort controls, terminal agent tools, and built-in GitHub Copilot. It also adds accessibility, browser, and performance improvements.
Welcome to the 1.116 release of Visual Studio Code
This release continues to make working with chat and agents more powerful and efficient. Here are some highlights of what's new:
- Agent Debug Logs: view logs from previous agent sessions to understand and debug agent interactions.
- Copilot CLI thinking effort: configure model thinking effort in Copilot CLI to balance response quality and latency.
- Terminal agent tools: interact with any terminal session from your agent sessions.
- GitHub Copilot built-in: start using AI without having to install the GitHub Copilot Chat extension.
Happy Coding!
Agent experience
Debug previous agent sessions
Setting: github.copilot.chat.agentDebugLog.fileLogging.enabled
The Agent Debug Log panel shows a chronological event log of agent interactions during a chat session, which is useful for understanding what happens when you send a prompt and to debug chat customizations.
You can now view the log for the current session as well as previous sessions, with logs persisted locally on disk. This enables you to review and debug past agent interactions even after the session has ended.
The setting to enable the Agent Debug Logs panel is now merged into the troubleshooting setting github.copilot.chat.agentDebugLog.fileLogging.enabled.
Learn more about the Agent Debug Logs panel in the documentation.
Configure thinking effort in Copilot CLI
Similar to local agent sessions, you can now configure the thinking effort for reasoning models in Copilot CLI sessions with the language model picker. Thinking effort controls how much reasoning the model applies to each request, which can help balance response quality and latency based on your needs.
Choose a reasoning model in the picker and select the arrow to reveal the available effort levels. The available effort levels might vary by model. Non-reasoning models do not show the submenu.
Learn more about thinking effort and reasoning in the documentation.
Customizations welcome page
The Chat Customizations dialog, available via the Chat: Open Customizations command or the gear icon in the Chat view, now has a welcome page that gives you an overview of all your agent customizations.
Creating customizations might be daunting at first, so you can now use the Customize Your Agent input on the welcome page to let VS Code draft customizations like agents, skills, and instructions based on a natural language description.
Learn more about customizing agents in the agent customization documentation.
Tool confirmation carousel (Experimental)
Setting: chat.tools.confirmationCarousel.enabled
To make approving or rejecting multiple tool calls more efficient, chat now shows a carousel control for tool confirmations. The carousel gives you a compact and navigable way to review and approve multiple tool calls in sequence without scrolling through the conversation.
This feature is experimental and controlled by the chat.tools.confirmationCarousel.enabled setting. It is enabled by default in VS Code Insiders and is gradually rolling out to Stable as we collect feedback.
Visual Studio Code Agents (Insiders)
Note: The Visual Studio Code Agents app is currently in preview and only available when installing VS Code Insiders.
In the last release, we shared the Visual Studio Code Agents app, a new preview companion app that ships alongside VS Code Insiders and is built for agent-native development.
Since introducing the app in 1.115, we've continued to iterate with features and fixes based on feedback, to deliver a great agent-first experience.
Some of the latest updates include:
- Reasoning level selection: as mentioned above, you can now configure thinking effort for reasoning models in Copilot CLI sessions.
- Plan mode handling: for CLI sessions involving planning, plan mode will automatically kick in.
- Files tab shown by default in Changes: the Files tab now shows by default in the Changes panel.
- Session response, theming, and rendering improvements: a range of refinements to response handling, visual consistency, and rendering performance.
- App name: We've renamed the app to Visual Studio Code Agents - Insiders.
We've added a new entry point to Try out the new Agents app from the VS Code welcome page:
You can also still open the app via the same methods as in 1.115:
- Launch Visual Studio Code Agents - Insiders from your Start menu or Applications folder in the OS.
- Run Chat: Open Agents Application from the Command Palette.
Terminal tools
Foreground terminal support for agent tools
The send_to_terminal and get_terminal_output agent tools now also work with foreground terminals and not just background terminals that were created by the agent. This means that the agent can read output from and send input to any terminal visible in the terminal panel, such as a running REPL or an interactive script.
Terminal input improvements
This release includes several improvements to the experience for terminal input in agent sessions:
- Detect terminal input: The LLM-based prompt-for-input detection is removed. Previously, every terminal output chunk triggered an extra LLM call to classify whether the terminal was waiting for input, which added latency and used extra tokens. The agent now handles terminal input directly via send_to_terminal and uses the question carousel to defer to you when needed.
- Progress messages: When the agent sends answers to the terminal, the progress message now shows which question is being answered, for example: Sending "my-project" to terminal (replying to: What is your project name?).
- Focus Terminal: When the agent needs terminal input, like when prompting for a password or an interactive installer like npm init, the question carousel now includes a Focus Terminal button. Select it to focus the relevant terminal and type your response directly. If you start typing in the terminal while the carousel is open, it automatically dismisses and informs the agent that you are handling the input directly.
Background terminal notifications enabled by default
Setting: chat.tools.terminal.backgroundNotifications
Background terminal notifications are now enabled by default. When the agent runs a command in a background terminal, it automatically receives notifications when the command completes, times out, or requires input. This enables the agent to respond more quickly and accurately without needing to poll for terminal output.
Chat UX
This release includes a few UX improvements to chat:
- Diffs in the top level: Code diffs now render directly in the chat conversation, so you can review proposed changes without switching context to a separate diff view.
- Rendering performance: Chat responses should now render faster, with added improvements including reduced layout thrashing and more efficient incremental updates during streaming. Also fixes an issue where rapid bursts of tool invocation updates cause brief hangs in the extension host.
- Chat send performance: Fixes an issue where chat message sending is blocked by loading chat customizations. The message now visually appears in the chat conversation immediately even if prompts are still loading.
- Subagent progress: The expanded view for subagent progress is now more visually distinct, making it easier to follow when a subagent is in progress.
Accessibility
Agents app accessibility
The Agents app, available in VS Code Insiders, now includes comprehensive accessibility support for keyboard and screen reader users.
Accessibility help dialog: Press Alt+F1 (Option+F1 on macOS) while the chat input is focused to open the accessibility help dialog. It provides an overview of what the Agents app is, lists available views, and shows keybindings for navigating between them.
Keyboard navigation commands: New keybindings let you quickly focus key views in the Agents app:
- Focus Changes View (unassigned)
- Focus Chat Customizations View (unassigned)
- Focus Files Explorer View (unassigned)
These keybindings are scoped to the Agents window and do not override their standard VS Code counterparts.
Verbosity setting: The accessibility.verbosity.sessionsChat setting controls whether the chat input announces an ARIA hint about opening accessibility help. Disable it to suppress the announcement.
ARIA labels and landmarks: The auxiliary bar is now marked as a complementary landmark with a descriptive label, workspace picker buttons have meaningful ARIA labels, and session list items include creation time context.
Screen reader instructions for keyboard shortcuts search results
When searching in the Keyboard Shortcuts editor, the screen reader now announces instructions for navigating to the search results. NVDA and other screen readers announce "Use Ctrl+Down Arrow to access the searched shortcut details", so you can quickly navigate to the results table. You can disable this announcement with the accessibility.verbosity.keyboardShortcuts setting.
Integrated browser
The integrated browser is now easier to access thanks to two new entry points:
- The View menu, under View > Browser
- The keyboard shortcut Ctrl+Alt+/
These actions open the integrated browser if no tabs are open, or let you quickly see and jump to existing tabs.
These new entry points are in addition to the previously existing ones:
- The Browser: Open Integrated Browser command
- Link clicks to localhost sites (workbench.browser.openLocalhostLinks)
- The title bar icon (workbench.browser.showInTitleBar)
- Ask an agent to open or interact with the browser (workbench.browser.enableChatTools This setting is managed at the organization level. Contact your administrator to change it.)
Languages
JS/TS Chat Features extension (Preview)
Setting: jsts-chat-features.skills.enabled
The new builtin JS/TS Chat Features extension enhances Copilot's skills to work with TypeScript and JavaScript. For this first release, the extension contributes skills for setting up modern TypeScript projects. We plan to enhance and expand its functionality in a future release.
To try these skills today, enable the jsts-chat-features.skills.enabled setting.
Engineering
GitHub Copilot is now built-in
GitHub Copilot Chat is now a built-in extension in VS Code. New users no longer need to install any extension to start using Copilot features such as chat, inline suggestions, and agents. Copilot is available out of the box as part of the standard VS Code installation.
This change is part of our ongoing effort to make VS Code the open source AI code editor. By shipping Copilot as a built-in extension, we reduce friction for new users and ensure that AI-powered features are seamlessly integrated from the first launch.
Existing users are not affected by this change. If you already have the Copilot extension installed, it continues to work as before.
As before, if you prefer not to use AI features, you can disable them with the chat.disableAIFeatures setting.
Enterprise
Group policy to filter agent network access
Administrators can now use group policies to control which network domains agent tools can access. When the chat.agent.networkFilter setting is enabled via policy, network access from agent tools such as the fetch tool and the integrated browser is restricted according to the allowed and denied domain lists.
- chat.agent.allowedNetworkDomains specifies which domains agent tools can access. Supports wildcards such as *.example.com.
- chat.agent.deniedNetworkDomains specifies which domains are blocked. Denied domains take precedence over allowed domains.
When the network filter is enabled and both lists are empty, all domains are blocked. When chat.agent.sandbox.enabled is also enabled, the network domain rules additionally apply to the terminal sandbox.
These policies are configured with keys ChatAgentNetworkFilter, ChatAgentAllowedNetworkDomains, and ChatAgentDeniedNetworkDomains. Learn more about enterprise policies in the documentation.
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:
- Add a chat tool for creating pull requests.
- Worktrees can also be deleted from the "Delete Local Branches and Remotes" command.
Review the changelog for the 0.136.0 release of the extension to learn about everything in the release.
Deprecated features and settings
New deprecations in this release
None
Upcoming deprecations
- Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden This setting is managed at the organization level. Contact your administrator to change it. . This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.
Thank you
Contributions to our issue tracking:
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
Contributions to vscode:
- @AndreasArvidsson (Andreas Arvidsson): Fix TextmateSnippet clone method to correctly assign _children PR #295555
- @gryan11 (Gabriel Ryan): Fix: add missing override modifiers in test mock class PR #308558
- @maruthang (Maruthan G)
- fix: preserve code block toolbar visibility during chat streaming PR #307978
- fix: strip ANSI escape codes from inline test output messages PR #308161
- fix: resolve default view for markdown files on first startup PR #308739
- @romalpani (Rohan Malpani): feat: enhance sessions view with find widget and header actions PR #307679
- @winstliu (Winston Liu): Fix --prof-startup never being able to profile renderer/extension host PR #307849
- @yogeshwaran-c (Yogeshwaran C)
- Add scrollbar indicators for failing tests PR #307996
- fix: check message location visibility for failureInVisibleDocument peek PR #308697
- Show breakpoint widget on Alt+click in gutter PR #308687
- fix: exclude source annotations from text selection in debug console PR #308925
- @zackbach (Zack Eisbach): Add support for regex in tokenTypes PR #304885
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.
Original source - Apr 8, 2026
- Date parsed from source:Apr 8, 2026
- First seen by Releasebot:Apr 8, 2026
- Modified by Releasebot:Apr 13, 2026
Visual Studio Code by Microsoft
Visual Studio Code 1.115
Visual Studio Code releases 1.115 with a new VS Code Agents companion app, smoother integrated browser and terminal tools for agent workflows, and BYOK support for Copilot Business and Enterprise users, making agent-native development more seamless.
Welcome to the 1.115 release of Visual Studio Code. This release makes your agent-native development experience even better with the introduction of the new VS Code Agents companion app!
- VS Code Agents app: a new companion app optimized for agent-native development, running alongside VS Code Insiders.
- Integrated browser: several improvements to make working with the integrated browser more seamless for agents.
- Terminal tools: new capabilities for agents to interact with background terminals.
- BYOK for Business and Enterprise: bring your own language model key is now available for Copilot Business and Enterprise users.
Happy Coding!
Visual Studio Code Agents (Preview)
Visual Studio Code Agents is a new preview companion app that ships alongside VS Code Insiders, built for agent-native development.
- Parallelize tasks across projects - Kick off agent sessions across multiple repos in parallel (each isolated in its own worktree), quickly switch context (with UI that adapts to your selection), and iterate on human and agentic reviews.
- Monitor and review - Track session progress, view diffs inline, leave feedback for agents, and create pull requests without leaving the app.
- Your customizations carry over - Custom instructions, prompt files, custom agents, MCP servers, hooks, and plugins all work in the Agents app, along with your other VS Code customizations like themes, for example.
- No extra install - The app ships alongside VS Code Insiders. Launch it from your Start menu or Applications folder in the OS, or run Chat: Open Agents Application from the Command Palette.
The Agents app is a rapidly evolving preview. It's currently only available in VS Code Insiders, and we're looking forward to getting your feedback in GitHub issues.
Integrated browser
This release, we continue to further enhance the integrated browser experience and its capabilities for agents.
Browser agent tools improvements
Setting: workbench.browser.enableChatTools
Better tool labelsWhen an agent invokes the browser tool, the tool calls now have a more descriptive label and a link to go directly to the target browser tab.
Old:
New:
Long-running script supportThe Run Playwright Code tool has improved support for long-running scripts. Scripts that take longer than five seconds to run (by default) now return a deferred result for the agent to poll.
Fewer duplicate tabsAgents are now more heavily discouraged from repetitively opening browser tabs. Now, when an agent attempts to open a new tab and an available tab is already open to the same host, no new tab is opened unless an explicit flag is passed by the agent.
Pinch-to-zoom in the integrated browser (macOS)The integrated browser now supports pinch-to-zoom on macOS. Use the trackpad pinch gesture to magnify web page content up to 3x.
Unlike the standard browser zoom (Ctrl+= / Ctrl+-), pinch-to-zoom is a purely visual magnification and doesn't reflow the page layout.
Terminal tools improvements
This release improves the agent experience for running terminal commands in the background.
Send input to background terminals
Previously, background terminals were read-only, with only get_terminal_output available. This was particularly limiting when a foreground terminal timed out and moved to the background, as the agent could no longer interact with it.
With the new send_to_terminal tool, the agent can continue interacting with background terminals. For example, if an SSH session times out while waiting for a password prompt, the agent can still send the required input to complete the connection.
Background terminal notifications (Experimental)
Setting: chat.tools.terminal.backgroundNotifications
Previously, when a terminal command was running in the background, the agent had to manually call get_terminal_output to check on its status. There was no way to know when the command completed or needed input.
With the new experimental chat.tools.terminal.backgroundNotifications setting, the agent is automatically notified when a background terminal command finishes or requires user input. This also applies to foreground terminals that time out and are moved to the background. The agent can then take appropriate action, such as reviewing the output or providing input via the send_to_terminal tool.
GitHub Copilot
Bring your own key for Copilot Business and Enterprise
Bring your own language model key (BYOK) is now available for Copilot Business and Enterprise users. With BYOK, you can use your own API keys to access models from providers like OpenRouter, Ollama, Google, OpenAI, and more in chat.
To enable BYOK for your organization, an administrator must enable the Bring Your Own Language Model Key in VS Code policy in the Copilot policy settings on GitHub.com. After the policy is enabled, organization members can add models from built-in providers or install language model provider extensions.
Deprecated features and settings
New deprecations in this release
None
Upcoming deprecations
- Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden. This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.
Notable fixes
- vscode#304257 - terminal restart for integrated pwsh can cause cursor to go to wrong location
- vscode#304679 - Caps Lock key inserts raw escape sequence "[57358u" in Claude Code inside VS Code terminal
Thank you
Contributions to our issue tracking:
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
Contributions to vscode:
- @andysharman: feat: add A/B test for default new session mode PR #306532
- @chetanr-25: Improve type safety for dynamic stylesheet rules PR #288651
- @danplischke (Dan Plischke): Add default-folder, default-workspace and disable-telemetry to serve-web CLI PR #299512
- @mossgowild (moss): fix: prevent catastrophic regex backtracking in _extractImagesFromOutput PR #307447
- @xingsy97 (xingsy97): comments: fix memory leak when recycling tree items in comment panel PR #304666
- @yogeshwaran-c (Yogeshwaran C): fix: scope editor service in window title to own editor groups container PR #306226
- @yogeshwaran-c (Yogeshwaran C): fix: preserve 'Wait for Breakpoint' selection when reopening breakpoint widget PR #306564
- @yogeshwaran-c (Yogeshwaran C): fix: include additional toggles in find input arrow key navigation PR #306559
- @yogeshwaran-c (Yogeshwaran C): feat: show coverage indicators in minimap PR #307250
- @yogeshwaran-c (Yogeshwaran C): fix: improve test coverage filter quickpick readability PR #306562
- @yogeshwaran-c (Yogeshwaran C): fix: treat unrecognized @-prefixed text as regular filter in test explorer PR #307555
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.
Original source All of your release notes in one feed
Join Releasebot and get updates from Microsoft and hundreds of other software products.
- Apr 1, 2026
- Date parsed from source:Apr 1, 2026
- First seen by Releasebot:Apr 1, 2026
Visual Studio Code by Microsoft
Visual Studio Code 1.114
Visual Studio Code ships a chat-focused update with video preview in the image carousel, a Copy Final Response command, improved troubleshooting for previous chat sessions, and faster semantic workspace search. It also updates JavaScript and TypeScript support to TypeScript 6.0 and adds enterprise policy controls.
Welcome to the 1.114 release of Visual Studio Code. This release focuses on streamlining your chat experience.
- Preview videos: preview videos in the image carousel for chat attachments and the Explorer context menu.
- Copy chat response: copy the final Markdown chat response for easy sharing.
- Troubleshooting chat: use /troubleshoot to diagnose chat customization issues in previous sessions.
- Simplified workspace search: get faster, more consistent semantic search results.
Happy Coding!
Chat experience
Preview videos in the image carousel
Settings: imageCarousel.chat.enabled, imageCarousel.explorerContextMenu.enabled
The image carousel, introduced in version 1.113, now also supports videos. You can play and navigate videos from chat attachments or the Explorer context menu.
The viewer includes:
- Video playback with controls
- Navigation for all images and videos using arrows or thumbnails
Copy final response in chat
The Chat view already has commands to copy the entire conversation or a specific response. However, that also includes the agent's thinking process and tool calls.
For those cases where you only want to copy the final response, there is now a Copy Final Response command in the chat context menu that copies the last Markdown section of the agent's response, after all tool calls have run.
Workspace search simplification
The #codebase tool lets Copilot do a semantic search of your codebase. This can be especially useful for finding relevant code snippets in codebases with tens to hundreds of thousands of files.
When the #codebase tool was first introduced, it was designed for Copilot's ask flow: you ask a question or request an edit and Copilot produces a result directly in its response. Now that almost all Copilot interactions are agentic, with agents able to run multiple tools and iterate before producing an edit or response, much of the original #codebase design is no longer relevant.
The first important change is that #codebase is now purely used for semantic searches. Previously, it could fall back to less accurate (and less efficient) fuzzy text searches. The agent can still do text and fuzzy searches if it wants, but we want to keep #codebase purely focused on semantic searches.
We've also simplified how the codebase index is managed. This index is what enables the #codebase tool to provide semantic search results quickly. Previously, we had the concept of both a "local index" and a "remote index". The local indexes were limited to a few thousand files and weren't always semantic. The remote index was stored remotely for a given repo, could be shared across a team, and could support millions of files.
Now there's just a single state: is your codebase semantically indexed or not? No more local vs remote. Behind the scenes, some parts of the index might still be stored on your machine and some might come from remote sources, however you no longer have to manage these indexes yourself.
Here's what all of these changes mean for using Copilot:
- The #codebase tool is now always semantic and provides consistent results.
- Copilot automatically uses #codebase for semantic searches when it makes sense. We build indexes for you on demand and use them automatically. You do not have to manage the index yourself.
- Workspaces that previously were shown as being indexed will need to be reindexed. This is typically because they were using a local, non-semantic index.
- Especially large codebases without a GitHub repo might not currently be indexable. We are slowly rolling out support for indexing these as well.
Even if your workspace is not semantically indexed, we've found you can still get good results through Copilot's other search methods (text, grep, symbols).
All these changes should make working with agents faster and provide higher quality context to the models. We also believe they simplify using Copilot and understanding what tools are available to it.
For more details, see the workspace guide.
Troubleshoot previous chat sessions (Preview)
Settings: github.copilot.chat.agentDebugLog.enabled, github.copilot.chat.agentDebugLog.fileLogging.enabled
The troubleshoot skill (invoked via /troubleshoot) helps with diagnosing chat issues by analyzing agent debug logs and surfacing insights into the agent's behavior. For example, to investigate why custom instructions were ignored or responses are slow.
With this release, you can now reference any previous chat session when troubleshooting. This makes it easier to investigate issues after the fact, without needing to reproduce them.
To troubleshoot a previous session, use the /troubleshoot command and include #session in your prompt. This will trigger a session picker where you can select from a list of your previous chat sessions.
Tip: You can also attach a session by selecting + (Add Context) > Sessions.
Languages
TypeScript 6.0
Our JavaScript and TypeScript support now uses TypeScript 6.0. This major update includes important fixes and improvements. Importantly, this TypeScript release also deprecates a number of older options in preparation for the TypeScript 7.0 rewrite.
You can read all about the TypeScript 6.0 release on the TypeScript blog.
Python
- Various bug fixes in the Python Environments extension for env file notifications and environment manager selection priority:
- The workspace's saved interpreter selection now takes precedence over terminal-activated virtual or conda environments across restarts.
- The env file change notification now includes a "Don't Show Again" option to permanently dismiss it.
- The Python Environments extension now recommends the community Pixi extension when Pixi environments are detected, and includes Pixi in the environment manager priority order.
Enterprise
Group policy to disable Claude agent
Administrators can now use a group policy to disable the Claude agent integration in chat. When this policy is applied, the github.copilot.chat.claudeAgent.enabled setting is managed by the organization and users cannot enable the Claude agent.
This policy is configured as a boolean with key Claude3PIntegration. Learn more about device management policies in the enterprise documentation.
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:
- Branch names in the create PR view are now cached for faster target branch loading.
- GitHub permalink links in PR and issue overview webviews now open the corresponding local file when the file exists in the workspace.
Review the changelog for the 0.134.0 release of the extension to learn about everything in the release.
Proposed APIs
Fine-grained tool approval
Language model tools with an approval flow can now scope approval to a specific combination of arguments.
For example, the built-in "Run VS Code Command" tool can run any VS Code command. A user might feel comfortable always approving editor.action.formatDocument, but not other commands. With this API, the tool implementation can scope approval to the specific command, so users approve each command individually.
See the full API proposal for more details: Fine grain tool approval.
See an example of the API in use in the Copilot Chat extension.
Deprecated features and settings
New deprecations in this release
None
Upcoming deprecations
- Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden. This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.
Notable fixes
- microsoft/vscode #303908 Fix VS Code shortcuts taking precedence over page shortcuts in Integrated Browser
- microsoft/vscode #299777 Fix "Add Element to Chat" not working while debugging is paused in the Integrated Browser
Thank you
Contributions to our issue tracking:
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
Contributions to vscode:
- @a77ming: Fix wrapped title spacing on the agent sessions welcome page PR #304686
- @AshtonYoon (Ashton Yoon): Fix janky scrolling in markdown preview with code blocks PR #287050
- @buley (Tay): fix: destroy read streams to prevent file descriptor leaks PR #303395
- @ConsoleTVs (Erik C. Forés): fix(mcp): resolve env vars in agent plugin MCP server definitions PR #303156
- @jonathanrao99 (Jonathan Thota): browser: prevent new tab from flashing in quick pick PR #304297
- @ShehabSherif0 (Shehab Sherif):
- Fix operator precedence in fuzzyScore2 test assertion PR #304449
- Fix copy-paste bug in performance view blocking startup count PR #304452
- @Tyriar (Daniel Imms): Remove self from notify, classifier, events, etc. PR #304498
- @xingsy97 (xingsy97):
- Keyboard layout - replace all dashes/dots in macOS layout labels PR #303971
- Editor - fix paste preference filter matching all providers PR #304044
- Settings editor - avoid repeated extension list refresh PR #303957
- settings: use local StopWatch to avoid timing corruption between concurrent searches PR #304361
- mergeEditor: optimize removeDiffs from O(K*N) to single-pass O(N) PR #304404
- timeline: fix memory leak when toggling pane visibility PR #304668
- notebook: fix unused cell lookup and broken selection deduplication PR #305105
- Chat - remove deprecated prompt attribute spelling PR #301976
- @yogeshwaran-c (Yogeshwaran C):
- fix: prevent terminal panel from overwriting terminalEditorActive context key PR #304802
- fix: modernize HTML sample snippet PR #304818
- fix: make testing icon colors inherit from list error/warning foreground PR #304959
- fix: enable zoom for SVGs without explicit width/height dimensions PR #304973
- fix: persist test coverage sort order across sessions PR #304979
- fix: send user preferences to TS server even without visible editor PR #304987
Contributions to vscode-pull-request-github:
- @Daniel-Aaron-Bloom: Link to local file for permalinks in webview PR #8583
Contributions to monaco-editor:
- @pgoslatara (Pádraic Slattery): chore: Update outdated GitHub Actions versions PR #5214
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.
Original source - Mar 25, 2026
- Date parsed from source:Mar 25, 2026
- First seen by Releasebot:Mar 26, 2026
Visual Studio Code by Microsoft
Visual Studio Code 1.113
Visual Studio Code ships a major 1.113 update with richer AI agent and chat workflows, including unified chat customizations, configurable reasoning effort, nested subagents, CLI agent MCP and debug log support, image preview, and refreshed default Light and Dark themes.
Welcome to the 1.113 release of Visual Studio Code. This release includes various improvements across the agent and developer experience.
- Chat customizations: Manage all chat-related customizations from a single, unified interface.
- Configurable thinking effort: Control a model's reasoning level directly from the UI.
- Nested subagents: Allow subagents to invoke other subagents for complex multi-step workflows.
- CLI agent capabilities: Use MCP servers, fork sessions, and view debug logs in CLI agents.
- Images preview: Preview images from chat with the full-featured image viewer.
- Default themes refresh: Enjoy a fresh new look with updated default light and dark themes.
Happy Coding!
VS Code is rolling out gradually to all users. Use Check for Updates in VS Code to get the latest version immediately.
To try new features as soon as possible, download the nightly Insiders build, which includes the latest updates as soon as they are available.
Agent experience
Use the same tools and workflows across local, CLI, and Claude agents, and compose multi-step automations with less friction.
MCP support in Copilot CLI & Claude agents
Previously, MCP servers that you configured in VS Code were only available to local agents running in the editor. This release adds support for MCP servers in Copilot CLI & Claude agents.
MCP servers you have registered in VS Code are bridged to Copilot CLI and Claude agents. This applies to both user-defined servers and servers defined in your workspace via mcp.json files.
Learn more about using MCP servers in VS Code.
Forking sessions in Copilot CLI & Claude agents
Setting: github.copilot.chat.cli.forkSessions.enabled
Forking a session enables you to create a copy of an existing session at any point in the conversation history. This is useful when you want to explore a different line of thought or try out different prompts without losing the context of the original session.
As of this release, you can now also fork sessions in both Copilot CLI (Experimental) and Claude agents. To enable forking for Copilot CLI, enable the github.copilot.chat.cli.forkSessions.enabled setting.
Learn more about forking a chat session in the documentation.
Agent debug logs for Copilot CLI and Claude CLI sessions (Preview)
The Agent Debug Log panel is the primary tool for understanding what happens when you send a prompt. It shows a chronological event log of agent interactions during a chat session. You can now use the Agent Debug Log panel for Copilot CLI and Claude agent sessions. Support for local agent sessions was already available.
Learn more about the Agent Debug Log panel in our documentation.
Claude session listing powered by SDK APIs
VS Code now adopts the official API from the Claude agent SDK to list out sessions and their messages. Previously, we relied on parsing Claude JSONL files on disk, which had a risk of being out of sync if Claude changed their structure. If you experienced issues with the Claude agent not showing all your sessions or messages, this should now be resolved.
Nested subagents
Setting: chat.subagents.allowInvocationsFromSubagents
Subagents can now invoke other subagents, enabling more complex multi-step workflows. Previously, subagents were restricted from calling other subagents to prevent infinite recursion. With the new chat.subagents.allowInvocationsFromSubagents setting, you can enable this capability when needed.
Learn more about using subagents in the documentation.
Manage plugin marketplaces
We added a new command Chat: Manage Plugin Marketplaces that lists all configured plugin marketplaces. For each marketplace, you can browse the plugins, open their local directory, and remove them.
Learn more about using agent plugins in the documentation.
URL handlers for plugin installation
You can trigger VS Code plugin installation via URL handlers. To install a marketplace, you can trigger a link with the format:
vscode://chat-plugin/add-marketplace?ref=<source>Where "source" is a Github repo/owner or a base64-encoded Git URI. To install an extension, you can use the following format:
vscode://chat-plugin/install?source=<source>To target VS Code Insiders, replace vscode with vscode-insiders in the URL.
Chat experience
Tailor the AI to your project from a single editor, control how much a model reasons before responding, and review visual context without leaving chat.
Chat Customizations editor (Preview)
The Chat Customizations editor provides a centralized UI for creating and managing all your chat customizations in one place. The editor organizes customization types into separate tabs, such as custom instructions, prompt files, custom agents, and agent skills. It also provides an embedded code editor with syntax highlighting and validation.
You can create new customizations from scratch or use AI to generate initial content based on your project. To add MCP servers and agent plugins, browse the corresponding marketplace directly from the editor.
To open the editor, select the Configure Chat (gear icon) in the Chat view or run Chat: Open Chat Customizations from the Command Palette (Ctrl+Shift+P).
Learn more about the Chat Customizations editor in the documentation.
Configurable thinking effort in model picker
Models that support reasoning, such as Claude Sonnet 4.6 and GPT-5.4, now show a Thinking Effort submenu directly in the model picker. You can use this to control how much reasoning the model applies to each request without navigating to VS Code settings. VS Code retains the selected effort level per model across conversations.
Choose a reasoning model in the picker and select the arrow to reveal the available effort levels. The available effort levels might vary by model. Non-reasoning models do not show the submenu.
The model picker label now also displays the selected effort level, for example "GPT-5.3-Codex · Medium", to make it easier to see which effort level is currently active for each model.
Learn more about thinking effort and reasoning in the documentation.
Note: The github.copilot.chat.anthropic.thinking.effort and github.copilot.chat.responsesApiReasoningEffort settings have been deprecated. Reasoning effort is now configured directly through the model picker.
Images preview for chat attachments
Setting: imageCarousel.chat.enabled, imageCarousel.explorerContextMenu.enabled
When you work with images in chat, whether you attached screenshots to your request or the agent generated images via tool calls, you can now select any image attachment to open it in a full image viewer experience.
The viewer opens as a modal overlay and supports:
- Navigation: Browse all images from the current chat session by using arrow buttons, keyboard arrows, or the thumbnail strip at the bottom.
- Sections: Images are grouped by conversation turn, so you can see which images came from a particular request or response.
- Zoom & pan: Click to zoom in, use Option+Click (Mac) or Ctrl+Click (Windows/Linux) to zoom out, or scroll/pinch to zoom continuously. At high zoom levels, scroll to pan around the image.
The image viewer is now also available from the Explorer view context menu for image files. When you select Open in Images Preview, the viewer opens with all images from the current folder.
Both features are enabled by default. To configure them independently, use imageCarousel.chat.enabled and imageCarousel.explorerContextMenu.enabled.
Editor experience
Develop and test web apps more confidently in the integrated browser, and enjoy a refreshed default look for the editor.
Use self-signed certificates in the integrated browser
When you are developing web applications that depend on secure HTTPS connections, it's usually necessary to use a self-signed certificate during testing.
Under normal circumstances, such certificates shouldn't be trusted. Previously, any site that presented an untrusted certificate would simply fail to load in the integrated browser, without any option to bypass.
Now, similar to most browsers, you can choose to temporarily trust a certificate that can't be verified, to unblock development in these scenarios.
When you proceed, connections to the current host using that certificate are allowed for one week. The URL bar will show that the connection isn't secure, with the option to revoke trust at any time.
Learn more about the integrated browser in the documentation.
Improved browser tab management
Setting: workbench.browser.showInTitleBar
Managing open tabs can already be difficult. As we encourage more use of integrated browser tabs, we are also adding more controls to easily manage them.
- Quick Open Browser Tab
This command opens a Quick Pick that displays all open browser tabs and allows them to be quickly filtered, focused, and closed.
The command can also be triggered with the Ctrl+Shift+A keyboard shortcut while a browser is currently focused, or via a new shortcut button in the VS Code title bar, visible when a browser tab is open.
The visibility of this button is configurable via the workbench.browser.showInTitleBar setting.
- Close All Browser Tabs
Browser tab context menus now have an option to close all browser tabs in the same group, similar to the existing "Close All" item. Browser tabs across all groups can also be closed via the Command Palette.
New default themes
VS Code now ships with new default themes: "VS Code Light" and "VS Code Dark". These themes are designed to provide a fresh, modern look while maintaining the familiarity and usability of the previous default "Modern" themes. In addition, OS theme syncing will default to the new themes for new users, so that VS Code will automatically match the light/dark mode of your operating system with the new themes.
Deprecated features and settings
New deprecations in this release
None
Upcoming deprecations
- Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden. This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.
Thank you
Issue tracking
Contributions to our issue tracking:
- @gjsjohnmurray (John Murray)
- @RedCMD (RedCMD)
- @IllusionMH (Andrii Dieiev)
- @albertosantini (Alberto Santini)
Contributions to vscode:
- @jcansdale (Jamie Cansdale): Use bracketed paste for multiline executed terminal text PR #302526
- @jeevaratnamputla: Replace child_process.exec with execFile to prevent potential command injection PR #291825
- @kbhujbal (Kunal Bhujbal): Fix code quality issues: error logging and JSDoc typo PR #297893
- @sathvikc (Sathvik C): fix: prevent duplicate tip nodes on re-entrant renderGettingStartedTipIfNeeded PR #302317
- @ShehabSherif0 (Shehab Sherif): Fix missing global flag in sanitizeId regex PR #303603
- @xingsy97 (xingsy97): Git - optimize worktree ignored-path computation PR #303955
Contributions to vscode-copilot-chat:
- @24anisha (Anisha Agarwal):
- Search subagent -- resolve relative and absolute paths PR #4429
- System prompt updates to handle search subagent PR #4500
- @etvorun (ET): Fix: NES debounce and language context fetch do not honor cancellation token PR #4384
Contributions to vscode-python-environments:
- @00zayn: Fix spurious unresolved interpreter warning from ${workspaceFolder}-scoped global defaultInterpreterPath PR #1334
- @StellaHuang95 (Stella Huang): Add telemetry for manager registration failures PR #1365
Contributions to vscode-windows-process-tree:
- @ZA139: feat:Add getAllProcesses API for retrieving all system processes PR #84
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.
Original source - Mar 18, 2026
- Date parsed from source:Mar 18, 2026
- First seen by Releasebot:Mar 18, 2026
Visual Studio Code by Microsoft
Visual Studio Code 1.112
Visual Studio Code releases 1.112 with major developer experience upgrades, including integrated browser debugging, Copilot CLI permissions, sandboxed MCP servers, and expanded agent support for images and monorepo customizations. Gradual rollout; nightly insiders available.
Visual Studio Code 1.112
Release date: March 18, 2026
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Welcome to the 1.112 release of Visual Studio Code. This release includes various improvements across the agent and developer experience.
- Integrated browser debugging: debug web apps end-to-end without leaving VS Code.
- Copilot CLI permissions: give Copilot CLI sessions more autonomy so they complete tasks with fewer interruptions.
- MCP server sandboxing: run local MCP servers in a sandbox to limit what they can access on your machine.
- Agent image support: work with screenshots, diagrams, and binary files directly in agent conversations.
- Monorepo customizations: share agent instructions and skills across all packages in a monorepo.
Happy Coding!
VS Code is rolling out gradually to all users. Use Check for Updates in VS Code to get the latest version immediately.
To try new features as soon as possible, download the nightly Insiders build, which includes the latest updates as soon as they are available.
Agent experience
Give agents more autonomy, richer context, and easier diagnostics so they can handle complex tasks with less intervention.
Message steering and queueing in Copilot CLI
For local agent sessions, you can send messages while a previous request is running, to steer the agent towards a different response or queue up follow-up messages. This release adds support for steering and queueing messages to Copilot CLI sessions.
Preview changes before delegating to Copilot CLI
When you have uncommitted changes in your workspace and try to delegate a task to Copilot CLI, you can choose to copy, move, or ignore those changes in the worktree that Copilot CLI creates for the session. However, you had to check the Source Control view to see what those changes were before making a decision.
In this release, the Chat view now shows the list of pending changes, making it easier to see what can be migrated over to the worktree created when delegating to Copilot CLI.
Clickable file links in Copilot CLI terminal output
Setting: github.copilot.chat.cli.terminalLinks.enabled
The terminal's file link detection now recognizes paths generated by Copilot CLI that reference files under the ~/.copilot/session-state/ directory. Previously, these paths were not resolved correctly because the built-in link detector did not know about the Copilot CLI session-state directory structure.
The link detector now handles both absolute and relative paths: absolute and tilde-prefixed paths open directly, while relative paths are resolved against the active session-state directory with a fallback to workspace folders.
This feature is enabled by default and can be toggled with the github.copilot.chat.cli.terminalLinks.enabled setting.
Permissions levels in Copilot CLI
Setting: chat.autopilot.enabled
You can configure permissions for local agent sessions in chat, to give agents more autonomy in their actions and reduce the number of approval requests. This release adds this capability to Copilot CLI sessions as well.
For Copilot CLI sessions, you can choose between the following permission levels:
• Default Permissions: uses your configured approval settings. Tools that require approval show a confirmation dialog before they run.
• Bypass Approvals: auto-approves all tool calls without showing confirmation dialogs and automatically retries on errors.
• Autopilot: (enabled by default in Insiders) auto-approves all tool calls, auto-responds to questions, and continues working autonomously until the task is complete. Enable Autopilot with chat.autopilot.enabled setting.Troubleshoot agent behavior with /troubleshoot (Preview)
Settings: github.copilot.chat.agentDebugLog.enabled, github.copilot.chat.agentDebugLog.fileLogging.enabled
There are several agent customization options available in VS Code. If your chat agents are not behaving as expected, it can be difficult to understand why. For example, when instructions, skills, or agents are not applied correctly or when a response is unexpectedly slow.
To help with this, we are introducing a new /troubleshoot skill that analyzes the agent debug logs directly in the conversation and provides insights into the agent's behavior. Type /troubleshoot in the chat input, followed by a question or description of the issue you're experiencing.
The skill reads the JSONL debug log files that are exported from the chat session and can help you understand why tools or subagents were used or skipped, why instructions or skills did not load, what contributed to slow response times, and whether network connectivity problems occurred.
To use the /troubleshoot skill in chat, enable the following settings and reload VS Code:
• github.copilot.chat.agentDebugLog.enabled: enables agent debug logging
• github.copilot.chat.agentDebugLog.fileLogging.enabled: writes debug logs to JSONL files on diskExport and import agent debug logs (Preview)
Setting: github.copilot.chat.agentDebugLog.enabled
The Agent Debug Logs panel in VS Code gives you a detailed view into the agent's behavior for a session, including tool usage, subagent decisions, and more. Previously, only the active session's debug information was available in the panel.
You can now export and import debug logs for agent sessions, allowing you to share them with others or analyze them offline. This is especially useful for troubleshooting and sharing insights about agent behavior.
Note: Importing files larger than 50 MB shows a warning dialog with the actual file size. Consider trimming the file or exporting a shorter session if you encounter this warning.
Image and binary file support for agents
Setting: chat.imageSupport.enabled, imageCarousel.explorerContextMenu.enabled
Agents can now read image files from disk and binary files natively, which allows you to use agents for a wider variety of tasks, such as analyzing screenshots, reading data from binary files, and more. Binary files are presented to the agent in a hexdump format.
When an agent or tool generates an image as output, such as a screenshot from the integrated browser, those images are now selectable in chat responses and can be opened in a dedicated image carousel view. Enable this functionality with the chat.imageSupport.enabled setting (Experimental).
When imageCarousel.explorerContextMenu.enabled (Experimental) is enabled, you can right-click image files or folders in the Explorer view and select Open Images in Carousel to browse images in the carousel view.
Note: The image carousel is currently experimental.
Automatic symbol references
When you copy a symbol, such as a class name, function, or method name, and paste it into chat, VS Code now automatically pastes it as a symbol reference #sym:Name. This gives the agent automatic context about the symbol, which enables it to complete tasks more quickly and efficiently.
If you want to paste a symbol without it being converted to a symbol reference, you can use the Paste as Text command, via Ctrl+Shift+V (Cmd+Shift+V on macOS).
Agent extensibility
Scale your agent setup across projects with shared customizations, and keep it secure with tighter control over MCP servers and plugins.
Customizations discovery in parent repositories
Setting: chat.useCustomizationsInParentRepositories
In monorepo setups, you often open a package or subfolder in VS Code instead of the repository root. Previously, chat customizations were only discovered from the current workspace folder. With the new chat.useCustomizationsInParentRepositories setting, VS Code can also discover customization files from parent folders up to the repository root.
This improved discovery makes it easier to share repository-wide guidance and tools across packages in a monorepo without needing to open the full repository as your workspace.
When discovery is enabled, it applies to all chat customization types, including always-on instructions such as copilot-instructions.md, AGENTS.md, and CLAUDE.md, along with instruction files, prompt files, custom agents, skills, and hooks.
Parent-repository discovery only applies when:
• Your open workspace folder is not itself a Git repository
• A parent folder contains the .git folder
• The parent repository is trusted with workspace trustSandbox locally running MCP servers
Running MCP servers locally can pose security risks as they have the same permissions as the user running VS Code, which enables them to access files or network resources they shouldn't need for their functionality.
To reduce this risk, you can now run locally configured stdio MCP servers in a sandboxed environment on macOS and Linux. Sandboxed servers have restricted file system and network access.
To enable sandboxing, set "sandboxEnabled": true for a server in your mcp.json file. When a sandboxed server needs access to an additional folder or domain, VS Code prompts you to grant that permission and updates the sandbox configuration for that mcp.json file. All servers defined in the same mcp.json file share that sandbox configuration.
Note: Sandboxing for locally running MCP servers is not currently available on Windows. Remote scenarios, such as WSL and SSH, continue to work.
Improved UI for MCP elicitation
When an MCP server requires additional information to complete a request, it can trigger an elicitation form to collect that information from the user. These elicitation forms now use the same UI as the Ask Questions tool, allowing for a more consistent and user-friendly experience when providing additional information to MCP servers.
Enable or disable plugins and MCP servers
Previously, plugins and MCP servers could only be disabled or enabled by installing or uninstalling them. This release introduces the ability to enable or disable plugins and MCP servers without uninstalling them.
Both plugins and MCP servers can now be enabled and disabled both globally and per-workspace. You can do this by opening the MCP or plugin page, or by right-clicking on their entries, either in the Extensions view or the Chat: Open Customizations view.
Automatic plugin updates
Setting: extensions.autoCheckUpdates
Plugins can now update automatically based on the extensions.autoCheckUpdates setting. Plugins from npm and pypi require approval to update, as updating these plugins might cause new code to be run on your machine.
Developer experience
Build and debug web apps without leaving VS Code, with a more capable integrated browser and streamlined editor workflows.
Integrated browser
Debug web apps with the integrated browser
The integrated browser lets you open web apps directly within VS Code, and now you can also start debugging sessions with the integrated browser. This allows you to interact with the web app, set breakpoints, step through code, and inspect variables without ever leaving VS Code.
We added a new editor-browser debug type that enables debugging of integrated browser tabs with both Launch and Attach configurations.
Most options from existing msedge and chrome debug configurations are supported, which makes migration often as simple as changing the type of an existing configuration in launch.json.
Integrated browser UX improvements
Setting: workbench.browser.pageZoom
• Context menus
Right clicking in a browser page now exposes common options such as copy/paste, open in new tab, and inspect.• Independent zoom level
The integrated browser now has its own zoom level, independent from the VS Code window's zoom. Use the Zoom In (Ctrl+=), Zoom Out (Ctrl+-), and Reset Zoom (Ctrl+Numpad0) shortcuts when the browser has focus, or use the actions from the URL bar menu. The zoom level is remembered per website, just like in a regular browser.Auto-close Find dialog after search
A new editor.find.closeOnResult setting lets you automatically close the Find control after a match is found and move focus back to the editor.
The setting is disabled by default, preserving the existing behavior where the Find dialog stays open after a search.
Terminal
Improved IME composition for the terminal
When typing with an Input Method Editor (IME) near the right edge of the terminal, the composition preview text could previously overflow outside the terminal boundaries. The composition view is now constrained to the available space between the cursor and the terminal's right edge. As you enter new characters, older characters are progressively hidden, keeping the preview text within the terminal viewport. This matches the behavior of other modern terminals such as Ghostty.
Note: On Windows, enable terminal.integrated.windowsUseConptyDll for the best IME composition experience.
Deprecated features and settings
New deprecations in this release
None
Upcoming deprecations
• Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden. This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.
Notable fixes
• xtermjs/xterm.js #5737: Fix ^C not working to end for newer fish + kitty keyboard protocol
• microsoft/vscode-python #25849: Prevent double/triple activation from two extensionsThank you
Issue tracking
Contributions to our issue tracking:
• @gjsjohnmurray (John Murray)
• @RedCMD (RedCMD)
• @IllusionMH (Andrii Dieiev)
• @albertosantini (Alberto Santini)Contributions to vscode:
• @12LuA (Luca): Fix: comment typo in authIssuers proposal PR #300899
• @DrSergei (Sergei Druzhkov): Fix variable updating after set response PR #299473
• @eliericha (Elie Richa): Make variable resolvers based on environment including launch config env PR #299752
• @jcansdale (Jamie Cansdale): fix: chunk multiline PTY writes on macOS to avoid 1024-byte buffer corruption PR #298993
• @jeanp413 (Jean Pierre): Support terminal creation on web worker extension host when there's remote authority PR #300897
• @JeffreyCA: Update Fig spec for Azure Developer CLI (azd) PR #299892
• @lammmab (Liam): hide "Ask for Edits" affordance when AI features are disabled PR #300563
• @murataslan1 (Murat Aslan): fix: wrap long docstrings in parameter hints widget PR #292258
• @SimonSiefke (Simon Siefke): fix: memory leak in MainThreadWorkspace PR #283450
• @tamuratak (Takashi Tamura): markdown-language-features: enhance document link handling with improved URI parsing and selection PR #296821
• @xingsy97 (xingsy97): Enrich terminal tool result metadata for AI agent workflows PR #300034Contributions to vscode-copilot-chat:
• @24anisha (Anisha Agarwal): Add conversation_id to search subagent telemetry PR #4326
• @aashna (Aashna Garg): Add sticky_threshold and sticky_override to router decision API PR #4359
• @dennyac (Denny Abraham Cheriyan): Add resolved model for events PR #4210
• @IanMatthewHuff (Ian Huff): More repo info telemetry check to support windows repo perf issues PR #4339Contributions to vscode-docs:
• @karlhorky (Karl Horky): Reword "Secondary Side Bar" docs for default-visible state PR #9540
• @mariaghiondea (Maria Ghiondea): Update publishing extensions doc to reflect soft delete changes PR #9544
• @putku45: Fix grammar in Refactoring documentation PR #9525; Fix typos in October 2017 release notes PR #9524; Fix grammar in JSON completions section PR #9526Contributions to node-pty:
• @ritschwumm: Fix typo in documentation comment PR #897Contributions to python-environment-tools:
• @lingyaochu (Xin Zhao): Only embed Windows resources for binary targets PR #374We 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.
Original source - Mar 9, 2026
- Date parsed from source:Mar 9, 2026
- First seen by Releasebot:Mar 9, 2026
- Modified by Releasebot:Mar 10, 2026
Visual Studio Code by Microsoft
Visual Studio Code 1.111
Microsoft releases Visual Studio Code 1.111, the first weekly Stable drop, introducing agent autonomy with Autopilot and per-session permissions, agent-scoped hooks, and debug events snapshots. It also enhances chat tips, AI terminal grouping, and basic localization IntelliSense for extensions.
Visual Studio Code 1.111
Release date: March 9, 2026
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Welcome to the 1.111 release of Visual Studio Code, the first of our weekly Stable releases! This release further enhances the agent experience with the following features:
- Agent permissions: adjust the autonomy level of your agents for each session.
- Autopilot (Preview): let your agents iterate autonomously until they complete their task.
- Agent-scoped hooks (Preview): attach pre- and post-processing logic for an agent without affecting other chat interactions.
- Agent troubleshooting: troubleshoot agent behavior and customizations with debug events snapshots.
Happy Coding!
If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible?
You can download the nightly Insiders build and try the latest updates as soon as they are available.Autopilot and agent permissions
Setting: chat.autopilot.enabled
The new permissions picker in the Chat view lets you control how much autonomy the agent has. The permission level applies only to the current session. You can change it at any time during a session by selecting a different level from the permissions picker.
You can choose from the following permission levels:
- Default Approvals: Uses your configured approval settings. Tools that require approval show a confirmation dialog before they run.
- Bypass Approvals: Auto-approves all tool calls without showing confirmation dialogs and automatically retries on errors.
- Autopilot (Preview): Auto-approves all tool calls, automatically retries on errors, auto-responds to questions, and the agent continues working autonomously until the task is complete.
Autopilot (Preview)
Autopilot is enabled by default in Insiders. You can activate it in Stable by enabling chat.autopilot.enabled.
Behind the scenes, the agent stays in control and iterates until it signals completion by calling the task_complete tool.
Note: Bypass Approvals and Autopilot bypass manual approval prompts and ignore your configured approval settings, including for potentially destructive actions like file edits, terminal commands, and external tool calls. The first time you enable either level, a warning dialog asks you to confirm. Only use these levels if you understand the security implications.
Learn more about Autopilot and agent permissions in our documentation.
Agent scoped hooks (Preview)
Setting: chat.useCustomAgentHooks
Custom agent frontmatter now supports agent-scoped hooks that are only run when you select the specific agent or when it's invoked via runSubagent. This lets you attach pre- and post-processing logic to specific agents without affecting other chat interactions.
To create an agent-scoped hook, define it in the hooks section of the YAML frontmatter of your .agent.md file.
To try this feature, enable the chat.useCustomAgentHooks setting. For more information, see Agent-scoped hooks in our documentation.
Debug events snapshot
To help you understand and troubleshoot agent behavior, you can now attach a snapshot of agent debug events as context in chat by using #debugEventsSnapshot. Use it to ask the agent about loaded customizations, token consumption, or to troubleshoot agent behavior.
You can also select the sparkle chat icon in the top-right corner of the Agent Debug panel to add the debug events snapshot as an attachment to the chat composer. Selecting the attachment opens the Agent Debug panel logs, filtered to the timestamp when the snapshot was taken.
Learn more about Debugging chat interactions in our documentation.
Chat tip improvements
The chat experience evolves rapidly and we want to make sure you are aware of new features and improvements. We redesigned the chat tips experience to better surface relevant tips at the right time in your chat journey.
Chat tips now guide you through a structured onboarding journey. Foundational tips, such as using the Plan agent and creating a custom agent are shown first. After you complete or dismiss the foundational tips, quality-of-life tips like experimental settings or generating Mermaid diagrams are shown in random order.
Additional chat tip improvements include:
- Tips are only displayed when a single chat session is visible, such as in the Welcome view or Chat view. If multiple chat editors are open, tips are hidden to reduce clutter.
- Tips include keyboard shortcuts to help you discover relevant key bindings.
- Tips are hidden after you act on or dismiss them for the current session.
- We added tips for the /init and /fork slash commands. The /init tip helps you discover the command for initializing project configuration, and the /fork tip introduces manual conversation forking, which lets you branch a conversation to explore different approaches.
AI CLI profile group in terminal dropdown (Experimental)
Setting: terminal.integrated.experimental.aiProfileGrouping
AI CLI terminal profiles, such as GitHub Copilot CLI, are now displayed in a dedicated group at the top of the terminal profile dropdown for improved discoverability. To enable this feature, turn on the terminal.integrated.experimental.aiProfileGrouping setting.
Extension authoring
Basic IntelliSense for localized strings in extension package.json files
VS Code supports localizing strings in an extension's package.json. This iteration, we added a few basic IntelliSense features that make working with these localized strings easier.
- Go to Definition: Jump to or peek at the definition of a localized string in the package.nls.json file.
- Find all References: See all the places a localized string is referenced in either the package.json or package.nls.json file.
Engineering
With the move to weekly Stable releases, we continue to improve our engineering processes to ship high-quality features at a faster pace.
Test plan item creation
We added a one-click experience for creating test plan items from feature request issues. This reduces the manual steps needed to set up structured testing plans for new features.
Verification step generation
As test plan items are assigned randomly to engineers, clear verification steps are crucial for efficient and effective testing. We added a button to generate verification steps on relevant issues. This helps ensure that issues have clear, structured steps for verifying fixes and features before they are closed.
Automatic PR media attachment to linked issues
When you merge a pull request that includes an image or GIF in its description, the media content is now automatically posted as a comment on the linked issue. This streamlines the verification process by making it easier to see the visual demonstration of a fix or feature directly on the issue.
Chat showcase pipeline
A new automated pipeline processes issues that are labeled with chat-showcase. When a showcase issue is identified, a corresponding chat tip issue is automatically created, making it easier to add tips for features.
Deprecated features and settings
New deprecations in this release
None
Upcoming deprecations
- Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden. This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.
Notable fixes
Thank you
Contributions to vscode :
- @cathaysia (cathaysia): fix(json.schemaDownload.trustedDomains): avoid always update json.sch… PR #298423
- @eliericha (Elie Richa): include debug extension host env in shell env (#_241078) PR #298276; Include remote debug extension host env in remote terminal shell env PR #299007
- @jaidhyani (Jai Dhyani): editor: add 'foldedLine' unit to cursorMove command PR #296106
- @neruthes (Neruthes 0x5200DF38): fix editor punctuation width PR #297741
- @RajeshKumar11: MCP Gateway: avoid blocking list calls on startup PR #298040
- @Rohan5commit (Rohan Santhosh): docs: fix duplicated wording in proposed API comment PR #298522
- @sanchirico (John Sanchirico): Fix chat terminal flicker during streaming PR #298598
Contributions to vscode-copilot-chat :
- @24anisha (Anisha Agarwal): Exempt Search Subagent tool result from write to disk PR #4219
- @arieluchka (Ariel Agranovich): docs: incorrect documented jaeger port. <------ easy fix PR #4251
- @bharatvansh (Ayush Singh): Avoid reporting subagent token usage to the context window widget PR #3515
Contributions to language-server-protocol :
- @dietrichm (Dietrich Moerman): Fix link to Neovim's LSP documentation PR #2236
- @MariaSolOs (Maria Solano): Update metamodel PR #2234
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.
Original source - Mar 4, 2026
- Date parsed from source:Mar 4, 2026
- First seen by Releasebot:Mar 5, 2026
- Modified by Releasebot:Mar 6, 2026
Visual Studio Code by Microsoft
February 2026 (version 1.110)
Microsoft releases February 2026 VS Code with extensive agent improvements, background agent controls, Claude integration and new agent plugins, plus debugging panels, session memory, context compaction, forked chats, and accessibility and UI upgrades.
February 2026 (version 1.110)
Release date: March 4, 2026
Downloads: Windows: x64
Arm64 | Mac: Universal
Intel
silicon | Linux: deb
rpm
tarball
Arm
snapWelcome to the February 2026 release of Visual Studio Code. This release makes agents practical for longer-running and more complex tasks, giving you more control and visibility, new ways to extend agents, and smarter session management.
• Agent plugins: install prepackaged bundles of skills, tools, and hooks from the Extensions view
• Agentic browser tools: let the agent drive the browser to interact with your app and verify its own changes
• Session memory: persist plans and guidance across conversation turns
• Context compaction: manually compact conversation history to free up context space
• Fork a chat session: create a new, independent session that inherits conversation history to explore alternative approaches
• Agent Debug panel: get real-time visibility into agent events, tool calls, and loaded customizations
• Chat accessibility: use chat to its fullest with screen reader improvements, keyboard navigation, and notification signals
• Create agent customizations from chat: generate prompts, skills, agents, and hooks directly from a conversation
• Kitty graphics protocol: render high-fidelity images directly in the integrated terminalHappy Coding!
If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible?
You can download the nightly Insiders build and try the latest updates as soon as they are available.Agent controls
Whether you are debugging an agent's behavior, tweaking approval flows, or handing work off to a background process, these updates give you more visibility and control over how agents run.Background agents
With background agents, you can hand off tasks to Copilot CLI, while still keeping track of them in VS Code. We have made several improvements to align the capabilities and experience of background agents with local and cloud agents.• Context compaction: Copilot automatically compacts the conversation history when the context window reaches its limit. You can now also manually trigger compaction for background agents with the /compact slash command.
• Use /slash commands: chat customization options like prompt files, hooks, and skills are now also available in background agent sessions as slash commands.
• Rename background agent sessions: you can now rename your background agent sessions to keep track of them more easily.Claude agents
Last month, we added Claude agents, enabling you to interact with the Claude Agent SDK using Claude models included in your GitHub Copilot subscription.This month, we've expanded this experience with new features and improvements:
• Steering and queuing to let you send follow-up messages mid-conversation to alter the agent's approach or to queue up additional requests.
• Session renaming
• Context window rendering with compaction
• Additional slash commands
◦ /compact for on-demand compaction
◦ /agents to manage custom agents
◦ /hooks to manage Claude hooks
• Add the getDiagnostics tool to let the agent access editor and workspace problems
• Significant performance improvementsMore improvements are planned. Share your feedback on GitHub!
Agent Debug panel (Preview)
With different agent customizations like hooks, skills, and custom agents, it can sometimes be difficult to understand what happens when you send a message to an agent. The Agent Debug panel gives you deeper visibility into your chat sessions and how your chat customizations are loaded.The Agent Debug panel shows chat events in real time, including chat customization events, system prompts, tool calls, and more. You can see exactly which prompt files, skills, hooks, and other customizations are loaded for a session, making it easier to understand and troubleshoot your agent configuration. This replaces the old Diagnostics chat action with a richer, more detailed view.
Open the panel from the Command Palette with Developer: Open Agent Debug Panel, or select the gear icon at the top of the Chat view and choose View Agent Logs.
The panel also includes a chart view that displays a visual hierarchy of events, so you can quickly understand the structure and sequence of what happens during a chat session.
This experience is still in preview, so try it out and share your feedback!
Note: The Agent Debug panel is currently only available for local chat sessions. Log data is not persisted, so you can only view logs for chat sessions from your current VS Code session.
Slash commands for enabling auto approval
You can now toggle global auto approve directly from the chat input using slash commands, without navigating to settings:• /autoApprove enables global auto approve for all tools
• /disableAutoApprove disables global auto approve/yolo and /disableYolo are aliases for the same commands.
CAUTION: Global auto approve skips all tool confirmation prompts, letting the agent run tools and terminal commands without waiting for your approval. This can speed up longer, multi-step tasks but means you won't have the opportunity to cancel potentially destructive actions. Make sure you understand the security implications before enabling it and consider using terminal sandboxing for additional protection.
Edit and ask mode changes
Setting: chat.editMode.hiddenAs agents have evolved, agent mode now handles everything edit mode can do and more, with better performance and reliability. Edit mode is now hidden from the agent picker by default, so users benefit from the most capable mode without having to choose between options. You can bring it back by disabling the chat.editMode.hidden setting.
Ask mode is now backed by a custom agent definition, making it a fully agentic experience. This resolves previous limitations, such as requiring a new session when switching between ask and agent mode.
Both changes demonstrate how to customize your own agents. If you prefer edit mode or want your own version of ask mode, create a custom agent that matches your needs by defining its tools, prompt, and language model. When you disable chat.editMode.hidden, you can select the View edit agent action in the agent picker to view the agent declaration that powers edit mode, which can serve as a starting point for your own custom agent.
Learn how to create custom agents in the custom agents documentation.
Ask questions tool
The askQuestions tool, which presents a question carousel UI during chat interactions, has been moved into VS Code core. This improves reliability when canceling requests and enables the tool to work consistently across different contexts, including subagents.When the carousel is active, you can now send a steering message without needing to reply to or dismiss pending questions first. This allows you to redirect the agent's response on the fly, even in the middle of a question sequence. Use the keyboard to navigate between questions with unassigned (next) and unassigned (previous).
Prevent auto-suspend during chat
VS Code now asks the operating system not to automatically suspend the machine while a chat request is running. You can step away from your computer without worrying about interrupting the agent's response.Note that closing the lid of an unplugged laptop still triggers suspension.
Agent extensibility
Agents are only as useful as the tools and customizations you give them. This release makes it easier to extend what agents can do, from installable plugin bundles to browser automation and new code-aware tools.Agent plugins (Experimental)
Settings: chat.plugins.enabled, chat.plugins.marketplaces, chat.plugins.pathsVS Code now supports agent plugins, which are prepackaged bundles of chat customizations. Plugins can contain skills, commands, agents, MCP servers, and hooks.
You can search and install agent plugins directly from the Extensions view within VS Code. Enter @agentPlugins in the search box or run the Chat: Plugins command from the Command Palette.
By default, VS Code retrieves plugins from the copilot-plugins and awesome-copilot repos. You can configure more sources via the following settings:
• chat.plugins.marketplaces: add additional plugin marketplaces by specifying GitHub or plain git repositories. The setting can also support Claude-style marketplaces such as anthropics/claude-code.
• chat.plugins.paths: register local plugin directories by specifying their paths and enabling or disabling them.Learn more about agent plugins in the agent plugins documentation.
Agentic browser tools (Experimental)
Setting: workbench.browser.enableChatToolsIn the previous release, we added a new integrated browser in VS Code desktop which lets you interact with web pages directly within the editor. But what if your agent could autonomously use this browser and validate changes to your website while it's building it?
In this release, we added a set of tools for agents to read and interact with the integrated browser. As the agent interacts with the page, it sees updates to page content and any errors and warnings in the console. The tools work out of the box without the need to install any extra dependencies.
• Page navigation: openBrowserPage, navigatePage
• Page content and appearance: readPage, screenshotPage
• User interaction: clickElement, hoverElement, dragElement, typeInPage, handleDialog
• Custom browser automation: runPlaywrightCodeThese tools give agents the ability to perform simultaneous authoring and verification of web apps and close the development loop for agents.
By default, pages opened by the agent run in private, in-memory sessions. This gives you control over what browsing data the agent can access. To give the agent access to a specific web page in the integrated browser, you can explicitly share the page with the agent to give temporary access and any saved data.
To try out the new tools, enable workbench.browser.enableChatTools and enable the browser tools in the chat tools picker.
Get started with the browser agent testing guide for a step-by-step tutorial.
Create agent customizations from chat
You can now generate agent customization files directly from a chat conversation by using new /create-* slash commands in agent mode:• /create-prompt: generate a reusable prompt file
• /create-instruction: generate an instruction file for project conventions
• /create-skill: extract a multi-step workflow into a skill package
• /create-agent: create a specialized custom agent persona
• /create-hook: create a hook configuration for lifecycle automationEach command guides you through the creation process and lets you choose between user-level (account-wide) or workspace-level (project-specific) storage.
The commands can also extract patterns from an ongoing conversation. For example, after debugging an issue over several turns, use /create-skill to capture the procedure as a reusable skill, or /create-instruction to turn corrections into project conventions.
You don't need to remember the exact slash command. You can also use natural language, such as "save this workflow as a skill" or "extract an instruction from this", and the agent recognizes your intent and starts the correct creation flow.
The same generation options are available from the quick pick menus for prompts, instructions, skills, and agents, indicated by a sparkle icon.
Tools for usages and rename
We have updated the usages -tool and also added a tool for rename. These tools reuse existing extension or LSP capabilities and allow agents to navigate and refactor code with high precision and best performance.Agents should automatically pick up these new tools. However, we have found that agents have a strong preference for using grep instead, which is inferior for this scenario. You can help the agent by explicitly #-mentioning the tool names, like Use #rename and change the name of fib to fibonacci or by setting up a SKILL.md file.
Smarter sessions
Long-running and multi-turn tasks work better when the agent remembers context, delegates research efficiently, and keeps your inline edits in sync. These improvements make sessions more resilient and context-aware.Session memory for plans
Plans created by the Plan agent now persist to session memory and stay available across conversation turns. When you ask for refinements, the agent builds on the existing plan instead of starting from scratch.The plan is also recalled after unrelated messages in the same session, so you can return to a plan without repeating context. During longer implementation work, the plan remains accessible in memory even when older conversation history is compacted to free up context space.
Context compaction
As a conversation grows, the accumulated messages and context can fill up the model's context window. Context compaction summarizes the conversation history to free up space, so you can continue working in the same session without losing important details.VS Code automatically compacts the conversation when the context window reaches its limit, but you can also trigger compaction manually. Manual compaction is available for local, background, and Claude agent sessions. To manually compact, use one of the following methods:
• Type /compact in the chat input field. Optionally, add custom instructions after the command to guide how the summary is generated, for example /compact focus on the database schema decisions.
• Select the context window control in the chat input box, and then select Compact Conversation.Learn more about context compaction in the documentation.
Codebase search with Explore subagent
Setting: chat.exploreAgent.defaultModelThe Plan agent now always delegates codebase research to a dedicated Explore subagent. Explore is a read-only agent that uses only search and file read tools, and focuses on fast, parallelized codebase exploration. By offloading research to Explore, the Plan agent can produce plans that reference specific files and code paths in your workspace.
Explore runs on fast models by default (Claude Haiku 4.5, Gemini 3 Flash) to keep research quick while the Plan agent uses the full model for planning. You can override the model with the chat.exploreAgent.defaultModel setting. Hover over the explore task in chat to see which model is being used for research.
Note: Explore is not directly invokable as a standalone agent. It is only available as a subagent used on-demand.
Inline chat and chat session
When an agent session already changed a file, inline chat now always queues new messages into that session instead of making changes in isolation. This ensures that the full context is used and is also useful when reviewing agent edits.Fork a chat session
You can now fork a chat session to create a new, independent session that inherits the conversation history from the original. This is useful when you want to explore an alternative approach, ask a side question, or branch a long conversation in a different direction without losing the original context.There are two ways to fork a session:
• Fork the entire session: type /fork in the chat input box to create a new session with the full conversation history.
• Fork from a checkpoint: hover over any chat request and select Fork Conversation to create a new session that includes only the conversation up to that point.The forked session is fully independent—changes in one session do not affect the other. Learn more about forking chat sessions.
Chat experience
Small refinements to the chat interface add up: a cleaner model picker, less visual clutter from tool output, and notifications that reach you even when you are heads-down in another file.Redesigned model picker
We have redesigned the language model dropdown to improve selecting the right model for the task. The new dropdown organizes models into clear sections:• Auto is always shown at the top of the list.
• Featured and recently used models appear next. Up to four recently used models are shown alongside featured models curated for your account. As you use models, they move into this section automatically.
• Other models is a collapsible group that contains the remaining available models. Expanding it also reveals the Manage Models option at the bottom.
• A search box lets you quickly filter models by name.Each model entry shows a rich hover with model details such as capabilities and context window size. Models that are unavailable on your current GitHub Copilot plan are also shown but are not selectable.
Discover features with contextual tips (Experimental)
Setting: chat.tips.enabledVS Code now shows contextual tips in the Chat view to help you discover features and get the most out of your AI coding experience. Tips appear when you start a new chat session and are tailored to your usage patterns. To avoid being overwhelming, only features you haven't tried yet are suggested, making them relevant and actionable.
Tips cover a variety of capabilities including:
• Creating custom agents, prompts, and skills
• Using message queueing and steering
• Switching to better models
• Enabling experimental features like YOLO mode and custom thinking phrasesUse the navigation controls to browse through available tips, or dismiss individual tips you're not interested in. Tips automatically hide once you've used the suggested feature. You can disable tips entirely with chat.tips.enabled.
New tips are added regularly as features are released, so check back often for fresh suggestions.
Custom thinking phrases
Settings: chat.agent.thinking.phrasesThe loading text that is shown during reasoning or during tool calls is now customizable. You can use the predefined custom phrases to complete the existing default phrases with the replace mode, or have custom phrases be an addition to the existing default phrases with append.
This setting lets you personalize the chat loading experience.
Collapsible terminal tool calls
Settings: chat.tools.terminal.simpleCollapsibleTerminal tool invocations in agent mode are now displayed as collapsible sections. Instead of long terminal outputs cluttering the conversation, each terminal command appears as a summary header that you can expand to reveal the full output. This reduces visual noise and makes it easier to scan through multi-step agent interactions. This functionality can be disabled with the chat.tools.terminal.simpleCollapsible setting.
OS notifications for chat responses and confirmations
Settings: chat.notifyWindowOnResponseReceived, chat.notifyWindowOnConfirmationPreviously, OS notifications for chat responses and confirmation requests only appeared when VS Code was not focused. This meant that if you were actively working on another task in VS Code, you might miss important updates like when a response is received or when the agent needs your confirmation to proceed.
You can now configure these notifications to appear even when the window is in focus by setting the settings value to always.
Inline chat hover mode
Setting: inlineChat.renderModeInline chat is transitioning away from the "in-between lines" UI to a hover-based UI. You can enable it via inlineChat.renderMode, which makes the inline chat input more like the rename experience. Once a prompt is submitted, progress and results are shown in the upper right corner.
Inline chat affordance
Setting: inlineChat.affordanceTo provide an easier way of starting inline chat, we added two kinds of affordances that show alongside your selection. They combine with the lightbulb and should not get in your way.
The inlineChat.affordance setting has three possible values:
• off No affordance is shown on text selection
• editor Show a menu in the editor alongside the selection
• gutter Show a menu in the editor gutter (line number area) next to the selectionAccessibility
This release improves screen reader support, keyboard navigation, and awareness of chat interactions so that every developer can work effectively with VS Code's AI features.Toggle thinking content in the accessible view
Screen reader users can now toggle the inclusion of thinking content in the chat response accessible view unassigned . This lets you choose whether to include the model's reasoning process when reading responses, providing flexibility to either follow the full chain of thought or focus only on the final output.Question carousel accessibility
The chat question carousel is now fully accessible to screen reader users:
• Questions are announced with their position (for example, "Question 1 of 3")
• Use Alt+N and Alt+P to navigate between questions
• Use unassigned to toggle focus between the question carousel and chat input
• In screen reader mode, focus no longer automatically moves to prevent disruptionNotifications for chat questions and confirmations
Settings: chat.notifyWindowOnConfirmation, accessibility.signals.chatUserActionRequiredWhen chat asks a question or requires confirmation, VS Code now plays an accessibility signal and shows an OS notification when enabled. This helps you stay aware of pending actions even when working in another window.
Keybinding to toggle TODO list focus
Use unassigned to quickly toggle focus between the agent TODO list and the chat input. This is particularly helpful for screen reader users to get an overview of pending tasks and return to the chat input.Cursor position remembered in accessible view
When you close the accessible view while content is streaming (such as during a chat response), your cursor position is now preserved when you reopen it. This prevents the cursor from jumping back to the top and lets you continue reading from where you left off.Find and filter accessibility help
Press Alt+F1 in any find or filter dialog to open contextual accessibility help. This includes help for:
• Editor find and replace
• Terminal find
• Search across files
• Output, Problems, and Debug Console filtersThe help content explains available keyboard shortcuts, navigation patterns, and context-specific behaviors. Find widgets also announce "Press Alt+F1 for accessibility help" when focused (controlled by accessibility.verbosity.find).
Quick input screen reader improvements
The Go to Line dialog ( Ctrl+G ) and other quick input boxes now work better with screen readers:
• Characters are announced as you type
• Arrow key navigation works correctly within the input field
• Proper announcements when navigating list items
• Line and column position announced after navigationSteering indicator for screen readers
When you send a steering message while a response is streaming, screen reader users now receive an aria-status announcement indicating that steering has occurred.Accessibility skill
A new built-in accessibility skill helps ensure new features include proper accessibility support. When you ask the agent to create a new feature and make it accessible, it automatically references accessibility guidelines and patterns.Checkmarks in chat
Settings: accessibility.chat.showCheckmarksThis iteration, in an effort to simplify the chat view and make it more consistent, checkmarks are now removed by default in front of tool calls and collapsible pieces. The accessibility.chat.showCheckmarks will re-enable checkmarks throughout the chat if you'd like to have them as indicators in the chat.
Editor Experience
Modal editors (Experimental)
Settings: workbench.editor.useModal, extensions.allowOpenInModalEditorWe are experimenting with a new modal editor experience for editors that you typically open briefly and then return to your active task. A modal editor floats on top of the editor without impacting the layout of your editor tabs. To close the modal editor, press Escape. The modal has an action to move the editor back into an editor tab, as well as an action to maximize the modal experience.
The modal experience applies to the following editors:
• Settings
• Keyboard shortcuts
• Profiles management
• AI and Language models management
• Workspace trust managementSet workbench.editor.useModal to some for opting into this experience.
Note: the Settings editor and Keyboard Shortcuts editor show a button to open the associated JSON file as a text editor
Another setting extensions.allowOpenInModalEditor expands the use of modal editors to extensions. This experience is still a work in progress and will likely change in the future but we wanted to make it available for feedback now:
In this modal editor, a control in the title bar allows you to navigate between all extensions from the list you had in the Extensions view. The same applies to MCP servers. Future versions will likely see the extensions list and search functionality also move into the modal. Try it out and share your feedback.
Configurable notification position
Setting: workbench.notifications.positionPreviously, VS Code notifications appeared in the bottom-right corner of the screen. With the default position of the Chat view also on the right, notifications could obscure the chat interface.
You can now configure the position of notifications to be either top-right , bottom-right, or bottom-left . The default remains bottom-right . This setting enables you to choose the best position for your workflow.
Settings editor cleanup
We have moved the VS Code chat settings into their own top-level entry in the Settings editor with sub-categories. GitHub Copilot Chat extension entries remain in their own entry under Extensions.The displayed list of settings is also scoped to the selected table of contents entry, meaning that once you select a table of contents entry, you cannot accidentally scroll into the next entry anymore.
Lastly, the experimental settings have been moved to the end of each section, so that stabilized settings appear first.
Code Editing
Long-distance next edit suggestions
Next edit suggestions (NES) extend ghost text by suggesting edits not just at your cursor, but also nearby, anticipating what you'd change next. We've been continuing to advance this experience with long-distance next edit suggestions, which extend NES to predict and suggest edits anywhere in your file, not just near your current cursor position.Read the blog post on long-distance next edit suggestions to learn more about how it was built, from creating the training dataset, to refining the UX, evaluating success, and more. Make sure you have NES ( github.copilot.nextEditSuggestions.enabled ) and extended NES range ( github.copilot.nextEditSuggestions.extendedRange ) enabled in VS Code.
NES eagerness
The Copilot Status Bar item now includes an eagerness option for next edit suggestions. This option lets you choose between getting more suggestions that might be less relevant, or fewer suggestions that are more likely to be useful.Initially, this option primarily affects the timing of suggestions. As the NES model evolves, it will increasingly take your eagerness preference into account for more fine-tuned suggestions.
Source Control
AI co-author attribution for commits
Setting: git.addAICoAuthorVS Code can automatically append a Co-authored-by: trailer when you commit code that includes AI-generated contributions. Additionally, Git blame hover tooltips now show co-authors from commit trailers, including non-AI Co-authored-by entries.
Configure git.addAICoAuthor with one of these values:
• off (default): does not add a co-author trailer
• chatAndAgent: adds the trailer for code generated with Copilot Chat or agent mode
• all: adds the trailer for all AI-generated code, including inline completionsVS Code only adds co-author trailers for commits you make from within VS Code. This setting does not modify commits made in external Git tools or the command line.
Debugging
JavaScript Debugger
Custom property replacements
If an object has a method defined using Symbol.for('debug.properties'), then those properties will be shown by default in the debugger. This allows you to provide a more comprehensible view of complex objects.Emulate focused window and event listener breakpoints
Previously, when debugging a browser, you could set breakpoints in the Event Listener Breakpoints view. We have renamed this view to Browser Options.We added an extra option to Emulate a focused page. When checked, moving your focus out of the browser window no longer causes the browser element to lose focus. This is useful for debugging elements that depend on hover or focus states.
Terminal
Kitty graphics protocol
Settings: terminal.integrated.enableImages, terminal.integrated.gpuAcceleration, terminal.integrated.windowsUseConptyDllThe VS Code terminal now supports the Kitty graphics protocol, enabling high-fidelity image rendering directly in the terminal. Programs that support this protocol can transmit and display images with a rich set of capabilities:
• Image formats: PNG, 24-bit RGB, and 32-bit RGBA
• Display layout: scale images to specific column/row dimensions, crop source regions, apply sub-cell pixel offsets, and control z-index stacking order
• Transmission: direct inline base64 with chunked transfer and zlib compression support
• Image management: transmit and display in one step, store images and place them later at different positions, delete by ID or all at once, and re-transmit to update existing images
• Cursor control: choose whether the cursor moves past the image or stays in place after rendering
• Terminal integration: images scroll with text, and are properly cleaned up on terminal reset or clearTo enable image rendering, set terminal.integrated.enableImages to true and ensure terminal.integrated.gpuAcceleration is set to on or auto. On Windows, you also need to enable terminal.integrated.windowsUseConptyDll.
Tools like kitten icat (macOS/Linux) or the VT CLI can be used to display images in the terminal.
Note: Some Kitty graphics protocol features are not yet supported, including animations, relative placements, Unicode placeholders, and file-based transmission. See the xterm.js discussion for the most up-to-date implementation status.
Ghostty support for external terminal
Settings: terminal.external.osxExec, terminal.external.linuxExecGhostty is now supported as an external terminal on macOS and Linux. You can set it as your default external terminal using the terminal.external.osxExec setting on macOS or terminal.external.linuxExec on Linux.
Once configured, commands like Terminal: Open New External Terminal and debug configurations that launch in an external terminal will open in Ghostty.
Workspace folder selection for external terminals
When you open an external terminal in a multi-root workspace using Ctrl+Shift+C or the Terminal: Open New External Terminal command, VS Code now prompts you to select a workspace folder. The selected folder is used as the working directory for the external terminal.Terminal sandboxing improvements (Preview)
Settings: chat.tools.terminal.sandbox.enabled, chat.tools.terminal.sandbox.linuxFileSystem, chat.tools.terminal.sandbox.macFileSystem, chat.tools.terminal.sandbox.networkTrusted domains can now be selected for network isolation by enabling allowTrustedDomains in chat.tools.terminal.sandbox.network. Improved detection of restricted domains, with clear feedback indicating which domain is blocked.
No installation is required to enable terminal sandboxing on macOS, and on Linux you can enable without installing ripgrep.
Languages
Unified JavaScript and TypeScript settings
To prepare for the upcoming TypeScript 6.0 and 7.0 releases, we've consolidated and cleaned up our built-in JavaScript and TypeScript setting IDs. Previously many of these settings had duplicate javascript.* and typescript.* versions. This is because these settings are from before we added a standard approach to language-specific settings. Some of the settings names were also inconsistent.Now all of these settings have been moved under the js/ts.* prefix. This means that by default you only need to update a single setting value to change the behavior in both JavaScript and TypeScript files. You can use language-specific settings if you want different behavior in JavaScript and TypeScript files.
For example, instead of setting:
"javascript.format.enable": false,
"typescript.format.enable": trueYou can now use language-specific overrides with the unified setting.
The old javascript.* and typescript.* settings continue to work but are now marked as deprecated and will be overridden if the new unified js/ts settings are set.
We understand this is a big change, however we think it's the right one for the long term quality of VS Code. The unified settings make it easier to change JavaScript and TypeScript settings, and also enable support for modern options such as language-specific settings.
Python
Python Environments extension rolling out to all users
The Python Environments extension is now rolling out to all users after a year in preview. The extension brings a unified interface for managing Python environments, packages, and interpreters directly in VS Code, regardless of whether you use venv, conda, pyenv, poetry, or pipenv.Key capabilities include:
• Quick Create: Create an environment with a single click using your default manager and the latest Python version
• Python Projects: Assign environments to specific folders for monorepos and multi-service workspaces
• uv integration: Faster environment creation and package installation when uv is installed
• Built-in package management: Search, install, and uninstall packages from the Environment Managers view
• Portable settings: Environment configurations use manager types instead of hardcoded paths, making settings.json portable across machinesYou can expect the extension to be enabled automatically over the next few weeks, or you can opt in immediately with the python.useEnvsExtension setting.
For more details, read the announcement blog post or see the Python environments documentation.
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:
• Multiple pull request and issue descriptions can be open at once.
• The setting githubPullRequests.autoRepositoryDetection can be set to true to include repositories that are outside of the workspace.
• Repositories without matching issues are now hidden in the Issues view.Review the changelog for the 0.130.0 release of the extension to learn about everything in the release.
Extension Authoring
Webviews and Custom Editors can now use ThemeIcons for their icon path
Webview Panels and custom editors can now use a ThemeIcon as their editor tab icon.Portable mode detection API finalized
The env.isAppPortable API is now stable and available to all extensions without requiring enabledApiProposals.Use this API to detect whether VS Code is running in portable mode, which is enabled when the app runs from a folder containing a data directory.
Proposed APIs
Chat item controller API
We continued to improve the chat session API. This API lets extensions contribute items to VS Code's built-in chat sessions view. Notable changes this iteration include:
• Added ChatSessionItemControllerNewItemHandler so that controllers can specify the URI used for new sessions.
• Added ChatSessionProviderOptions.newSessionOptions which sets the default options for new sessions.We also significantly optimized the API's implementation to support large numbers of sessions.
Engineering
TypeScript-Go for VS Code engineering
We've continued adopting TypeScript-Go (tsgo) for development work in the vscode repo.As of this iteration, we default the vscode workspace to using TSGo for development. We've already noticed performance improvements from this, and it also helps us test TSGo's language tooling.
We now also use TypeScript-Go (tsgo) to compile VS Code's built-in extensions during development. As a result, each of our built-in extensions is now built and fully typechecked in under a second.
Extension bundling with esbuild
We've migrated most of our built-in extensions to use esbuild instead of webpack for bundling. Esbuild is used for both bundling the desktop and web versions of these extensions.This migration has both simplified and sped up our builds. There are only a handful of extensions left to migrate and we hope to finish this work in March.
Deprecated features and settings
New deprecations in this release
• Edit Mode is officially deprecated as of VS Code version 1.110. Users can temporarily re-enable Edit Mode via VS Code setting chat.editMode.hidden. This setting will remain supported through version 1.125. Beginning with version 1.125, Edit Mode will be fully removed and can no longer be enabled via settings.Upcoming deprecations
NoneNotable fixes
• vscode#251722: Inline actions on extension provided tree-view items withing the visible scroll area even when "workbench.list.horizontalScrolling": trueThank you
Issue tracking
Contributions to our issue tracking:
• @gjsjohnmurray (John Murray)
• @RedCMD (RedCMD)
• @IllusionMH (Andrii Dieiev)
• @tamuratak (Takashi Tamura)
• @robotsnh (robotsnh)(Additional contribution and PR acknowledgements follow in the release notes.)
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.
Original source - Feb 4, 2026
- Date parsed from source:Feb 4, 2026
- First seen by Releasebot:Feb 13, 2026
- Modified by Releasebot:Feb 26, 2026
Visual Studio Code by Microsoft
January 2026 (version 1.109)
January 2026 marks a major VS Code release focused on multi‑agent development with faster chat, richer agent sessions, improved customization, Claude integration, memory and indexing boosts, and an integrated browser for in‑editor testing.
Update 1.109.1: The update addresses these security issues.
Update 1.109.2: The update addresses an issue with chat.
Update 1.109.3: The update addresses these issues and introduces several notable features:
• Message steering and queueing: send follow-up messages while a request is still running
• Agent hooks: run custom shell commands at key agent lifecycle points
• Claude compatibility: reuse your Claude configuration files directly in VS Code
• Use skills as slash commands: invoke agent skills on demand from chat
Update 1.109.4: The update addresses these issues.
Update 1.109.5: The update addresses these issues and adds these features to improve background agents:
• Support for slash commands, including prompt files, hooks, and skills
• The ability to rename background agent sessions
• Kitty keyboard support is now available to all users
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Welcome to the January 2026 release of Visual Studio Code. In this release, we are further evolving VS Code to make it the home for multi-agent development.
• Chat UX - chat just feels better and snappier with faster streaming, improved reasoning results, and a revamped editor inline chat
• Agent Session Management - it's now easier to delegate tasks to agents across local, background, and cloud and jump in when needed
• Agent Customization - build your own workflows using agent orchestrations, and have consistent results with Agent Skills and organization-wide customizations
• Agent Extensibility - reuse your knowledge with Claude agent support and new Anthropic model capabilities, and enjoy rich chat interactions with MCP Apps
• Agent Optimizations - agents work smarter with Copilot Memory and experience faster code search with external indexing
• Agent Security & Trust - feel confident running terminal commands with sandboxing and effective auto-approval rules
• Workbench & productivity - test your apps without leaving the editor with the new integrated browser
• Terminal Enhancements - quality-of-life improvements to make your terminal experience smoother and more reliable
• Coding & Editor - several impactful improvements to make everyday coding smoother
• Extensions & API - new capabilities for extension authors to build richer experiences
Happy Coding!
Watch our VS Code 1.109 release highlights video to hear about these features!
If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible? You can download the nightly Insiders build and try the latest updates as soon as they are available. Download Insiders.
Upcoming events
Agent Sessions Day
Join us for Agent Sessions Day on Feb 19th to see these latest updates demoed live! Discover how VS Code has evolved into a unified agent UX, while staying true to its core values of openness, extensibility, and developer choice.
Chat UX
Faster responses, clearer reasoning, and less friction. This release brings streaming improvements that show progress as it happens, a revamped inline chat that stays out of your way, and better visibility into what the model is thinking, so you can stay in flow while the AI works.
Message steering and queueing (Experimental)
Setting: chat.requestQueuing.enabled, chat.requestQueuing.defaultAction
Update 1.109.3: When working on longer tasks, you often think of the next task before the current or notice the agent heading in the wrong direction. Previously, you had to wait for a response to complete or cancel it entirely. Now you can send follow-up messages while a request is still running.
While a request is in progress, the Send button changes to a dropdown with three options:
• Add to Queue: your message waits and sends automatically after the current response completes.
• Steer with Message: signals the current request to yield after finishing the active tool execution, then processes your new message immediately. Use this to redirect the agent when it's heading in the wrong direction.
• Stop and Send: cancels the current request entirely and sends your new message immediately.
When you have multiple pending messages, drag and drop them to change the order in which they are processed.
Use chat.requestQueuing.defaultAction to set the default action of the Send button to steer (default) or queue.
Learn more about message steering and queueing in the documentation.
Anthropic models now show thinking tokens
Settings: chat.thinking.style, chat.agent.thinking.collapsedTools, chat.agent.thinking.terminalTools, chat.tools.autoExpandFailures
Many of you are using Anthropic's Claude models in VS Code. These models now support thinking tokens to give you more visibility into the model's reasoning process.
In this release, we've enhanced the chat UX to surface thinking tokens more effectively. More information, less noise!
• Choose between detailed or compact thinking styles to suit your preference (chat.thinking.style).
• You'll see the model's thought process interleaved with tool calls and responses (chat.agent.thinking.terminalTools).
• Failing tool calls automatically expand to show more context (chat.tools.autoExpandFailures).
• Various visual enhancements to make following model activity more intuitive, like scrollable thinking content and shimmer animations.
Mermaid diagrams in chat responses
Chat responses can now render interactive Mermaid diagrams with the renderMermaidDiagram tool. This lets models use flowcharts, sequence diagrams, and other visualizations to visually break down complex concepts. The diagrams are interactive, so you can pan and zoom to explore them in detail, or open them in a full-sized editor for easier viewing.
Interact with Mermaid diagrams using the following controls:
• Pan and zoom - Hold Alt/Option and use the mouse wheel to zoom, or pinch to zoom on a trackpad. Hold Alt/Option and drag to pan around the diagram.
• Click to zoom - Hold Alt/Option and click to zoom in. Add Shift to zoom out.
• Open in editor - Use the button to open the diagram in a full-sized editor for better viewing of larger diagrams.
• Copy source - Right-click on a diagram and select Copy diagram source to copy its Mermaid source code.
Ask Questions tool (Experimental)
Setting: chat.askQuestions.enabled
Instead of making assumptions when something is unclear, the agent can now use the askQuestions tool to ask clarifying questions during chat conversations. It presents one or more questions directly in chat with single/multi-select options, free text input, and recommended answers highlighted for quick decisions.
Use the keyboard to navigate between answers with Up and Down, or type the number that matches the corresponding answer (use Escape to skip remaining questions).
We have revamped our Plan agent to also take advantage of the askQuestions tool to make sure your implementation plans align with your expectations and beyond!
Plan agent
The built-in Plan agent lets you create a structured implementation plan before starting to code. This helps ensure that the AI understands the task requirements and produces high-quality code that meets your expectations.
• The Plan agent now follows a structured 4-phase iterative workflow that produces higher-quality implementation plans:- Discovery - Autonomously explores your codebase, searching for relevant files and understanding project structure.
- Alignment - Pauses to ask clarifying questions before committing to a plan, catching ambiguities early.
- Design - Drafts a comprehensive implementation plan with clear steps, file locations, and code snippets.
- Refinement - Adds verification criteria and documents decisions made during planning.
• You can now invoke the Plan agent by typing /plan in chat, followed by your task description. This provides a quick entry point for planning complex tasks before switching to implementation.
Context window details
To keep track of how the model is using its context window, you can now see a context window indicator in the chat input area. Hover over the indicator to see a breakdown of token usage by category.
Inline chat UX revamp (Preview)
Settings: inlineChat.affordance, inlineChat.renderMode
We continue to revamp the inline chat experience and have two preview features:
• An affordance that makes it easier to trigger inline chat when selecting text (inlineChat.affordance)
• A lightweight and easier-to-use contextual rendering (inlineChat.renderMode)
Model descriptions in the model picker
On hover or keyboard focus of a model in the model picker, you can now see its details at a glance.
Terminal command output
Richer command details
To make it clearer what command is being run, the terminal tool now shows additional details:
• Syntax highlighting for inline Node, Python, and Ruby
• Working directory
• Description of the command's intent
Output streaming
Terminal output now automatically expands when a command takes time to execute, giving you immediate visibility into what's happening. Quick commands stay collapsed to reduce visual noise.
Interactive input
Embedded terminals are now fully interactive. You can focus the terminal and type directly, which is useful when a command prompts for confirmation or requires user input. The cursor is now visible, making it clear when a terminal is ready for input.
Delete all hidden terminals
The Hidden Terminals item in the terminal panel now includes a delete icon to clear all hidden terminals with one action.
Tell us what you think about our new themes (Experimental)
We are developing new experimental VS Code Light and VS Code Dark themes to increase focus and bring a sense of elevation and lightness to the UI, through the use of shadows and transparency. These themes are a work-in-progress.
Let us know what works and where we can improve by giving feedback in the vscode repository.
VS Code Dark (Experimental):
VS Code Light (Experimental):
Edit mode is now hidden (Experimental)
Setting: chat.editMode.hidden
Edit mode is now hidden by default from the agent dropdown in chat. Using agents provides a superset of edit mode capabilities and produces better results for code editing tasks.
If your organization has disabled agent mode, edit mode remains visible in the agent dropdown. You can also manually restore edit mode by disabling the chat.editMode.hidden setting.
Agent Session Management
Delegate, monitor, and switch without losing focus. You can now run multiple agent sessions in parallel across local, background, and cloud environments, all from a single unified view. Jump between sessions, track progress at a glance, and let agents work independently while you stay productive.
Switching and delegating between agent types
VS Code makes it easy to start agent sessions across different environments: locally in VS Code, in the background, in the cloud, or with other agent providers. We've made it easier to switch between these different agent types by introducing a new session type picker in the chat input area.
The picker serves two main purposes:
• Choose the type of agent session you want to start
• Hand off an ongoing session to a different agent type (for example, plan a task locally and implement in the cloud)
Keeping track of agent sessions
Keeping track of your active agent sessions is essential when working with multiple agents, especially when you have multiple parallel session across different environments.
Agent Sessions view
We've further improved the Agent Sessions view in VS Code to make this task easier:
• Resize the sessions list when showing side-by-side
• Multi-select sessions to perform operations in bulk
• Better stacked view to improve navigating sessions and applying filters
Agent status indicator
Settings: chat.agentsControl.enabled, chat.agentsControl.clickBehavior
In situations where you have multiple active sessions, it's important to quickly see which sessions need your attention. We added an agent status indicator (chat.agentsControl.enabled) in the VS Code command center to provide visibility into agent session updates.
The indicator shows different types of status information: in-progress, unread, and sessions that need your attention. Select the indicator to quickly open and filter the sessions list.
We have also updated the chat button in the command center to let you configure its behavior when clicked (chat.agentsControl.clickBehavior). By default, it now cycles through the different Chat view states: sidebar, maximized, or hidden.
Subagents
Setting: chat.customAgentInSubagent.enabled
Agents can run subtasks using subagents to break down complex tasks into smaller parts. The nice thing about subagents is that they operate in their own dedicated context window and don't add up to the main agent's context window.
Subagents can now run in parallel, which can significantly speed up tasks that can be split into independent tasks.
To provide more visibility into what the different subagents are doing, the chat conversation now shows details such as what tasks it's doing, the custom agent used for the subagent, and whichever tool is currently used. You can expand the subagent information to show the full details of what it's doing, including the full initial prompt it was provided with and the result it returned.
Search subagent (Experimental)
Setting: github.copilot.chat.searchSubagent.enabled
Searching your codebase is typically a task that can involve multiple iterations and which can quickly add up to your context window limit. We added support for a search subagent that runs in an isolated agent loop, enabling it to iteratively refine searches, try multiple queries, and explore different parts of your workspace.
This improves the quality of search results for complex queries where a single search isn't sufficient. It also preserves the main agent's context window and enables it to continue working while the search subagent does its job.
Cloud agents
When you start a new cloud agent session, you now have more options to configure your session. Choose from different models, use one of your custom agents, or select from available partner agents (where available).
• Model selection for cloud agents
• Third-party coding agents (Preview): If you have third-party coding agents, such as Claude and Codex, configured as part of your GitHub Copilot subscription, VS Code will show these options after selecting the cloud agent type.
• Custom agents for cloud agents: Choose from custom Agents available in your target GitHub repository default branch.
• Multi-root workspace and empty workspace improvements: When in a multi-root workspace window or empty workspace window, you can now select the folder to be used for the cloud agents.
• Checkout always shows: The Checkout option for agent sessions now shows even when the GitHub Pull Requests extension is not installed. When you select this action, it installs GitHub Pull Requests if needed, and then hands off to it to perform the checkout.
Background agents
Aligning with local and cloud agents, we have added several improvements to background agents:
• Custom agents for background agents
• Attach images as context
• Multi-root workspace improvements: When in a multi-root workspace, you can now select the folder to be used in background agents.
• Auto-commit at the end of each turn: We have updated the background agent loop to commit the changes to the Git worktree at the end of each turn. This enabled us to remove the Keep/Undo actions for background sessions and simplify how changed files are shown in the working set.
• /slash commands for background agents: Update 1.109.5: Prompt files, hooks, and skills are now available to background agents as slash commands in chat.
• Rename background agents sessions: Update 1.109.5: You can now rename your background agent sessions to keep track of them more easily.
Agent sessions welcome page (Experimental)
Setting: workbench.startupEditor
Last but not least, we're experimenting with a new welcome page and need your help to make it great. When you have multiple agents working in parallel, keeping track of recent sessions matters. The new welcome page surfaces your agent sessions front and center.
Enable the welcome page as your startup editor by setting workbench.startupEditor to agentSessionsWelcomePage. Let us know what you think and send us feedback in the vscode repository!
Agent Customization
Shape how AI works with your codebase and share it across your team. Agent Skills now let you package domain expertise into reusable workflows, organization-wide instructions ensure consistency, and new controls give you fine-grained control over how and when agents get invoked.
Agent hooks (Preview)
Setting: chat.hooks.enabled
Update 1.109.3: Hooks let you execute custom shell commands at key lifecycle points during agent sessions. Unlike instructions or custom prompts that guide agent behavior, hooks run your code deterministically with guaranteed outcomes. Use them to enforce security policies, automate code quality checks, create audit trails, or inject project-specific context.
VS Code supports eight hook events that fire at specific points during a session, including PreToolUse and PostToolUse for intercepting tool calls, SessionStart and Stop for session lifecycle, and SubagentStart and SubagentStop for tracking nested agent usage.
VS Code uses the same hook format as Claude Code and Copilot CLI, so you can reuse existing hook configurations across tools.
To get started, use the /hooks slash command in chat to configure a new hook, or create a hook file manually. For example, you can create a PreToolUse hook that runs a linter after every file edit, or block dangerous terminal commands before they execute.
Learn more about agent hooks in the documentation.
Use skills as slash commands
Agent Skills are now available as slash commands in chat, alongside prompt files. Type / in the chat input to see all available skills and prompts, and select a skill to invoke it immediately. You can add extra context after the command, for example /webapp-testing for the login page or /github-actions-debugging PR #42.
By default, all skills appear in the / menu. Use the user-invokable and disable-model-invocation frontmatter properties in your skill files to control how each skill is accessed:
• Set user-invokable: false to hide a skill from the menu while still letting the model load it automatically.
• Set disable-model-invocation: true to show the skill in the menu but prevent the model from loading it on its own.
Learn more about using skills as slash commands in the documentation.
Set up your workspace for AI with /init
With always-on custom instructions like copilot-instructions.md or AGENTS.md, you can ensure that the AI uses your project's conventions for generating code.
To prime your project with an initial set of instructions based on your codebase, you can now use the /init slash command in chat to generate or update your workspace instructions.
When you run /init, the agent discovers existing AI conventions in your workspace (such as copilot-instructions.md or AGENTS.md), analyzes your project structure and coding patterns, and generates comprehensive workspace instructions tailored to your project. The /init command is implemented as a contributed prompt file, so you can customize its behavior by modifying the underlying prompt.
Agent Skills are generally available
Settings: chat.useAgentSkills, chat.agentSkillsLocations
Agent Skills are now generally available and enabled by default. Skills provide specialized capabilities, domain knowledge, and refined workflows to help the AI produce high-quality outputs. Each skill folder contains tested instructions for specific domains like testing strategies, API design, or performance optimization.
You can now manage skills in VS Code in the same way you manage prompt files, instructions, or custom agents. Use the Chat: Configure Skills command to view all available skills, or Chat: New Skill File to create a new skill in your workspace or user home.
By default, VS Code looks for skills definitions in the .github/skills and .claude/skills folder of your workspace, or in the ~/.copilot/skills or ~/.claude/skills folder in your user home. You can specify custom paths where VS Code should look for skills by using the chat.agentSkillsLocations setting.
If you're an extension author, you can also package and distribute skills with your extension by including them in the extension and registering them using the chatSkills contribution point in the package.json.
The path must point to a directory that contains a SKILL.md file, and the name field in the SKILL.md frontmatter must match the parent directory name. For example, if the path is ./skills/my-skill, the directory must contain a SKILL.md with name: my-skill in its frontmatter. Learn more about the required folder structure in the Agent Skills documentation.
Organization-wide instructions
Setting: github.copilot.chat.organizationInstructions.enabled
Previously, VS Code already added support for organization-level custom agents. In this release, VS Code now also supports organization-level custom instructions. If your GitHub organization has configured custom instructions for Copilot, they are automatically applied to your chat sessions, ensuring consistent guidance across your team.
This feature is enabled by default. You can disable organization instructions by setting github.copilot.chat.organizationInstructions.enabled to false.
Learn more about Custom Instructions in the documentation.
Custom agent file locations
Setting: chat.agentFilesLocations
Like for other customization files, such as prompt files, instructions, and skills, you can now configure where VS Code looks for custom agent definitions (.agent.md).
By default, VS Code searches for agent files in your workspace's .github/agents folder. With the new chat.agentFilesLocations setting, you can add additional directories to search, making it easier to organize and share agents across projects or keep them in a central location outside your workspace.
Control how custom agents are invoked
Settings: chat.customAgentInSubagent.enabled
Custom agents now support additional attributes in the frontmatter header that give you more control over how agents can be invoked. This is particularly useful for setting up agent orchestrations to handle complex tasks with confidence.
• user-invokable: controls whether the agent can be selected from the agents dropdown in chat. Set to false to create agents that are only accessible programmatically or as subagents.
• disable-model-invocation: prevents the agent from being invoked as a subagent by other agents when enabled. This is useful for agents that should only be triggered explicitly by users.
• agents: limits which subagents the current agent can invoke. When specified, the agent can only hand off work to the listed agents. Use the agent tool to enable subagent invocation.
The use of custom agents as subagents is currently still behind a setting. Enable chat.customAgentInSubagent.enabled to enable custom agents as subagents.
Multiple model support for custom agents
Custom agents can now specify more than one model in the frontmatter header. The first available model in the list is used, providing fallback options if a preferred model is unavailable.
Chat customization diagnostics
Chat customization files can originate from various locations, including your user profile, workspace, extensions, and your GitHub organization. When troubleshooting issues with custom agents, prompts, instructions, or skills, it can be challenging to determine which files are currently loaded and whether any errors occurred during loading.
A new diagnostics view helps you troubleshoot chat customization issues by showing all currently loaded custom agents, prompt files, instruction files, and skills. To access it, right-click in the Chat view and select Diagnostics. This opens a Markdown document listing all active customization files, their load status, and any errors that occurred during loading.
Language Models editor
The Language Models editor in VS Code provides a centralized interface for managing and configuring language models used in chat. This iteration, we further enhanced this experience:
• Multiple configurations per provider: create multiple configurations for the same model provider, each with a different API key. This is useful for separating personal and work accounts, or using different API keys for different projects. For example, you might have one Gemini configuration with your personal API key and another with your team's API key.
• Configuring models from Azure provider: when configuring Azure models, VS Code opens the chatLanguageModels.json configuration file and inserts a snippet template. This snippet includes the required properties such as model ID, name, endpoint URL, and token limits. You can then fill in the values for each model you want to add.
• Manage provider groups: configure an existing provider group by selecting the configure action, for example to update the API key. You can also remove a provider group entirely by using the remove action.
• Additional UI improvements: several usability improvements, such as keyboard access for toggling model visibility, context menu actions, and multi-select for bulk actions.
• Language-model configuration file: model configurations are now stored in a dedicated chatLanguageModels.json file. Open this file directly by selecting the file icon in the top-right corner of the Language Models editor. This makes it easy to view, edit, or share your model configurations.
• Model provider configuration UI: model providers can declare their configuration schema, and VS Code provides the UI for users to enter their configuration. See Chat Model Provider Configuration for details on this new proposed API. Existing model configurations from the GitHub Copilot Chat extension are automatically migrated.
Language model configuration
Settings: github.copilot.chat.implementAgent.model, inlineChat.defaultModel
• Default model for plan implementation (Experimental): You can now configure a default language model for the implementation step of the Plan agent (github.copilot.chat.implementAgent.model). Leave the setting empty to use the default model. The model value should be a qualified model name in the format Model Name (vendor), for example GPT-5 (copilot) or Claude Sonnet 4.5 (copilot).
• Default model for inline chat: By default, editor inline chat uses the default model of the selected vendor. This enables extensions to provide a model that's specifically tailored for inline chat scenarios. If you prefer to use a different model, you can configure this with the inlineChat.defaultModel setting. This setting lets you choose a consistent default language model for inline chat, so your preferred model is used automatically whenever you start an inline chat session, without needing to select it manually each time.
• Specify language model for agent handoffs: Agent handoffs now support an optional model parameter that lets you specify which language model to use when the handoff executes. This enables you to control the model that is used for specific agent workflows directly from your .agent.md file. The model value should be a qualified model name in the format Model Name (vendor), for example GPT-5 (copilot) or Claude Sonnet 4.5 (copilot).
Agent customization skill (Experimental)
Setting: chat.agentCustomizationSkill.enabled
A new agent-customization skill teaches the agent how to help you customize your AI coding experience. When you ask about creating custom agents, instructions, prompts, or skills, the agent automatically loads this skill to provide accurate guidance.
The skill covers:
• Custom Agents - Creating .agent.md files with frontmatter configuration for tools, models, and behavior
• Custom Instructions - Writing .instructions.md files with applyTo patterns for context-specific guidance
• Prompt Files - Building reusable .prompt.md templates for common tasks
• Skills - Packaging domain expertise in SKILL.md files
• Workspace Instructions - Setting up project-wide conventions in copilot-instructions.md and AGENTS.md
Agent Extensibility
This release adds Claude Agent support so you can leverage Anthropic's agent SDK directly, MCP Apps that render interactive visualizations in chat, and new provider capabilities are giving you more ways to extend what agents can do.
Claude compatibility
If you use both VS Code and Claude, you no longer need to maintain separate configuration files. VS Code now reads Claude configuration files directly, so your agents, skills, instructions, and hooks work across both tools without duplication.
VS Code detects the following Claude file locations:
• Instructions: CLAUDE.md files in your workspace root, .claude/CLAUDE.md, and ~/.claude/CLAUDE.md. VS Code also reads instruction files from the .claude/rules folder.
• Agents: .md files in the .claude/agents folder, following the Claude sub-agents format.
• Skills: Skill definitions in .claude/skills and ~/.claude/skills folders.
• Hooks: Hook configurations in .claude/settings.json and ~/.claude/settings.json.
This compatibility extends across instructions, agents, skills, and hooks so that teams using multiple AI tools can share a single set of configuration files.
Agent orchestration
Agent orchestration is a powerful pattern for building complex AI workflows where multiple specialized agents collaborate to achieve a common goal. Instead of relying on a single agent to handle everything, orchestration distributes work across purpose-built agents, each optimized for a specific role like planning, implementation, code review, or research.
This approach provides several key benefits:
• Context efficiency: Each subagent operates in its own dedicated context window, preventing context overflow
• Specialization: Different agents can use different models optimized for their task
• Parallel execution: Independent tasks can run in parallel across multiple subagents
VS Code has all the building blocks for setting up your agent orchestration flow with custom agents, subagents, and extra control over how agents are invoked.
The community has created excellent examples of agent orchestration systems that you can use directly or adapt to your needs:
• Copilot Orchestra - A multi-agent system with a "Conductor" that orchestrates planning, implementation, and code review subagents through a complete development cycle
• GitHub Copilot Atlas - An extended orchestration system with specialized agents like "Prometheus" for planning, "Oracle" for research, "Sisyphus" for implementation, and "Explorer" for rapid codebase discovery
Claude Agent (Preview)
This release, we are introducing Claude Agent support, now in preview. This gives you the power to delegate tasks to the Claude Agent SDK using the Claude models included in your GitHub Copilot subscription.
This integration uses the official Claude Agent harness by Anthropic, which means it shares the same prompts, tools, and overall architecture as other Claude Agent implementations. You can learn more about the Claude Agent SDK in the Anthropic documentation.
This integration is in active development and we plan to add more features and improvements over the coming months. In the meantime, we would love to hear your feedback on how you are using Claude Agents in VS Code and what features you would like to see next. Don't hesitate to provide feedback on GitHub!
Anthropic models
Settings: github.copilot.chat.anthropic.thinking.budgetTokens, github.copilot.chat.anthropic.toolSearchTool.enabled, github.copilot.chat.anthropic.contextEditing.enabled
We've made several improvements to Anthropic model support in VS Code:
• Messages API with interleaved thinking: Anthropic models now use the Messages API, which includes support for interleaved thinking. This enables Claude to reason between tool calls, providing more thoughtful and contextual responses during complex multi-step tasks. Configure the thinking budget with the github.copilot.chat.anthropic.thinking.budgetTokens setting, or set it to 0 to disable extended thinking entirely.
• Tool search tool: We enabled the tool search tool to help Claude discover and select the most relevant tools for your task from a larger pool of available tools. This feature can be toggled with the github.copilot.chat.anthropic.toolSearchTool.enabled setting.
• Context editing (Experimental): We added support for context editing to help manage longer conversations more efficiently. This feature clears tool results and thinking tokens from previous turns, helping to defer summarization and maintain more context in chat sessions. Try it out by enabling the github.copilot.chat.anthropic.contextEditing.enabled setting.
Support for MCP Apps
In this release VS Code has added support for MCP Apps. MCP Apps allow servers to display rich, interactive UI in the client.
Apps are displayed automatically when servers return them. If you're an MCP server developer you can learn more about MCP Apps by checking out:
• MCP Apps demo repository
• MCP Apps SDK and examples
• VS Code MCP documentation
• MCP server development guide
Support for custom registry base URLs for MCP packages
VS Code now supports the registryBaseUrl property in MCP server manifest files. This enables organizations to deploy MCP servers from private or alternative package registries, such as internal Azure DevOps feeds or custom PyPI repositories.
Agent Optimizations
Smarter context, faster search, better results. With Copilot Memory, agents remember what matters across sessions. External indexing brings fast semantic search to non-GitHub workspaces. And agents can now read files outside your workspace when needed, with your permission.
Copilot Memory (Preview)
Setting: github.copilot.chat.copilotMemory.enabled
If you find yourself repeatedly providing the same context to the AI, you can now use Copilot Memory to store and recall important information across sessions.
With the new memory tool, your chat can now access and update Copilot Memory directly. This enables the agent to retrieve relevant context from your stored memories and save new learnings as you work. Enable the memory tool by setting github.copilot.chat.copilotMemory.enabled to true.
The memory tool should recognize when to store a particular piece of information as a memory ("always ask clarifying questions when in doubt") and when to retrieve relevant memories to inform its responses.
You can view and manage all your memories from GitHub's Copilot settings.
External indexing for non-GitHub workspaces (Preview)
Setting: github.copilot.chat.advanced.workspace.codeSearchExternalIngest.enabled
Workspaces that are not hosted on GitHub can now be remotely indexed for faster code search when using agents. When you use #codebase in a non-GitHub workspace, VS Code builds an index of your codebase that enables quick semantic search, providing the same powerful code search capabilities that are available for GitHub-hosted repositories.
The index is built on the first request and might take a few minutes depending on the repository size and your network connection. Subsequent requests are much faster, as they use the cached index. The index automatically updates when you modify and save files.
We'll be rolling out external indexing gradually over the next few weeks. Note that any workspaces that are hosted on GitHub already support remote indexing and do not require a more expensive call to build up the index on first request.
Read files outside workspace
Agents can now read files and list directories outside your current workspace with your permission. Previously, access attempts were automatically denied. Now, when an agent needs to access external files or folders, VS Code prompts you to allow or deny the request.
You can also allow access for the entire session to avoid repeated prompts for future reads under the same folder.
Performance improvements
This iteration, we've made numerous performance improvements:
• Large chats: Long chat conversations should now feel smoother to open and scroll around in. We've also optimized how conversations are persisted to make them more reliable overall.
• Parallel dependent tasks: When running tasks via agents, dependent tasks are now processed in parallel instead of sequentially. This can significantly improve build times for projects with multiple independent build steps. Check our microsoft/vscode repo to notice the difference!
Agent Security and Trust
Run agent commands with confidence. New terminal sandboxing restricts file and network access for agent-executed commands, auto-approval rules skip confirmation for safe operations, and improved presentation shows exactly what's running and why, so you're always in control.
Terminal sandboxing (Experimental)
Settings: chat.tools.terminal.sandbox.enabled, chat.tools.terminal.sandbox.linuxFileSystem, chat.tools.terminal.sandbox.macFileSystem, chat.tools.terminal.sandbox.network
Agents have the same permissions as your user account. To help mitigate risks associated with terminal commands executed by agents, we have introduced experimental terminal sandboxing capabilities. Terminal sandboxing restricts file system access to only your workspace folder and also lets you restrict network access to trusted domains only.
Note: terminal sandboxing is currently supported on macOS and Linux only. On Windows, the sandbox settings have no effect.
To enable terminal sandboxing, set the chat.tools.terminal.sandbox.enabled setting to true.
When sandboxing is enabled:
• Commands have read and write access to the current working directory by default
• Commands run without the standard confirmation dialog because they operate in a controlled environment
• Network access is blocked for all domains by default
Learn more about configuring terminal sandboxing in our documentation.
Terminal tool lifecycle improvements
Several changes were made in this release to help solve problems around incorrect background terminal behavior:
• You can now manually push a terminal tool call to the background, freeing up the agent to continue with other work.
• A new timeout property is required to be filled in by the agent when a call to the terminal tool is made, where 0 means no timeout. This gives an extra escape to return control back to the agent when something unexpected happens.
• The new awaitTerminal tool gives the agent the ability to wait for background terminals to complete, this also requires the timeout property. Provided the model leverages this tool, the expectation is that it prevents echo "successful" and sleep n calls that were previously used to wait for background commands to finish.
• The new killTerminal tool gives the agent the ability to kill background terminals to clean up after itself. This aims to prevent how the agent would sometimes kill processes to achieve the same thing in a roundabout way, for example when it wants to stop an old in-progress server command.
• Several instruction changes around how the current working directory works since the active non-background terminal always persists the current working directory, whereas background terminals always start in the workspace directory.
Terminal auto-approval
Settings: chat.tools.terminal.enableAutoApprove
The following commands are now auto approved by default when terminal auto approve is enabled:
• Set-Location
• dir
• od
• xxd - flags and a single input file
• docker - All safe sub-commands
• npm, yarn, pnpm - All safe sub-commands
Terminal enhancements
A smoother, more capable terminal. Terminal commands in chat now show richer details including syntax highlighting and working directory. Kitty keyboard protocol support improves key handling in terminal apps, and new options let you customize sticky scroll and use terminals in restricted workspaces.
Selectively ignore sticky scroll
Setting: terminal.integrated.stickyScroll.ignoredCommands
Some commands previously appeared in sticky scroll when that behavior was undesirable, for example commands like clear. From this release, you can customize which commands are ignored, and it already includes some common agentic CLIs (that run in the normal buffer) such as copilot, claude, codex, and gemini.
Removal of winpty support
Support for winpty has been removed from node-pty, which means terminals will no longer work in Windows versions before Windows 10 version 1809 (Fall 2018). ConPTY is the modern mechanism for terminals so we recommend upgrading to a newer version of Windows 10 or move to Windows 11. You may be able to get terminals to work by setting "terminal.integrated.windowsUseConptyDll": true, but note that this is currently experimental.
Allow terminals to be opened in restricted workspaces
Setting: terminal.integrated.allowInUntrustedWorkspace
When workspace trust is not granted, opening the terminal is blocked to protect the user from attacks where the shell may execute code such as by setting variables via an .env file. Security conscious users often configure their shells to prevent this from being a possibility, so there is a new opt-in setting that allows opening terminals in restricted workspaces.
New VT features
Setting: terminal.integrated.enableKittyKeyboardProtocol (Experimental)
The Kitty keyboard protocol has been implemented and will be rolling out to stable this release. This feature aims to fix a bunch of limitations around how keystrokes are traditionally encoded, specifically:
• Allows the terminal to encode more modifiers and multiple modifiers, not just alt and ctrl
• Handle both press and release events as well as repeated pressed (holding a key down)
• Disambiguates many keystrokes, such as Escape which normally sends the ESC (\x1b) sequence which also happens to be the start of all escape sequences.
This requires the program running in the terminal to support the protocol and request to enable it when it runs. A big benefit you will see immediately is shift+enter should work in some agentic CLIs without the need to run something like /terminalSetup.
Setting: terminal.integrated.enableWin32InputMode (Experimental)
Similar to the above, there's an experimental version of the win32 input mode which accomplishes similar but is tuned specifically for Windows and its pseudoterminal backend ConPTY. This will remain off for this release, let us know if you have any problems with it.
Other:
• Independent control of bold and faint SGR properties (SGR 222, SGR 221). This sequence is rarely used, but it's unambiguous and can corrupt output when used, so we decided to support it.
Coding and editor
Small refinements that add up. Double-click to select bracket or string contents. Customize bracket matching colors. Scope snippets to specific files. Detect TypeScript shebangs correctly. These focused improvements make everyday editing just a bit smoother.
Bracket matching foreground color
You can now customize the text color of matching brackets using the new editorBracketMatch.foreground color theme token. Previously, you could only customize the background (editorBracketMatch.background) and border (editorBracketMatch.border) colors. The new color token lets you make matching brackets stand out more clearly by changing the actual bracket characters' color.
The setting defaults to null, meaning brackets inherit their normal text color. Configure it in your settings.json under workbench.colorCustomizations.
Select bracket and string content with double-click
You can now double-click immediately after an opening bracket or immediately before a closing bracket to select all the content inside. This also works for strings - double-click right after an opening quote or right before a closing quote to select the string contents. This provides a quick way to select, copy, or replace the content within brackets or strings without manually positioning your cursor.
Rename suggestions for TypeScript
Rename suggestions for TypeScript now also work when typing over an existing declaration. In the following video the user changes the declaration let index = 0; into let chunkIndex = 0; by typing the new identifier name instead of using the rename refactoring. Next edit suggestions still proposes to rename index to chunkIndex using Shift+Tab.
Improved ghost text visibility
Inline suggestions (ghost text) now display a dotted underline when showing short suggestions of fewer than three continuous non-whitespace characters. This visual indicator makes it easier to distinguish ghost text from actual code in your editor. This is particularly useful when the suggestion is a single character like ) that might be confused with existing code.
Snippet file patterns
You can now control which files a snippet appears in using include and exclude glob patterns. Use this to restrict snippets to specific files or project contexts, preventing them from appearing in unrelated files.
For example, to create a snippet that only appears in Travis CI configuration files:
Patterns match the absolute file path if they contain a path separator, otherwise they match just the file name. Both include and exclude can be a single pattern or an array of patterns. Use exclude to prevent snippets from appearing in specific files, even when they would otherwise match the snippet's language scope.
Improved shebang language detection
VS Code now has improved shebang language detection support, particularly for files using /usr/bin/env with additional flags. Files with shebangs like #!/usr/bin/env -S deno -A are now correctly detected as TypeScript. This enables better language support for scripts written in TypeScript using runtimes like Deno or Bun, even without a .ts file extension.
Workbench and productivity
Test, debug, and ship without switching windows. A new integrated browser lets you preview and inspect localhost sites directly in VS Code, complete with DevTools and authentication support.
Integrated browser (Preview)
Settings: workbench.browser.openLocalhostLinks, simpleBrowser.useIntegratedBrowser, livePreview.useIntegratedBrowser
VS Code has long included the Simple Browser for opening basic web pages, such as localhost sites during development. However, because it relied on iframes, there were several limitations: website authentication wasn't possible, and common sites like Google, GitHub, and Stack Overflow couldn't be opened.
This release introduces a new integrated browser for VS Code desktop that overcomes these restrictions. You can now sign into websites and browse any page, just as you would in a regular browser.
Highlights include:
• Persistent data storage with configurable scope (global, workspace, or in-memory / ephemeral)
• Add element to chat: select an element and send it to an agent for assistance
• Fully-featured DevTools
• Keyboard shortcuts
• Find in page
And more...
To try it out, run the Browser: Open Integrated Browser command. If you'd like to use the integrated browser more broadly, you can enable workbench.browser.openLocalhostLinks to open localhost links directly in the new browser.
You can also configure the integrated browser to replace the Simple Browser with the simpleBrowser.useIntegratedBrowser setting, or to be used by the Live Preview extension using the livePreview.useIntegratedBrowser setting.
Restore editors on workspace open
Setting: workbench.editor.restoreEditors
Previously, VS Code would always restore all open editors when reopening a workspace. With the new workbench.editor.restoreEditors setting, you can control whether editors should restore when opening a workspace or not. When the setting is disabled, VS Code starts with a clean editor area instead of reopening the tabs from your previous session.
Note: Dirty (unsaved) editors always restore regardless of this setting to prevent data loss.
Advanced settings
Setting: workbench.settings.alwaysShowAdvancedSettings
You can now configure VS Code to always show advanced settings in the Settings editor without having to apply the @tag:advanced filter each time. Enable the workbench.settings.alwaysShowAdvancedSettings setting to have advanced settings visible by default.
Import profiles via drag and drop
You can now import a settings profile by dragging and dropping a .code-profile file onto the VS Code window. This provides a similar experience to dragging and dropping a .code-workspace file, making it easier to share and apply profiles.
Output channel filter improvements
The Output panel filter now supports negative patterns and multiple filters. Use ! to exclude specific lines from the output, for example !debug hides all lines containing "debug". You can also combine multiple patterns with commas for more precise filtering.
Filter problems by source
The Problems panel now supports filtering by the source or owner of diagnostics. This is useful when you want to focus on specific types of issues, such as build errors, while temporarily hiding diagnostics from other sources like spell checkers or linters. For example, type source:ts in the filter box to show only TypeScript diagnostics, or use !source:cSpell to hide all spell checker warnings.
Extension editor shows configuration defaults
The Feature Contributions tab in the extension editor now displays configuration defaults contributed by extensions. This makes it easier to see what default settings an extension provides, such as language-specific editor configurations.
Include additional files in git worktrees (Experimental)
Setting: git.worktreeIncludeFiles
When using background agents, a git worktree is created in order to isolate the changes. With the new git.worktreeIncludeFiles setting, you can specify additional files or glob patterns that are copied to the worktree folder after the worktree is created. This i
- Feb 4, 2026
- Date parsed from source:Feb 4, 2026
- First seen by Releasebot:Feb 4, 2026
- Modified by Releasebot:Feb 20, 2026
Visual Studio Code by Microsoft
January 2026 (version 1.109)
VS Code January 2026 release unveils a multi‑agent development hub with faster chat and streamlined sessions. It adds Claude compatibility, MCP Apps, Copilot Memory, and rich editor, terminal, and security improvements for a smarter coding experience.
Release date: February 4, 2026
Update 1.109.1
The update addresses these security issues.
Update 1.109.2
The update addresses an issue with chat.
Update 1.109.3
The update addresses these issues and introduces several notable features:
- Message steering and queueing: send follow-up messages while a request is still running
- Agent hooks: run custom shell commands at key agent lifecycle points
- Claude compatibility: reuse your Claude configuration files directly in VS Code
- Use skills as slash commands: invoke agent skills on demand from chat
Update 1.109.4
The update addresses these issues.
Update 1.109.5
The update addresses these issues and adds these features to improve background agents:
- Support for slash commands, including prompt files, hooks, and skills
- The ability to rename background agent sessions
- Kitty keyboard support is now available to all users
Downloads
Windows: x64, Arm64 | Mac: Universal, Intel silicon | Linux: deb, rpm, tarball, Arm, snap
Welcome to the January 2026 release of Visual Studio Code
In this release, we are further evolving VS Code to make it the home for multi-agent development.
Highlights include:
- Chat UX - chat just feels better and snappier with faster streaming, improved reasoning results, and a revamped editor inline chat
- Agent Session Management - it's now easier to delegate tasks to agents across local, background, and cloud and jump in when needed
- Agent Customization - build your own workflows using agent orchestrations, and have consistent results with Agent Skills and organization-wide customizations
- Agent Extensibility - reuse your knowledge with Claude agent support and new Anthropic model capabilities, and enjoy rich chat interactions with MCP Apps
- Agent Optimizations - agents work smarter with Copilot Memory and experience faster code search with external indexing
- Agent Security & Trust - feel confident running terminal commands with sandboxing and effective auto-approval rules
- Workbench & productivity - test your apps without leaving the editor with the new integrated browser
- Terminal Enhancements - quality-of-life improvements to make your terminal experience smoother and more reliable
- Coding & Editor - several impactful improvements to make everyday coding smoother
- Extensions & API - new capabilities for extension authors to build richer experiences
Happy Coding!
Watch our VS Code 1.109 release highlights video to hear about these features!
Extensive detailed release notes follow, covering features such as Message steering and queueing, Anthropic models thinking tokens, Mermaid diagrams in chat responses, Ask Questions tool, Plan agent improvements, Context window details, Inline chat UX revamp, Model descriptions in the model picker, Terminal command output enhancements, Output streaming, Interactive input in embedded terminals, Delete all hidden terminals, New experimental themes, Agent Session Management improvements including switching and delegating between agent types, Agent status indicator, Subagents and Search subagent, Cloud agents enhancements, Background agents improvements, Agent sessions welcome page, Agent Customization with Agent hooks and skills as slash commands, Workspace setup with /init, Agent Skills general availability, Organization-wide instructions, Custom agent file locations, Control over custom agent invocation, Multiple model support for custom agents, Chat customization diagnostics, Language Models editor improvements, Language model configuration, Agent customization skill, Agent Extensibility with Claude compatibility and MCP Apps support, Agent Optimizations including Copilot Memory and external indexing, Agent Security and Trust with terminal sandboxing and auto-approval, Terminal enhancements including sticky scroll and keyboard protocol support, Coding and editor improvements like bracket matching and rename suggestions, Workbench and productivity features including integrated browser and editor restore options, Advanced settings, Import profiles via drag and drop, Output channel filter improvements, Filter problems by source, Extension editor configuration defaults, Experimental git worktree file inclusion, SCM view improvements, Git delete command, Blame editor decoration hover control, Accessibility improvements, Enterprise improvements, GitHub organization policy enforcement, Extensions and API updates including Quick Input Button APIs, Proposed APIs for Chat Model Provider Configuration and Chat prompt files API, Chat item controller API, Chat output renderer API updates, Portable mode detection, Engineering updates including DMG image for macOS, Windows 11 context menu integration, Redesigned installation layout for Windows, macOS update handling, Copilot extension deprecation, Codicons consumption from npm package, Notable fixes, and acknowledgments.
Original source - Jan 11, 2026
- Date parsed from source:Jan 11, 2026
- First seen by Releasebot:Jan 13, 2026
Visual Studio Code by Microsoft
January 2026 Insiders (version 1.109)
VS Code Insiders release brings advanced terminal features, improved chat session discovery, and new extension APIs with web browser exploration and MCP support. Enjoy timeout controls, safer npm commands, and streamlined quick input options.
These release notes cover the Insiders build of VS Code and continue to evolve as new features are added. To try the latest updates, download Insiders. To read these release notes online, go to code.visualstudio.com/updates.
You can still track our progress in the Commit log and our list of Closed issues.
These release notes were generated using GitHub Copilot and might contain inaccuracies.
Happy Coding!
January 11, 2026
- The terminal now supports the kitty keyboard protocol (CSI u), enabling more sophisticated keyboard input handling and providing access to previously unavailable key combinations.
- The terminal now supports win32-input-mode, improving keyboard handling compatibility with Windows console applications.
- The terminal now supports SGR 221 and 222 escape sequences, allowing independent control of bold and faint text attributes for more granular formatting control.
- Improved discoverability of archived chat sessions in the Chat view, making it easier to locate and access previously archived conversations.
January 8, 2026
- The terminal tool now supports a timeout parameter to control how long terminal commands run before timing out, preventing unnecessary polling commands.
- Updated the list of npm commands that are safe for automatic execution.
- The terminal suggest toolbar no longer shows the selection mode option when quick suggestions are disabled, reducing confusion.
- The terminal.integrated.suggest.quickSuggestions setting can now be configured in the Settings editor instead of requiring manual JSON editing.
- Added a workbench.mcp.startServer command to start a specific or all MCP servers to discover their tools.
- Exploration work on rich integrated web browser using WebContentsView or controlledframe to overcome limitations of the current iframe-based Simple Browser.
- A new proposed API enables extensions to show buttons inline after the input box in quick inputs, in addition to the title bar location.
January 7, 2026
- You can now import a chat session into the Chat view instead of only opening it in a new editor tab.
- Fixed an issue where auto approval information for the fetch tool was not visible when hovering over the tool call.
- Added built-in support for MCP Apps, enabling servers to provide custom UI for tool invocation.
December 28, 2025
- The quick input now supports overflow buttons, enabling secondary actions to be placed in an overflow menu.
We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new.
Original source - Jan 8, 2026
- Date parsed from source:Jan 8, 2026
- First seen by Releasebot:Jan 15, 2026
Visual Studio Code by Microsoft
December 2025 (version 1.108)
VS Code’s December 2025 release brings broad feature updates across editor, terminal and collaboration tools plus major stability fixes. It adds Agent Skills, enhanced Agent Sessions, new snippet transforms, Go to Symbol improvements and improved accessibility for a smoother, more productive coding experience.
December 2025 (version 1.108)
Release date: January 08, 2026
Update 1.108.1: The update addresses these issues
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Welcome to the December 2025 release of Visual Studio Code.
Traditionally, the month of December is a time where our team focuses on cleaning up GitHub issues and pull requests across our repositories. This year, we managed to reduce our open issues by nearly 6,000 and triaged over a thousand more.
In addition to our housekeeping efforts, we have also made several improvements and feature updates across various areas of VS Code.
Happy Coding!If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible?
You can download the nightly Insiders build and try the latest updates as soon as they are available.Agents
Agent Skills (Experimental)
Setting: chat.useAgentSkills
VS Code now supports Agent Skills, allowing you to teach the coding agent new capabilities and provide domain-specific knowledge. Agent Skills are folders of instructions, scripts, and resources that GitHub Copilot can load when relevant to perform specialized tasks.
Skills are stored in directories with a SKILL.md file that defines the skill's behavior. VS Code automatically detects skills from the .github/skills folder in your workspace (or .claude/skills/ for backwards compatibility). They are then loaded on-demand into the chat context when relevant for your request.
Enable support for Agent Skills by enabling the chat.useAgentSkills setting.
Learn more about creating and using skills in the Agent Skills documentation.Improvements to Agent Sessions view
This iteration, we further improved the Agent Sessions view with several enhancements:
• Keyboard access support for actions such as archive, read state, opening a session
• Grouping of sessions based on state and age when showing side-by-side
• Provide information on changed files and associated PRs for a session
• Support for archiving multiple sessions at once from the new group sections
• General accessibility improvementsNote: chat.viewSessions.orientation no longer provides the auto option. Use sideBySide as alternative.
Chat
Chat picker is based on agent sessions
The Quick Pick for chat sessions is now based on the same information that drives the Agent Sessions view. You can access any previous chat session from there and perform actions like archiving, renaming or deletion.Note: Agent sessions can also be accessed by typing agent in the Quick Open control (Ctrl+P).
Chat title improvements
The Chat view title control is now showing up, irrespective of how the Activity Bar is configured. Previously, it only showed up in the default Activity Bar configuration.
To quickly jump from one session to another, select the chat title to open the sessions Quick Pick and choose another session.Open empty Chat on restart
Setting: chat.restoreLastPanelSession
From now on, previous chat sessions are not automatically restored when VS Code is restarted. Instead, an empty Chat view is shown where you can then access previous sessions from the Agent Sessions control.
Modify this behavior with the chat.restoreLastPanelSession setting.Terminal tool auto approve default rules
Settings: chat.tools.terminal.enableAutoApprove ORG, chat.tools.terminal.autoApproveWorkspaceNpmScripts
The following commands are now auto approved by default when terminal auto approve is enabled (chat.tools.terminal.enableAutoApprove ORG):
• git ls-files
• git --no-pager
• git -C
• rg (excluding --pre and --hostname-bin)
• sed (excluding some args and usage patterns)
• Out-String
In addition, npm scripts run through npm, pnpm, or yarn are now auto approved by default when they are included within the package.json. We do this because using agents already requires Workspace Trust, and we protect agents from editing sensitive files like package.json. This can be disabled with chat.tools.terminal.autoApproveWorkspaceNpmScripts.
To improve transparency around auto approve, there is now an informational message when a rule was explicitly denied by either default or custom rules:Add session and workspace rules for future terminal tool commands
The allowed commands or command line entries in the Allow dropdown now have options a corresponding action to allow them for the current session or for the workspace.Terminal tool preventing adding to shell history
Setting: chat.tools.terminal.preventShellHistory
When shell integration is enabled and working, commands that are run by the terminal tool are no longer included in shell history for bash, zsh, pwsh and fish. The method this uses differs for each shell, for bash for example HISTCONTROL=ignorespace is set and a space is added to the start of the command being run.
If you prefer to keep terminal tool commands in the shell history, configure this with the chat.tools.terminal.preventShellHistory setting.Accessibility
Streaming chat responses in Accessible View
The Accessible View now dynamically streams chat responses as they are generated. Previously, you needed to close and reopen the Accessible View to see updated content. Now, you can stay in the Accessible View and monitor output as it comes in, making it much easier to follow along with AI responses in real-time.MCP server output excluded from Accessible View
To reduce noise, MCP (Model Context Protocol) server output is now excluded from the Accessible View by default. The standard chat output remains fully accessible, as it's presented in a text area that works well with screen readers.Language ID variable in window title
A new ${activeEditorLanguageId} variable is now available for the window.title setting. This variable displays the language identifier of the currently active editor, which is useful for accessibility tools like Talon that need to determine the current programming language to enable appropriate voice commands.Editor Experience
Import profile by drag and drop
You can now import a settings profile by dragging and dropping a .code-profile file into VS Code. This makes it easier to share profiles with teammates or quickly set up a new environment.
When you drop the file, the Profiles editor opens and lets you preview and import the profile. This provides a similar experience to dragging and dropping a .code-workspace file to open a workspace.Copy breadcrumbs path
Setting: breadcrumbs.symbolPathSeparator
You can now copy the breadcrumbs path to the clipboard by using the Copy Breadcrumbs Path command. This is useful when you need to share the exact location of a symbol with your team or for documentation purposes.
The breadcrumbs.symbolPathSeparator setting enables you to customize the separator character used to join breadcrumb segments.Go to Symbol in Workspace supports special characters in query
The Go to Symbol in Workspace (Ctrl+T) feature no longer incorrectly filters out all results when the search query contains a # character.
This fix enables language extensions like rust-analyzer to use # as a modifier in symbol searches. For example, in rust-analyzer, appending # to a query like main# searches for functions in current workspace only.Code Editing
New snippet tranformations
There are two new snippet transformations available: snakecase and kebabcase. This is how you can use them:
For snake_case transformation:
${TM_FILENAME/(.*)/${1:/snakecase}/}
This transforms the filename to snake-case format. For example, from MyFileName.txt it makes my_file_name.txt. The kebab-case transformation would be my-file-name.txt.Source Control
Git blame information settings
Settings: git.blame.ignoreWhitespace, git.blame.editorDecoration.disableHover
The new git.blame.ignoreWhitespace setting enables you to configure Git blame to ignore whitespace changes when determining which commit last modified a line. This is particularly useful when working with code that has been reformatted, as it helps you identify the commit that made the actual functional change rather than just whitespace adjustments.
Additionally, the git.blame.editorDecoration.disableHover setting lets you disable the hover tooltip that appears when you hover over a Git blame editor decoration. This can be useful if you prefer a cleaner editing experience and only want to see the inline blame annotations without the additional hover information.Authoring commit messages using the editor
Some time ago we added the capability to use the full editor to author a commit message but the actions to commit or cancel were difficult to discover in the editor title toolbar. We improved the editor overlay control in the lower right-hand corner of the editor and moved these actions there to make them easier to use.Worktrees in the Source Control Repositories view (Experimental)
Settings: scm.repositories.explorer, scm.repositories.selectionMode
This milestone, we have added a Worktrees node to the Source Control Repositories view. Under this node, you can see the list of the repository worktrees with an inline action to open the worktree in a new window. The context menu also contains an action to open the worktree in the current window, as well as an action to delete the worktree.
You can enable the experimental repository explorer by setting the scm.repositories.selectionMode and scm.repositories.explorer settings. Give it a try and let us know what other repository artifacts you would like to see in the Repositories explorer.
Learn more about using source control in VS Code.Terminal
Terminal IntelliSense default UX rework
During the past two releases, we rolled out terminal IntelliSense to all VS Code Stable users. While much of the feedback was positive, there was a segment of users (mostly terminal power users) that did not like the feature breaking their muscle memory. After a lot of discussion, we decided to switch some defaults, improve discoverability and allow easier inline configuration of the feature.
The feature itself is still enabled by default, but instead of showing the control automatically when typing (quick suggestions and suggest on trigger characters), it now needs to be explicitly triggered via Ctrl+Space.
We also improved the "status bar" on the bottom. Previously, it showed insert on the left and Learn more/Configure on the right with their associated keybindings. We got feedback that it's not clear that these can be interacted with, so we now show icons on the right and no longer show the keybindings. The left action now allows rotating through the options for "selection mode", which determines how Tab and Enter react when it's brought up. There's a new eye icon on the right, which enables quick suggestions and suggest on trigger characters again.
Finally, to still make this powerful feature relatively discoverable without being overbearing, a hint shows when opening a terminal that explains how to show suggestions. The lifecycle of the hint is simplified and it's as easy as clicking "don't show" to get rid of it permanently, just like the similar feature in the editor.
Beyond this UX rework, these improvements were also done to terminal IntelliSense:
• We now show files with the executable bit on macOS/Linux
• Improved completions for npm and git
• Several fixes to the featurePerformance and stability improvements
The terminal saw several important performance and stability improvements this release:
• node-pty#831: On macOS and Linux, pasting more than 50 characters at once or having Copilot run a large command is no longer throttled and should apply essentially instantly, scaling similarly to other terminals with KBs/MBs of data. This also fixed a crash that could happen on macOS when doing the same thing.
• vscode#285031, vscode#285032, xterm.js#5548: Fixed several layout thrashing issues that could cause the editor to get laggy.
• vscode#239541: Fixed a crash that could occur when fonts such as CommitMono were configured in the terminal.More comprehensive custom glyphs
The terminal's GPU accelerated renderer (on by default) has supported custom glyphs for some time for box drawing, block element, and a subset of powerline symbols. This means that you can see these characters without needing to configure a font and they also scale with line height, letter spacing, and should align with each other perfectly.
In this release, we expanded the number of characters supported to almost 800 by including the majority of custom glyphs supported by any other terminal. This includes ranges that are generally useful in a terminal, specifically these ranges:
• Box Drawing (U+2500 - U+257F)
• Block Elements (U+2580 - U+259F)
• Braille Patterns (U+2800 - U+28FF)
• Powerline Symbols (U+E0A0 - U+E0D4, Private Use Area)
• Progress Indicators (U+EE00 - U+EE0B, Private Use Area)
• Git Branch Symbols (U+F5D0 - U+F60D, Private Use Area)
• Symbols for Legacy Computing (U+1FB00 - U+1FBFF)
Here's a visual of the complete set of glyphs:Improved rendering of curly underlines
VS Code has been able to parse and display colored and styled underlines for some time now, but the curly underline's rendering always left something to be desired. The curly underlines should now look very close to how they look in the editor.
You can try this out for yourself by running this command in bash:
echo -e '\x1b[4:3mCurly\x1b[0m \x1b[4:3m\x1b[58;5;1mRed\x1b[0m'Dimensions visual overlay on resize
Inspired by a feature in ghostty, we added a brief overlay that shows the current terminal dimensions (columns x rows) when you resize the terminal. This is useful if you want to resize your terminal to a specific size for testing or other purposes.New VT features
The terminal now supports the follow VT features/sequences:
• Synchronized output: can be used by applications to pause rendering and batch updates in the terminal, which is particularly useful to prevent tearing when rewriting the buffer.
◦ DECRQM (CSI ? 2026 $ p)
◦ BSU (CSI ? 2026 h)
◦ ESU (CSI ? 2026 l)
• XTVERSION (CSI > 0 q): allows applications to query details about the terminal, the response VS Code will give currently is the "xterm.js" and its versionDebug
Organize breakpoints by file
Setting: debug.breakpointsView.presentation
Breakpoints can now be shown as a tree, grouped by their file. Enable this by setting debug.breakpointsView.presentation to tree.Testing
Navigate to uncovered regions
We've added navigation buttons to the test coverage toolbar that allow you to easily jump between regions of uncovered code. You can toggle the test coverage toolbar using the Test: Show Coverage Toolbar command in the Command Palette.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:
• Change a pull request's base branch from the pull request description webview.
• Convert open pull requests to draft from the pull request description webview.
• Generate a pull request description for an existing PR, not just new ones.
Review the changelog for the 0.126.0 release of the extension to learn about everything in the release.Extension Authoring
New Quick Pick properties for prompts and resource URIs
The Quick Pick API includes two new properties for creating interactive selection interfaces.
Use the prompt property on QuickPick to display persistent instructional text beneath the input box. The text remains visible while users type, which helps provide guidance or context.
Use the resourceUri property on QuickPickItem to automatically derive item properties from a resource URI. When provided, VS Code derives:
• The label from the file name (when set to an empty string)
• The description from the file path (when set to undefined or an empty string)
• The icon from the current file icon theme (when iconPath is set to ThemeIcon.File or ThemeIcon.Folder)
This is useful when building file or folder selection interfaces.Engineering
Housekeeping
As part of our annual December housekeeping, we spent a majority of time cleaning up GitHub issues and pull requests across all our maintained repositories. This year, we managed to reduce our open issues by 5,951 and triaged another 1,203 issues.
By using improved triage tooling and deduplication processes, we were able to close a significant number of stale and resolved issues. This has left us with a more manageble project, enabling us to move forward and develop the features that have the most impact for our users. In our core VS Code repository alone, we closed 2,872 issues and triaged another 1,697!
In June of 2025, we also announced that Copilot had become Open Source! This meant that all related issues would also be filed in the microsoft/vscode repo, and that we had a backlog of issues remaining in microsoft/vscode-copilot-release to take care of. This month, we triaged every issue in the repository and closed 1,659 issues, leaving only 175 open to be migrated.
Below is a graph that shows how our core vscode repository has grown over the years, and how many issues our amazing community has contributed over time. We appreciate everyone who has contributed issues to our repositories over the years and continued to engage with us. Your feedback is what has made VS Code the product that it is today! 🚀Authoring extensions in TypeScript (Experimental)
It is now possible to author VS Code extensions directly in TypeScript without requiring a build step. This works... but there is still a bit of adventure involved! Many aspects are still untested, such as how to write and run tests, how to publish extensions, and other workflow considerations.
Learn more about this experimental approach in this GitHub comment.Notable fixes
• vscode#283356 - Fixed regression causing jumping around while scrolling past some chat outputThank you
Contributions to vscode:
• @abhijit-chikane (Abhijit Chikane): fix: hover focus border cutting at the corners PR #259548
• @alievilshat (Ilshat Aliyev): Fixed wrong negation in the _shouldRenderHint logic. PR #242479
• @Andarist (Mateusz Burzyński): Simplify TestInstantiationService#stub overloads PR #282223
• @anki-code (Andy Kipp): Added Xonsh shell type PR #284044
• @aryla (Arttu Ylä-Outinen): Fix sticky scroll hover listeners piling up PR #260020
• @AviVahl (Avi Vahl): fix: ensure fallback to default system monospace font PR #282747
• @BartolHrg: fix copy with multiple cursors and empty selections PR #256083
• @Beace (Beace): fix: fix terminal webgl context memory leak PR #279579
• @bibaswan-bhawal (Bibaswan Bhawal): fix(extensions): allow extensionButton.prominentBackground to take effect PR #276788
• @chaitanyamedidar (Chaitanya Medidar): Fix Swipe to navigate setting missing description #281997 PR #282220
• @CyMad7001 (Cyril Madigan): #196344 - Fix installer hang issue PR #228233
• @daiyam (Baptiste Augrain): fix: correctly pass extension's id when version is also provided PR #279630
• @eidriahn (Adrian Luca): fix: fixes icons not showing when hovering quick pick checkboxes PR #285250
• @erezak (Erez Korn): Chat: hide Apply in Editor from Command Palette PR #283486
• @flying-sheep (Philipp A.): fix: set LANGUAGE for Git PR #285410
• @gjsjohnmurray (John Murray): Standardize the breadcrumb toggle option label (fix #257550) PR #284486
• @hickford (M Hickford): Reverse lines: apply to whole document when selection is single line PR #257031
• @irengrig (Irina Chernushina): Fix memory leak with installing cursor change position listener PR #267799
• @isksss (isksss): Update: Fixed so that MARK can be used in vue files etc. PR #283583
• @izolotarev (Igor): Fix color detection in hsl saturation PR #266720
• @jakebailey (Jake Bailey): Replace old-style TS modules with namespaces PR #282862
• @jcpetruzza (Daniel Gorin): debug: Fix UI freezing on "continue" with high number of threads PR #283635
• @JeffreyCA: Update Fig spec for Azure Developer CLI (azd) PR #281127
• @joeriddles (Joe Riddle): Add snakecase to snippets syntax PR #237110
• @josephxiao8 (Joseph Xiao): Expected Final Selection After Running Delete Duplicate Lines PR #234799
• @junhaoliao (Junhao Liao): Suppress unhandled errors in WordHighlighter's runDelayer triggers. PR #285887
• @kheif (Mehmet Ege Aydın): workbench: add commands to move editor to start and end PR #284999
• @kortin99 (Kortin Zhou): feat(snippets): add support for kebab-case in snippets tmLanguage syntax PR #222319
• @maynkxx (mayank choudhary): docs: update Twitter branding to X in README PR #280235
• @milanchahar (MILAN CHAHAR): Fix terminal icon picker placement PR #281275
• @mizdra (mizdra): Fix tests that failed in environments where XDG_DATA_HOME is set PR #285402
• @MohamedEmirHajji (Mohamed Emir HAJJI):
◦ Add more git log options to completions PR #282311
◦ Markdown preview: filter hidden elements from scroll sync (fix #281247) PR #282506
• @murataslan1 (Murat Aslan):
◦ fix: avoid jumpy scrolling when navigating next/prev problem PR #285634
◦ Fix: Replace terminal tabbed view lifecycle hack with Event.once PR #285657
◦ Fix: Replace terminal view lifecycle hack with Event.once PR #285661
• @NriotHrreion (Norcleeh): fix: Latest input is not stored to the history when sending message to a new chat PR #282633
• @odinGitGmail (odinsam): fix(debug): support C# stack trace format in debug console links PR #281536
• @przpl: fix(runSubagent): collect computed attachments PR #283750
• @rducom (Raphael DUCOM): Fix ReDoS in PowerShell prompt detection PR #279853
• @RedCMD (RedCMD):
◦ Add TS/JS Template surrounding brackets PR #255972
◦ Fix php indenting #248229 PR #258016
◦ Fix FormatOnSave when modificationsIfAvailable PR #283726
◦ Support # pragma folding markers in C PR #284927
• @remcohaszing (Remco Haszing): Fix editor edge clicking PR #262964
• @Riya-chandra (RIYA_CHANDRA): Show command descriptions as tooltips in Command Palette PR #284609
• @SalerSimo (Simone Salerno):
◦ Exclude terminal editors from recently closed editors history PR #282009
◦ Refactor virtual model creation logic in MoveLinesCommand PR #284785
• @SimonSiefke (Simon Siefke):
◦ fix: memory leak in terminal editor PR #279088
◦ fix: memory leak in terminal process PR #279167
◦ fix: memory leak in terminal process PR #279172
◦ fix: memory leak in accessibility signal PR #279242
◦ fix: memory leak in local process extension host PR #279351
◦ fix: memory leak in extension icon widget PR #280566
◦ fix: memory leak in markdown hover PR #280745
◦ fix: memory leak in debug session PR #281767
◦ fix: memory leak in status bar PR #282246
◦ fix: memory leak in ipc PR #282253
◦ fix: memory leak in chat list renderer PR #282560
◦ fix: memory leak in notebook code scrolling PR #283452
◦ fix: memory leak in terminal find widget PR #283466
◦ fix: memory leak in mainThreadLanguages PR #283498
◦ fix: memory leak in chat widget PR #284288
◦ fix: memory leak in terminal chat widget PR #284325
◦ fix: memory leak call stack widget PR #286246
• @sudip-kumar-prasad (Sudip Kumar Prasad): Fix: use codicon id for Command Prompt default profile icon PR #280967
• @tamuratak (Takashi Tamura):
◦ fix: ensure finishedEditing is called in ChatWidget PR #281763
◦ include uppercase -I in sed in-place option detection PR #284645
◦ Fix context handling in ChatWidget while re-editing PR #285099
• @ThanhNguyxn (Thanh Nguyen): fix: Panel doesn't close when maximized and center-aligned (fixes #281772) PR #281773
• @tharani-2006: Terminal: show dimensions overlay while resizing PR #284244
• @tt0mmy (Tommy): Fix duplicate description in terminal suggestion config PR #279730
• @yavanosta (Dmitry Guketlev):
◦ Fix backward selection when EditContext is off PR #273150
◦ InlineEditsView: remove redeclaration of textModel PR #281501
◦ SingleUpdatedNextEdit: Correctly apply insertion changes PR #281519Contributions to vscode-copilot-chat:
• @AbdelrahmanAbouelenin (ababouelenin): Update system prompt for VSCModelB. PR #2727
• @bharatvansh (Ayush Singh): fix(byok): improve Gemini provider error handling and add tests PR #2686Contributions to vscode-js-profile-visualizer:
• @xiaoxiangmoe (ZHAO Jin-Xiang): chore: remove useless package-lock.json files PR #216Issue tracking
Contributions to our issue tracking:
• @gjsjohnmurray (John Murray)
• @RedCMD (RedCMD)
• @tamuratak (Takashi Tamura)
• @IllusionMH (Andrii Dieiev)
• @albertosantini (Alberto Santini)We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new.
Original source
If you'd like to read release notes for previous VS Code versions, go to Updates on code.visualstudio.com. - Jan 8, 2026
- Date parsed from source:Jan 8, 2026
- First seen by Releasebot:Jan 8, 2026
Visual Studio Code by Microsoft
December 2025 (version 1.108)
VS Code December 2025 ships new capabilities like Agent Skills and richer Agent Sessions, plus big terminal and accessibility upgrades, editor and source control refinements, and broader glyphs. It pairs user-facing features with performance fixes and behind‑the‑scenes housekeeping that tidy the project.
Welcome to the December 2025 release of Visual Studio Code.
Traditionally, the month of December is a time where our team focuses on cleaning up GitHub issues and pull requests across our repositories. This year, we managed to reduce our open issues by nearly 6,000 and triaged over a thousand more.
In addition to our housekeeping efforts, we have also made several improvements and feature updates across various areas of VS Code.
Happy Coding!If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible?
You can download the nightly Insiders build and try the latest updates as soon as they are available.Agents
Agent Skills (Experimental)
Setting: chat.useAgentSkills
VS Code now supports Agent Skills, allowing you to teach the coding agent new capabilities and provide domain-specific knowledge. Agent Skills are folders of instructions, scripts, and resources that GitHub Copilot can load when relevant to perform specialized tasks.
Skills are stored in directories with a SKILL.md file that defines the skill's behavior. VS Code automatically detects skills from the .github/skills folder in your workspace (or .claude/skills/ for backwards compatibility). They are then loaded on-demand into the chat context when relevant for your request.
Enable support for Agent Skills by enabling the chat.useAgentSkills setting.
Learn more about creating and using skills in the Agent Skills documentation.Improvements to Agent Sessions view
This iteration, we further improved the Agent Sessions view with several enhancements:
• Keyboard access support for actions such as archive, read state, opening a session
• Grouping of sessions based on state and age when showing side-by-side
• Provide information on changed files and associated PRs for a session
• Support for archiving multiple sessions at once from the new group sections
• General accessibility improvementsNote: chat.viewSessions.orientation no longer provides the auto option. Use sideBySide as alternative.
Chat
Chat picker is based on agent sessions
The Quick Pick for chat sessions is now based on the same information that drives the Agent Sessions view. You can access any previous chat session from there and perform actions like archiving, renaming or deletion.Note: Agent sessions can also be accessed by typing agent in the Quick Open control (Ctrl+P).
Chat title improvements
The Chat view title control is now showing up, irrespective of how the Activity Bar is configured. Previously, it only showed up in the default Activity Bar configuration.
To quickly jump from one session to another, select the chat title to open the sessions Quick Pick and choose another session.Open empty Chat on restart
Setting: chat.viewRestorePreviousSession
From now on, previous chat sessions are not automatically restored when VS Code is restarted. Instead, an empty Chat view is shown where you can then access previous sessions from the Agent Sessions control.
Modify this behavior with the chat.viewRestorePreviousSession setting.Terminal tool auto approve default rules
Settings: chat.tools.terminal.enableAutoApprove, chat.tools.terminal.autoApproveWorkspaceNpmScripts
The following commands are now auto approved by default when terminal auto approve is enabled (chat.tools.terminal.enableAutoApprove):
• git ls-files
• git --no-pager
• git -C
• rg (excluding --pre and --hostname-bin)
• sed (excluding some args and usage patterns)
• Out-String
In addition, npm scripts run through npm, pnpm or yarn are now auto approved by default when they are included within the package.json. We do this because using agents already requires Workspace Trust, and we protect agents from editing sensitive files like package.json. This can be disabled with chat.tools.terminal.autoApproveWorkspaceNpmScripts.
To improve transparency around auto approve, there is now an informational message when a rule was explicitly denied by either default or custom rules.Add session and workspace rules for future terminal tool commands
The allowed commands or command line entries in the Allow dropdown now have options a corresponding action to allow them for the current session or for the workspace.Terminal tool preventing adding to shell history
Setting: chat.tools.terminal.preventShellHistory
When shell integration is enabled and working, commands that are run by the terminal tool are no longer included in shell history for bash, zsh, pwsh and fish. The method this uses differs for each shell, for bash for example HISTCONTROL=ignorespace is set and a space is added to the start of the command being run.
If you prefer to keep terminal tool commands in the shell history, configure this with the chat.tools.terminal.preventShellHistory setting.Accessibility
Streaming chat responses in Accessible View
The Accessible View now dynamically streams chat responses as they are generated. Previously, you needed to close and reopen the Accessible View to see updated content. Now, you can stay in the Accessible View and monitor output as it comes in, making it much easier to follow along with AI responses in real-time.MCP server output excluded from Accessible View
To reduce noise, MCP (Model Context Protocol) server output is now excluded from the Accessible View by default. The standard chat output remains fully accessible, as it's presented in a text area that works well with screen readers.Language ID variable in window title
A new ${activeEditorLanguageId} variable is now available for the window.title setting. This variable displays the language identifier of the currently active editor, which is useful for accessibility tools like Talon that need to determine the current programming language to enable appropriate voice commands.Editor Experience
Import profile by drag and drop
You can now import a settings profile by dragging and dropping a .code-profile file into VS Code. This makes it easier to share profiles with teammates or quickly set up a new environment.
When you drop the file, the Profiles editor opens and lets you preview and import the profile. This provides a similar experience to dragging and dropping a .code-workspace file to open a workspace.Copy breadcrumbs path
Setting: breadcrumbs.symbolPathSeparator
You can now copy the breadcrumbs path to the clipboard by using the Copy Breadcrumbs Path command. This is useful when you need to share the exact location of a symbol with your team or for documentation purposes.
The breadcrumbs.symbolPathSeparator setting enables you to customize the separator character used to join breadcrumb segments.Go to Symbol in Workspace supports special characters in query
The Go to Symbol in Workspace (Ctrl+T) feature no longer incorrectly filters out all results when the search query contains a # character.
This fix enables language extensions like rust-analyzer to use # as a modifier in symbol searches. For example, in rust-analyzer, appending # to a query like main# searches for functions in current workspace only.Code Editing
New snippet tranformations
There are two new snippet transformations available: snakecase and kebabcase. This is how you can use them:
For snake_case transformation:
${TM_FILENAME/(.*)/${1:/snakecase}/}
This transforms the filename to snake-case format. For example, from MyFileName.txt it makes my_file_name.txt. The kebab-case transformation would be my-file-name.txt.Source Control
Git blame information settings
Settings: git.blame.ignoreWhitespace, git.blame.editorDecoration.disableHover
The new git.blame.ignoreWhitespace setting enables you to configure Git blame to ignore whitespace changes when determining which commit last modified a line. This is particularly useful when working with code that has been reformatted, as it helps you identify the commit that made the actual functional change rather than just whitespace adjustments.
Additionally, the git.blame.editorDecoration.disableHover setting lets you disable the hover tooltip that appears when you hover over a Git blame editor decoration. This can be useful if you prefer a cleaner editing experience and only want to see the inline blame annotations without the additional hover information.Authoring commit messages using the editor
Some time ago we added the capability to use the full editor to author a commit message but the actions to commit or cancel were difficult to discover in the editor title toolbar. We improved the editor overlay control in the lower right-hand corner of the editor and moved these actions there to make them easier to use.Worktrees in the Source Control Repositories view (Experimental)
Settings: scm.repositories.explorer, scm.repositories.selectionMode
This milestone, we have added a Worktrees node to the Source Control Repositories view. Under this node, you can see the list of the repository worktrees with an inline action to open the worktree in a new window. The context menu also contains an action to open the worktree in the current window, as well as an action to delete the worktree.
You can enable the experimental repository explorer by setting the scm.repositories.selectionMode and scm.repositories.explorer settings. Give it a try and let us know what other repository artifacts you would like to see in the Repositories explorer.
Learn more about using source control in VS Code.Terminal
Terminal IntelliSense default UX rework
During the past two releases, we rolled out terminal IntelliSense to all VS Code Stable users. While much of the feedback was positive, there was a segment of users (mostly terminal power users) that did not like the feature breaking their muscle memory. After a lot of discussion, we decided to switch some defaults, improve discoverability and allow easier inline configuration of the feature.
The feature itself is still enabled by default, but instead of showing the control automatically when typing (quick suggestions and suggest on trigger characters), it now needs to be explicitly triggered via Ctrl+Space.
We also improved the "status bar" on the bottom. Previously, it showed insert on the left and Learn more/Configure on the right with their associated keybindings. We got feedback that it's not clear that these can be interacted with, so we now show icons on the right and no longer show the keybindings. The left action now allows rotating through the options for "selection mode", which determines how Tab and Enter react when it's brought up. There's a new eye icon on the right, which enables quick suggestions and suggest on trigger characters again.
Finally, to still make this powerful feature relatively discoverable without being overbearing, a hint shows when opening a terminal that explains how to show suggestions. The lifecycle of the hint is simplified and it's as easy as clicking "don't show" to get rid of it permanently, just like the similar feature in the editor.
Beyond this UX rework, these improvements were also done to terminal IntelliSense:
• We now show files with the executable bit on macOS/Linux
• Improved completions for npm and git
• Several fixes to the featurePerformance and stability improvements
The terminal saw several important performance and stability improvements this release:
• node-pty#831: On macOS and Linux, pasting more than 50 characters at once or having Copilot run a large command is no longer throttled and should apply essentially instantly, scaling similarly to other terminals with KBs/MBs of data. This also fixed a crash that could happen on macOS when doing the same thing.
• vscode#285031, vscode#285032, xterm.js#5548: Fixed several layout thrashing issues that could cause the editor to get laggy.
• vscode#239541: Fixed a crash that could occur when fonts such as CommitMono were configured in the terminal.More comprehensive custom glyphs
The terminal's GPU accelerated renderer (on by default) has supported custom glyphs for some time for box drawing, block element, and a subset of powerline symbols. This means that you can see these characters without needing to configure a font and they also scale with line height, letter spacing, and should align with each other perfectly.
In this release, we expanded the number of characters supported to almost 800 by including the majority of custom glyphs supported by any other terminal. This includes ranges that are generally useful in a terminal, specifically these ranges:
• Box Drawing (U+2500 - U+257F)
• Block Elements (U+2580 - U+259F)
• Braille Patterns (U+2800 - U+28FF)
• Powerline Symbols (U+E0A0 - U+E0D4, Private Use Area)
• Progress Indicators (U+EE00 - U+EE0B, Private Use Area)
• Git Branch Symbols (U+F5D0 - U+F60D, Private Use Area)
• Symbols for Legacy Computing (U+1FB00 - U+1FBFF)
Here's a visual of the complete set of glyphs:Improved rendering of curly underlines
VS Code has been able to parse and display colored and styled underlines for some time now, but the curly underline's rendering always left something to be desired. The curly underlines should now look very close to how they look in the editor.
You can try this out for yourself by running this command in bash:
echo -e '\x1b[4:3mCurly\x1b[0m \x1b[4:3m\x1b[58;5;1mRed\x1b[0m'Dimensions visual overlay on resize
Inspired by a feature in ghostty, we added a brief overlay that shows the current terminal dimensions (columns x rows) when you resize the terminal. This is useful if you want to resize your terminal to a specific size for testing or other purposes.New VT features
The terminal now supports the follow VT features/sequences:
• Synchronized output: can be used by applications to pause rendering and batch updates in the terminal, which is particularly useful to prevent tearing when rewriting the buffer.
◦ DECRQM (CSI ? 2026 $ p)
◦ BSU (CSI ? 2026 h)
◦ ESU (CSI ? 2026 l)
• XTVERSION (CSI > 0 q): allows applications to query details about the terminal, the response VS Code will give currently is the "xterm.js" and its versionDebug
Organize Breakpoints by File
Breakpoints can now be shown as a tree, group by their file, using the setting debug.breakpointsView.presentation.Testing
Navigate to uncovered regions
We've added navigation buttons to the test coverage toolbar that allow you to easily jump between regions of uncovered code.
You can toggle the test coverage toolbar using the Test: Show Coverage Toolbar command.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:
• Change a pull request's base branch from the pull request description webview.
• Convert open pull requests to draft from the pull request description webview.
• Generate a pull request description for an existing PR, not just new ones.
Review the changelog for the 0.126.0 release of the extension to learn about everything in the release.Extension Authoring
New Quick Pick properties for prompts and resource URIs
The Quick Pick API includes two new properties for creating interactive selection interfaces.
Use the prompt property on QuickPick to display persistent instructional text beneath the input box. The text remains visible while users type, which helps provide guidance or context.
Use the resourceUri property on QuickPickItem to automatically derive item properties from a resource URI. When provided, VS Code derives:
• The label from the file name (when set to an empty string)
• The description from the file path (when set to undefined or an empty string)
• The icon from the current file icon theme (when iconPath is set to ThemeIcon.File or ThemeIcon.Folder)
This is useful when building file or folder selection interfaces.Engineering
Housekeeping
As part of our annual December housekeeping, we spent a majority of time cleaning up GitHub issues and pull requests across all our maintained repositories. This year, we managed to reduce our open issues by 5,951 and triaged another 1,203 issues.
By using improved triage tooling and deduplication processes, we were able to close a significant number of stale and resolved issues. This has left us with a more manageble project, enabling us to move forward and develop the features that have the most impact for our users. In our core VS Code repository alone, we closed 2,872 issues and triaged another 1,697!
In June of 2025, we also announced that Copilot had become Open Source! This meant that all related issues would also be filed in the microsoft/vscode repo, and that we had a backlog of issues remaining in microsoft/vscode-copilot-release to take care of. This month, we triaged every issue in the repository and closed 1,659 issues, leaving only 175 open to be migrated.
Below is a graph that shows how our core vscode repository has grown over the years, and how many issues our amazing community has contributed over time. We appreciate everyone who has contributed issues to our repositories over the years and continued to engage with us. Your feedback is what has made VS Code the product that it is today! 🚀Authoring extensions in TypeScript (Experimental)
It is now possible to author VS Code extensions directly in TypeScript without requiring a build step. This works... but there is still a bit of adventure involved! Many aspects are still untested, such as how to write and run tests, how to publish extensions, and other workflow considerations.
Learn more about this experimental approach in this GitHub comment.Notable fixes
• vscode#283356 - Fixed regression causing jumping around while scrolling past some chat outputThank you
Contributions to vscode:
• @abhijit-chikane (Abhijit Chikane): fix: hover focus border cutting at the corners PR #259548
• @alievilshat (Ilshat Aliyev): Fixed wrong negation in the _shouldRenderHint logic. PR #242479
• @Andarist (Mateusz Burzyński): Simplify TestInstantiationService#stub overloads PR #282223
• @anki-code (Andy Kipp): Added Xonsh shell type PR #284044
• @aryla (Arttu Ylä-Outinen): Fix sticky scroll hover listeners piling up PR #260020
• @AviVahl (Avi Vahl): fix: ensure fallback to default system monospace font PR #282747
• @BartolHrg: fix copy with multiple cursors and empty selections PR #256083
• @Beace (Beace): fix: fix terminal webgl context memory leak PR #279579
• @bibaswan-bhawal (Bibaswan Bhawal): fix(extensions): allow extensionButton.prominentBackground to take effect PR #276788
• @chaitanyamedidar (Chaitanya Medidar): Fix Swipe to navigate setting missing description #281997 PR #282220
• @CyMad7001 (Cyril Madigan): #196344 - Fix installer hang issue PR #228233
• @daiyam (Baptiste Augrain): fix: correctly pass extension's id when version is also provided PR #279630
• @eidriahn (Adrian Luca): fix: fixes icons not showing when hovering quick pick checkboxes PR #285250
• @erezak (Erez Korn): Chat: hide Apply in Editor from Command Palette PR #283486
• @flying-sheep (Philipp A.): fix: set LANGUAGE for Git PR #285410
• @gjsjohnmurray (John Murray): Standardize the breadcrumb toggle option label (fix #257550) PR #284486
• @hickford (M Hickford): Reverse lines: apply to whole document when selection is single line PR #257031
• @irengrig (Irina Chernushina): Fix memory leak with installing cursor change position listener PR #267799
• @isksss (isksss): Update: Fixed so that MARK can be used in vue files etc. PR #283583
• @izolotarev (Igor): Fix color detection in hsl saturation PR #266720
• @jakebailey (Jake Bailey): Replace old-style TS modules with namespaces PR #282862
• @jcpetruzza (Daniel Gorin): debug: Fix UI freezing on "continue" with high number of threads PR #283635
• @JeffreyCA: Update Fig spec for Azure Developer CLI (azd) PR #281127
• @joeriddles (Joe Riddle): Add snakecase to snippets syntax PR #237110
• @josephxiao8 (Joseph Xiao): Expected Final Selection After Running Delete Duplicate Lines PR #234799
• @junhaoliao (Junhao Liao): Suppress unhandled errors in WordHighlighter's runDelayer triggers. PR #285887
• @kheif (Mehmet Ege Aydın): workbench: add commands to move editor to start and end PR #284999
• @kortin99 (Kortin Zhou): feat(snippets): add support for kebab-case in snippets tmLanguage syntax PR #222319
• @maynkxx (mayank choudhary): docs: update Twitter branding to X in README PR #280235
• @milanchahar (MILAN CHAHAR): Fix terminal icon picker placement PR #281275
• @mizdra (mizdra): Fix tests that failed in environments where XDG_DATA_HOME is set PR #285402
• @MohamedEmirHajji (Mohamed Emir HAJJI):
◦ Add more git log options to completions PR #282311
◦ Markdown preview: filter hidden elements from scroll sync (fix #281247) PR #282506
• @murataslan1 (Murat Aslan):
◦ fix: avoid jumpy scrolling when navigating next/prev problem PR #285634
◦ Fix: Replace terminal tabbed view lifecycle hack with Event.once PR #285657
◦ Fix: Replace terminal view lifecycle hack with Event.once PR #285661
• @NriotHrreion (Norcleeh): fix: Latest input is not stored to the history when sending message to a new chat PR #282633
• @odinGitGmail (odinsam): fix(debug): support C# stack trace format in debug console links PR #281536
• @przpl: fix(runSubagent): collect computed attachments PR #283750
• @rducom (Raphael DUCOM): Fix ReDoS in PowerShell prompt detection PR #279853
• @RedCMD (RedCMD):
◦ Add TS/JS Template surrounding brackets PR #255972
◦ Fix php indenting #248229 PR #258016
◦ Fix FormatOnSave when modificationsIfAvailable PR #283726
◦ Support # pragma folding markers in C PR #284927
• @remcohaszing (Remco Haszing): Fix editor edge clicking PR #262964
• @Riya-chandra (RIYA_CHANDRA): Show command descriptions as tooltips in Command Palette PR #284609
• @SalerSimo (Simone Salerno):
◦ Exclude terminal editors from recently closed editors history PR #282009
◦ Refactor virtual model creation logic in MoveLinesCommand PR #284785
• @SimonSiefke (Simon Siefke):
◦ fix: memory leak in terminal editor PR #279088
◦ fix: memory leak in terminal process PR #279167
◦ fix: memory leak in terminal process PR #279172
◦ fix: memory leak in accessibility signal PR #279242
◦ fix: memory leak in local process extension host PR #279351
◦ fix: memory leak in extension icon widget PR #280566
◦ fix: memory leak in markdown hover PR #280745
◦ fix: memory leak in debug session PR #281767
◦ fix: memory leak in status bar PR #282246
◦ fix: memory leak in ipc PR #282253
◦ fix: memory leak in chat list renderer PR #282560
◦ fix: memory leak in notebook code scrolling PR #283452
◦ fix: memory leak in terminal find widget PR #283466
◦ fix: memory leak in mainThreadLanguages PR #283498
◦ fix: memory leak in chat widget PR #284288
◦ fix: memory leak in terminal chat widget PR #284325
◦ fix: memory leak call stack widget PR #286246
• @sudip-kumar-prasad (Sudip Kumar Prasad): Fix: use codicon id for Command Prompt default profile icon PR #280967
• @tamuratak (Takashi Tamura):
◦ fix: ensure finishedEditing is called in ChatWidget PR #281763
◦ include uppercase -I in sed in-place option detection PR #284645
◦ Fix context handling in ChatWidget while re-editing PR #285099
• @ThanhNguyxn (Thanh Nguyen): fix: Panel doesn't close when maximized and center-aligned (fixes #281772) PR #281773
• @tharani-2006: Terminal: show dimensions overlay while resizing PR #284244
• @tt0mmy (Tommy): Fix duplicate description in terminal suggestion config PR #279730
• @yavanosta (Dmitry Guketlev):
◦ Fix backward selection when EditContext is off PR #273150
◦ InlineEditsView: remove redeclaration of textModel PR #281501
◦ SingleUpdatedNextEdit: Correctly apply insertion changes PR #281519Contributions to vscode-copilot-chat:
• @AbdelrahmanAbouelenin (ababouelenin): Update system prompt for VSCModelB. PR #2727
• @bharatvansh (Ayush Singh): fix(byok): improve Gemini provider error handling and add tests PR #2686Contributions to vscode-js-profile-visualizer:
• @xiaoxiangmoe (ZHAO Jin-Xiang): chore: remove useless package-lock.json files PR #216Issue tracking
Contributions to our issue tracking:
• @gjsjohnmurray (John Murray)
• @RedCMD (RedCMD)
• @tamuratak (Takashi Tamura)
• @IllusionMH (Andrii Dieiev)
• @albertosantini (Alberto Santini)We really appreciate people trying our new features as soon as they are ready, so check back here often and learn what's new.
Original source
If you'd like to read release notes for previous VS Code versions, go to Updates on code.visualstudio.com. - Dec 10, 2025
- Date parsed from source:Dec 10, 2025
- First seen by Releasebot:Jan 7, 2026
Visual Studio Code by Microsoft
November 2025 (version 1.107)
VS Code 1.107.1 delivers major agent orchestration upgrades and workflow enhancements, pairing side‑by‑side agent sessions with background and cloud tasks, plus a comprehensive tutorial and expanded chat, tooling, and UI improvements for a more autonomous coding experience.
Update 1.107.1: The update improves the agent sessions experience, adds an agent workflow tutorial, and addresses these issues. The key highlights include:
• Agent sessions view defaults to side-by-side and remembers your toggle state.
• Agent sessions that require your input are now clearly marked.
• Support for copying workspace changes when creating a background session.
• Chat prompt is not cleared when creating a new session.
• Tool calls in cloud sessions are now collapsed by default.Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
VS Code 1.107 introduces multi-agent orchestration - use GitHub Copilot and custom agents together to accelerate and parallelize development.
• Agent HQ gives you one place to manage all your agents, letting Copilot and custom agents collaborate across tasks.
• Background agents run in isolated workspaces to not interfere with your active work, and enabling multiple background tasks at once.
• Delegate work across local, background, or cloud agents to keep your workflow moving without interruptions.Watch our VS Code 1.107 release highlights video to hear about these features from our engineers!
Happy Coding!Read these release notes online at Updates on code.visualstudio.com.
Insiders: Download the nightly Insiders build to try the latest updates as soon as they're available.
Agents
• Manage your agents from chat (Show more).
• Share agents across your organization (Show more).
• Keep agents active while chat is closed (Show more).
• Move agent sessions from local to cloud (Show more).
• Run agents in dedicated Git worktrees (Show more).
• Attach context to background agents (Show more).
• Customize background agents (Show more).
• Reuse custom agents across environments (Show more).
• Run custom subagents (Show more).
• Reuse Claude skills (Show more).Integrating agent sessions and chat
Setting: chat.viewSessions.enabled
Update 1.107.1: This update significantly improves the side-by-side sessions experience. Hiding the sessions with the toggle now remembers your choice, allowing you to resize the Chat view at will. Get started with the agent workflow tutorial.Agents are key to autonomously performing coding tasks on your behalf. The chat interface is the main way to interact with agents, regardless of where they are running: locally in VS Code, in the background using a CLI, in the cloud, or from 3rd party extensions. Learn more about using agents in VS Code in our documentation.
This iteration, we integrated the agent sessions into the Chat view to give you a unified experience when working with agents. At a glance, you can see the session's status, progress, and file change statistics. You can archive or unarchive sessions to keep the sessions list manageable.
If you are working in a workspace, the session list only shows sessions related to the current workspace. If you are in an empty window, all sessions across workspaces are shown.
When you select a session from the list, it opens the session in the Chat view in the Side Bar, allowing you to see the full conversation history. If you prefer, you can also open a session as an editor tab or in a new window. Right-click a session to see the context menu with these options.
You can disable the sessions list in the Chat view by configuring chat.viewSessions.enabled.
As a consequence of this change, we're disabling the standalone Agent Sessions view by default. If you prefer to keep using the standalone view, you can re-enable it via chat.agentSessionsViewLocation. In a future release, we plan to remove the standalone view entirely.
Compact view
When the Chat view is narrow, the list of sessions is shown inside the Chat view when you start a new chat session. By default, the list shows the three most recent sessions that are not archived.Select Show All Sessions to view the full list of sessions with options to search and filter.
You can use the action to toggle the agent sessions sidebar for a wider experience of all sessions.
Side-by-side view
Once the Chat view is wide enough (for example, when you maximize it), the list of agent sessions is automatically shown side-by-side with the Chat view. This view lets you quickly navigate between sessions without losing context. You can also manually toggle this side-by-side view using the corresponding control.To limit the sessions list, you can filter sessions by provider or state. VS Code persists this filter.
Orientation setting
Setting: chat.viewSessions.orientation
By default, the sessions list appears side-by-side with the Chat view when it's wide enough or if you manually toggle the sessions list. You can change this behavior with the chat.viewSessions.orientation setting.
• auto (default): show the sessions side-by-side if the width allows it, otherwise show them above empty chats
• stacked: always show the sessions above empty chats
• sideBySide: show the session list side-by-side if the width allows it, otherwise hide the sessions listLocal agent sessions remain active when closed
Previously, when you closed a local chat session, a running agent request was cancelled. This limited the usefulness of local agents for long-running tasks or for running multiple tasks simultaneously.Now, the local agent continues running in the background, even when not open in a chat editor or the Chat view. You are able to see the status of the running agent in the sessions list and can switch back to the session at any time to see the detailed progress.
Learn more about using local agent in chat.
Continue tasks in background or cloud agents
Local agents are great for interactive sessions inside VS Code where you can go back and forth with the agent. This can be useful for brainstorming, performing exploratory tasks, or to work out an implementation plan. Once you have a clear plan, you can then hand the task off to a background or cloud agent to execute it autonomously.This iteration, we have improved the experience to continue a local chat with a background or cloud agent. Across the UI, you can now continue a task seamlessly using the new Continue in option.
When you continue a local chat to background or cloud agent, the current chat context is passed along and the original session is archived after handoff.
• Chat view: (Screenshot showing the 'Continue in' button in the Chat view.)
• Plan agent: (Screenshot showing the 'Start implementation' button when using the Plan agent.)
• Untitled prompt file: (Screenshot showing the 'Continue in' button in an untitled prompt file.)Isolate background agents with Git worktrees
Background agents (previously called CLI agents) are designed to run autonomously in the background, allowing you to offload tasks while you focus on other work. Running multiple background agents simultaneously can lead to conflicts if they modify the same files in your workspace.This iteration, we enhanced the isolation of background agents by introducing support for Git worktrees. When you create a new background agent, you can choose to either run it on the current workspace or to run it in a dedicated Git worktree.
When you run a background agent in a worktree, the agent automatically creates a new Git worktree for the session, isolating its changes in a separate folder. This lets you run multiple background agents simultaneously without conflicts.
You can easily review and merge the changes made by the background agent in the worktree back into your main workspace when the agent completes its task. We've also added a new action to directly apply the changes from a worktree directly into your workspace.
Learn more about using background agents in VS Code.
Adding context to background agents
Background agents now support multiple context attachment types. You can attach selections, problems, symbols, search results, git commits, and more to any prompt. This makes it possible to build richer, more precise prompts, unlocking more complex and flexible workflows. For example, attach a reported problem and ask the agent to fix it without manually specifying file paths and line numbers.Share custom agents across your GitHub organization (Experimental)
Setting: github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents
Previously, you could only define custom agents at a workspace or user level. If you wanted to share custom agents across your organization, you had to manually distribute the agent files to each user.In this release, you can now define custom agents at the organization level for your GitHub account. This experimental feature enables you to use organization-specific agents alongside your personal agents in chat.
To enable this feature, set github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents to true. Once enabled, custom agents created by your organization appear in the Agents dropdown in VS Code.
To learn more about creating custom agents for your organization, see Create custom agents in the GitHub documentation.
Use custom agents with background agents (Experimental)
Setting: github.copilot.chat.cli.customAgents.enabled
You can now bring your own custom agents into Background Agents. Once enabled, custom agents defined in your .github/agents folder will appear in your agent list, allowing you to leverage agents tailored to your workflows and requirements.This experimental functionality can be enabled with the github.copilot.chat.cli.customAgents.enabled setting.
Learn more about defining custom agents in our documentation.
Agent tooling reorganization
We've reorganized the agent tooling structure to enable better compatibility with GitHub custom agents. This lets you more easily reuse custom agents across VS Code and GitHub environments without requiring separate configurations.As part of this change, we've renamed certain existing tool references and the toolsets they belong to. Existing tool references in your agent files will continue to work, but you'll see a Code Action for renaming them to the latest recommended format. This ensures that your agent configurations follow the current best practices and maintain compatibility across platforms.
Run agents as subagents (Experimental)
Setting: chat.customAgentInSubagent.enabled
When an agent needs to solve a complex issue, it can delegate tasks to subagents. Subagents work independently from the main chat session and have their own context window. This helps the main conversation to stay focused on the high-level objective and helps to manage context window limitations.With this release, you can customize subagents via custom agents. Custom agents let you define specialized personas for the AI, tailoring their behavior to specific tasks or domains. For example, a code reviewer agent focuses on reviewing code rather than make code changes.
To use custom agents as subagents, follow these steps:
• Enable chat.customAgentInSubagent.enabled
• Create a custom agent with the Chat: New Custom Agent command, if you don't have one yet.
• In chat, ask the model "what subagents can you use?" to see the list of available subagents. Your custom agent should appear in the list.
• Enter a prompt that meets the requirements for your custom agent. The language model uses the custom agent description and arguments to determine if it should be used for your request.To prevent a custom agent from being used as a subagent, set the metadata property infer to false in the *.agent.md file.
Learn more about using subagents in chat.
Reuse your Claude skills (Experimental)
Setting: chat.useClaudeSkills
Skills were introduced by Claude Code and are capabilities that an agent can load on-demand. Each skill comes with a short description that advertizes the skill. If useful, the agent can decide to read the full skill instructions. Skill instructions can come with supporting files like scripts and templates. Once loaded, skills instructions and supporting files are part of the context of the main conversation.VS Code can now reuse your existing skills. Enable the chat.useClaudeSkills setting to allow agents to discover and use your skills.
VS Code supports personal skills found at ~/.claude/skills/skill-name/SKILL.md and project skills found in workspace folders at ${workspaceFolder}.claude/skills/skill-name/SKILL.md.
Check that the SKILL.md file has a description attribute in the header that advertizes the skill. Note that the allowed-tools attribute is not supported in VS Code.
In agent mode, make sure you have the read-file tool enabled and ask "What skills do you have" to find out if skills are found. Next, make a request that can be answered with a skill. If the agent doesn't use the skill, improve the skill description or nudge the model to use skills.
Chat
• Inline chat is optimized for code edits (Show more).
• Manage your chat models (Show more).
• Review external web content (Show more).
• Fetch dynamic web content (Show more).
• Search ignored files (Show more).
• Access terminal output in chat (Show more).
• Automatically approve terminal commands for your session (Show more).
• More keyboard shortcuts are available (Show more).
• Use Entra ID for Azure-hosted models (Show more).
• Configure extended thinking budget for Anthropic models (Show more).
• Use chat more efficiently (Show more).
• View diffs for edits to sensitive files (Show more).
• Hide chat tool calls for reasoning models (Show more).Inline chat UX
Setting: inlineChat.enableV2
We continue to improve the inline chat experience to align it with the other chat experiences in VS Code and to optimize it for quick, single-file code changes.Previously, you could also use inline chat for general questions and discussions. Now, inline chat is optimized for code changes within the current file. For tasks that inline chat cannot handle, you are automatically upgraded to the Chat view where your prompt is being replayed, using the same model and the same context.
The inlineChat.enableV2 setting (preview) now only controls how the extension handles your prompt. This is still under development but can be tried with confidence.
Language Models editor
Chat in VS Code supports multiple language models, either provided by GitHub Copilot, third-party extensions, or via bring your own key (BYOK) providers. Managing all these models can be challenging, especially when you have access to many models across different providers. Learn more about using language models in VS Code.The Language Models editor provides a centralized place to view and manage all available language models for chat in VS Code. You can open it from the model picker in chat or via the Command Palette with Chat: Manage Language Models.
The editor lists all models available to you, showing key information such as the model capabilities, context size, billing details, and visibility status. By default, models are grouped by provider, but you can also group them by visibility.
Hover over model names or context sizes to see detailed information including model ID, version, status, and token breakdown.
You can search and filter models using:
• Text search with highlighting
• Provider filter: @provider:"OpenAI"
• Capability filters: @capability:tools, @capability:vision, @capability:agent
• Visibility filter: @visible:true/falseManage model visibility
As more models are available to you, the model picker can become overwhelming and difficult to navigate. In the Language Models editor, you can toggle the visibility of each model to control which models appear in the model picker. Hover over a model and select the eye icon to toggle its visibility.Add models from installed providers
From the Language Models editor, you can add more models with Add Models.... This shows a dropdown list of all installed model providers. Select a provider to configure it and add its models to chat in VS Code.This makes it easy to activate additional model providers you've installed without needing to navigate away from the Language Models editor. Access provider management by selecting the gear icon on provider rows.
URL and domain auto approval
This iteration, we enhanced the security and user experience of auto-approving URLs for the fetch tool. When the model decides to fetch content from a URL that you did not explicitly ask for, you'll see the new two-step approval experience:
• Approve the initial request to fetch the URL
This step ensures that you trust the domain being contacted and can prevent sensitive data to be sent to untrusted sites.
You have options for one-time approval or automatically approving future requests to the specific URL or domain.
The pre-approval respects the "Trusted Domains" feature. If a domain is listed there, you are automatically approved to make requests to that domain and are deferred to the response reviewing step.
• Approve to use the fetched content in chat and follow-up tool calls
This step ensures that you review the fetched content before it is added to the chat or passed to other tools, preventing potential prompt injection attacks.
For example, you might approve a request to fetch content from a well-known site, like GitHub.com. But because the content, such as issue description or comments, is user-generated, it could contain harmful content that might manipulate the model's behavior.Learn more about URL and domain approval in VS Code chat.
More robust fetch tool
The #fetch agent tool now handles dynamic web content more effectively. It can retrieve dynamic content, in addition to static HTML. Websites that rely on JavaScript to load their content, such as Single-Page Applications (SPAs), modern documentation sites, or issue tracking systems like Jira, no longer return incomplete or empty results.The fetch tool waits for JavaScript to execute and content to load before retrieving the page, ensuring that dynamically-rendered content is captured. This improvement makes the tool significantly more useful in real-life scenarios.
When you use #fetch followed by a URL, the model accesses the actual content you'd see in the browser, not just the initial HTML skeleton. This means more accurate and complete information when asking questions about web pages or requesting the model to analyze online content.
Text Search tool can search ignored files
The #textSearch tool now supports searching in ignored files/folders specified by files.exclude or search.exclude settings or .gitignore files, such as the node_modules folder. It also returns hints to the agent about the ignored files/folders when there are no results, allowing agents to turn around and enable searching in those ignored files/folders.Rich terminal output in chat
Using Toggle Output on a Run in Terminal response now renders output in a full, read-only xterm.js terminal inside chat. A nice benefit of this approach is that VS Code preserves captured output even after the backing terminal has exited, so you can reopen previous runs at any time and see the terminal output as it was when the command ran.The chat terminal now adopts the integrated terminal's color theme for improved ANSI color contrast. Screen reader users can open the accessible view Alt+F2 when the output has focus, enabling easy review and navigation.
Learn more about using terminal commands in chat.
Command status details in chat terminals
Chat terminal messages now display command start time, duration, and exit code on hover of the command decoration.Allow all terminal commands in this session
To optimize your chat experience, while maintaining security and control, the terminal tool has a new auto approve option to allow all future commands for the session. When you start a new session, terminal commands will follow the existing approval configuration.Keyboard shortcuts for chat terminal actions
You can now focus the most recent chat terminal Ctrl+Shift+Alt+T or toggle its expansion state Ctrl+Shift+Alt+O via dedicated keyboard shortcuts.Keyboard shortcuts for custom agents
Each custom agent now has a separate action in the command list for them and you can bind keyboard shortcuts to them individually. For example, if you define a "Code Reviewer" custom agent, there will be a Chat: Open Chat (Code Reviewer Agent) command in the Command Palette to bind a keyboard shortcut to.Azure model provider: Entra ID as the default authentication
Setting: github.copilot.chat.azureAuthType
By default, the Azure model provider now uses Entra ID authentication when connecting to Bring-Your-Own-Key (BYOK) models, providing improved security and a more streamlined sign-in experience.If you prefer to authenticate using an API key, set github.copilot.chat.azureAuthType to apiKey instead of entraId (default).
Anthropic models: Extended thinking support
Setting: github.copilot.chat.anthropic.thinking.budgetTokens
Anthropic models now support extended thinking, which is enabled by default for all Anthropic extended thinking models. Extended thinking gives Claude enhanced reasoning capabilities for complex tasks by allowing it to spend additional tokens on its step-by-step thought process before generating a response, leading to more thoughtful and accurate outputs.The default thinking budget is set to 4,000 tokens. You can customize this budget by modifying the github.copilot.chat.anthropic.thinking.budgetTokens setting to adjust how many tokens the model can use for extended thinking. To turn off extended thinking entirely, set the budget to 0.
Note: Interleaved thinking, which enables Claude to reason between tool calls, is only available when using Anthropic models via Bring-Your-Own-Key (BYOK). It uses the same thinking budget setting configured above.
Chat view appearance improvements
We've made several improvements to the Chat view's appearance to enhance readability and usability:
• Chat title:
When you open a chat, a new title control appears to the top showing you the title of the chat as well as giving you a quick way to get back to an empty chat. Configure this behavior via the chat.viewTitle.enabled setting.
• Welcome banner:
If you prefer a more minimal experience when opening a new chat, the new setting chat.viewWelcome.enabled lets you hide the icon and welcome text.
• Restore previous chat session:
When you open chat after restarting or opening a different workspace, the previous session is now restored by default. You can change this behavior via the chat.viewRestorePreviousSession setting and choose to always start with an empty chat.Diffs for edits to sensitive files
When chat attempts to edit sensitive files, such as the settings.json or package.json, you get a notification and are asked to approve the changes before they are applied. You can configure which files are considered sensitive via the chat.tools.edits.autoApprove setting.Previously, you would see the raw edit that the model proposed, which could be difficult to understand. Now, we show you a diff of the proposed changes, making it easier to review and approve the edits.
Collapsible reasoning and tools output (Experimental)
Setting: chat.agent.thinkingStyle, chat.agent.thinking.collapsedTools
With language model reasoning and agent tools output, a chat conversation can quickly become long and difficult to follow. Last iteration, we already worked on improving how we display thinking tokens in chat with the chat.agent.thinkingStyle setting.This iteration, we're further optimizing the chat experience by introducing collapsible chat sections for non-reasoning chat output, such as tool calls. By default, successive tool calls are now collapsed to reduce visual noise.
Collapsible items (most tools and reasoning text) will be summarized and an AI-generated title will be given to each collapsible section.
MCP
• We added support for the latest MCP specification (Show more).
• Use the GitHub remote MCP server without extra setup (Show more).Support for the latest MCP specification
VS Code supports the latest revision of the MCP specification, 2025-11-25. This includes, among other things:
• URL mode elicitation
• Tasks for long-running, resilient tool calls and client work.
• Enhancements to enum choices in elicitationThese improvements come in addition to the 2025-11-25 draft features VS Code already supported, such as WWW-Authenticate scope consent, the Client ID Metadata Document authentication flow, and icons for tools, resources, and servers. You can view the changelog for the 2025-11-25 draft on the MCP website.
Learn more about using MCP servers in VS Code.
GitHub MCP Server provided by GitHub Copilot Chat (Preview)
Setting: github.copilot.chat.githubMcpServer.enabled
The GitHub remote MCP Server is now provided as a built-in MCP server in the GitHub Copilot Chat extension, providing seamless integration with GitHub repositories and services. This integration offers several benefits:
• Alignment with other Copilot agent harnesses like Copilot CLI and Copilot Cloud Agent that already use the GitHub MCP Server
• Reuse of existing GitHub authentication state, eliminating additional authentication prompts
• Transparent support for different GitHub MCP endpoints including GHE.comTo enable the GitHub MCP Server, set github.copilot.chat.githubMcpServer.enabled setting to true. Once enabled, the server automatically appears in the tool picker when using agents. This enables you to ask questions about GitHub issues, pull requests, and other repository information without additional configuration and setup.
The GitHub MCP Server supports customization through several settings:
• github.copilot.chat.githubMcpServer.toolsets: Configure which tools are available. By default, the default toolset is used, but you can extend it by adding workflows or other toolsets as documented in the GitHub MCP Server documentation. Note: Adding certain toolsets may require additional permissions and re-authentication is not yet supported. Please see this GitHub issue to track progress.
• github.copilot.chat.githubMcpServer.readonly: Force the server to return only read-only tools, preventing any write operations.
• github.copilot.chat.githubMcpServer.lockdown: Additional security control for tool behavior.Note: This feature is currently in Preview and requires explicit opt-in through the setting mentioned above. We are planning to enable it by default in a future release in a way that makes it available when wanted, but not intrusive when not needed.
Accessibility
Keyboard approval for chat confirmations
When an agent prompts for confirmation, you can now approve via keyboard using Ctrl+Enter.Editor Experience
• More easily identify open projects (Show more).
• Swipe to navigate on macOS (Show more).
• Choose when to view hover popups (Show more).More support to indicate opened windows in pickers
We added an indicator to the Open Recent picker for when a workspace is already open in a VS Code window.The currently active window is indicated slightly differently from other opened windows to make that distinction clearer. Entries that are not opened in any window have no icon.
The indicator of which window is active has also been applied to the window picker.
macOS: Mouse swipe to navigate
Setting: workbench.editor.swipeToNavigate
On macOS you can now navigate between editors using 3-finger swipe gesture with the trackpad. Swiping left or right navigates across recently used editors in any editor group. Enable this with the workbench.editor.swipeToNavigate setting.Note: We currently only support 3-finger swipe gesture. Make sure that your trackpad settings for swiping are configured like the following to make this work:
• Swipe between pages: Scroll left or right with three fingers.
• Swipe between full-screen apps: Swipe left or right with four fingers.On demand editor hover popups
Setting: editor.hover.enabled
You can now disable automatic hover popups in the editor, while retaining the ability to trigger hover information on-demand using a keyboard modifier. The editor.hover.enabled setting now supports three values: on, off, and onKeyboardModifier.When set to onKeyboardModifier, hover information only appears when you hold the opposite modifier key from your editor.multiCursorModifier setting while hovering over code. This reduces visual distractions during text selection while preserving quick access to contextual information when needed.
For example, if your editor.multiCursorModifier is set to ctrlCmd, hover appears when you hold Alt while hovering. If set to alt, hover appears when you hold Ctrl (or Cmd on macOS).
Code Editing
• TypeScript offers rename suggestions (Show more).
• Use a new model for next edit suggestions (Show more).
• Preview next edit suggestions outside your viewport (Show more).Rename suggestions for TypeScript
Rename suggestions predict when a symbol rename should happen instead of a regular text suggestion. When predicted, an additional indicator is shown together with the normal textual edit. You can then apply the symbol rename by using Shift+Tab.In the following video, property a is renamed to width. The rename suggestion then suggests to rename b to height, as well as renaming the two parameters a and b accordingly. Next rename suggestion works best when it predicts related renames to other symbols.
Note: this feature is currently rolled out to our user base using an experiment and is only available for TypeScript for now. Support for other programming languages is planned.
New model for next edit suggestions
We have released a new model for next edit suggestions that is smarter and more in-tune with your latest edits. It delivers significantly better acceptance and dismissal performance. Learn more about the model and its development in our GitHub blog post.Preview next edit suggestions outside the viewport
When you receive a next edit suggestion that is outside the current viewport, it can be difficult to know what the suggestion is without scrolling away from your current position. We improved this experience by rendering a preview of the next edit suggestion where your cursor is currently located. This helps reduce the impact on your flow when reviewing suggestions.Note: Our current language model focuses on next edit suggestions close to the cursor, so you might not often see suggestions outside the viewport. However, we are actively working on models which can give you suggestions much further away!
Learn more about inline suggestions in VS Code.
Source Control
Stashes in the Source Control Repositories view (Experimental)
Settings: scm.repositories.explorer, scm.repositories.selectionMode
This milestone, we continued to expand the list of repository artifacts shown in the Source Control Repositories view by adding a Stashes node. Under this node, you can see the complete list of stashes, view, apply, and pop each stash. The context menu also contains an action to drop each stash.You can enable the experimental repository explorer by setting the scm.repositories.selectionMode and scm.repositories.explorer settings. Please give it a try and let us know what other repository artifacts you would like to see in the repositories explorer.
Learn more about using source control in VS Code.
Debugging
Attach variables to chat
You can now attach variables, scopes, and expressions to your chat context in VS Code. You can do this by right clicking on data in the Variables and Watch views, or by using the Add Context button in chat.Terminal
Terminal suggest rolled out to stable
Terminal Suggest is now enabled for stable users, offering inline completions and contextual hints while you type shell commands. Suggestions now group related argument values together, so option flags and their parameters stay organized in the list.Authentication
Cross-platform native broker support for Microsoft Authentication
Setting: microsoft-authentication.implementation
This milestone, we adopted the latest MSAL libraries, enabling you to sign in through a native experience on:
• Intel Macs
• Linux x64 (just certain distros that are Debian-based)This is in addition to the existing support for:
• Windows x64
• macOS M-series (ARM)macOS and Linux support requires your machine to be Intune enrolled and be opted in to using the native broker.
This enables nice single sign-on flows and is the recommended way of acquiring a Microsoft authentication session. The MSAL team will enable this up for the remaining platforms (Windows ARM, Linux ARM and additional distros) over time, so stay tuned!
NOTE: If you have trouble authenticating via the broker, you can change the microsoft-authentication.implementation to msal-no-broker, which will use your browser to authenticate instead.
classic Microsoft authentication no longer available
As mentioned last month, we have removed the classic option for microsoft-authentication.implementation due to low usage and it not being recommended by the Entra ID team.Reminder: The microsoft-authentication.implementation setting has been around to let users opt-out of native brokered authentication for Microsoft accounts if they experienced issues. The values for this setting are:
• msal - Use MSAL with brokered authentication when available (default)
• msal-no-broker - Use MSAL without brokered authenticationLanguages
TypeScript 7.0 preview
We continued to work with the TypeScript team to improve VS Code's support for the upcoming TypeScript 7 release. TypeScript 7 is a complete rewrite in native code and offers dramatically better performance.The TypeScript 7 preview has almost complete type checking support, and the TypeScript team has been busy adding editor features too. Recent highlights include auto import completions, rename support, and references code lenses.
You can try out TypeScript 7.0 today by installing the TypeScript (Native Preview) extension. Then run the TypeScript (Native Preview): Enable (Experimental) command in a JavaScript or TypeScript file to switch all IntelliSense to use the native preview. Checkout the most recent TypeScript 7 blog post for a full update on TypeScript 7 and the general direction of the TypeScript project.
We plan to continue working closely with the TypeScript team to improve TypeScript 7's VS Code support. Once TypeScript 7 is ready, our longer term plan is to switch to it as the default experience powering VS Code's JavaScript and TypeScript IntelliSense. If you need to use an older TS version or need editor features like TypeScript service plugins that can't be easily ported to TypeScript 7, we're planning to continue supporting existing TypeScript versions for the foreseeable future alongside TypeScript 7.0+.
Remote Development
The Remote Development extensions, allow you to use a Dev Container, remote machine via SSH or Remote Tunnels, or the Windows Subsystem for Linux (WSL) as a full-featured development environment.Highlights include:
• SSH reconnection grace time controlYou can learn more about these features in the Remote Development release notes.
Enterprise
Learn more about the enterprise capabilities of VS Code in our documentation.Control auto approval for agent tools
Setting: chat.tools.eligibleForAutoApproval
Specific agent tools can be risky to use without explicit user approval, especially those that can perform destructive actions, access sensitive data, or run arbitrary code in the background (for example, runTask).You can now define which tools are eligible for auto-approval with the new chat.tools.eligibleForAutoApproval setting. When a tool is denied from auto-approval, users won't have the option to always approve this tool in chat and must explicitly approve each use.
Organizations can enforce this behavior via an enterprise policy across their users to enhance security when using agents.
Disable the use of agents by policy
When an enterprise policy disables the use of agents in chat, the Agents picker now better communicates why they're not available.Support GitHub Enterprise policies in Codespaces
You can specify policies for your enterprise or organization in GitHub that are applied in VS Code. For example, you can configure the MCP registry URL to be used by developers in your organization.In this release, we added support for these policies when using VS Code with GitHub Codespaces. When a developer opens a Codespace, the same policies are applied automatically, as they already are when using VS Code locally.
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:
• Pull request and issue implicit context when a pull request or issue webview is active.
• Pull requests and issues can be added explicitly as context to chat sessions through "Add Context".
• Copilot pull requests can be marked ready for review, approved, and auto-merge set with a single button.Review the changelog for the 0.124.0 release of the extension to learn about everything in the release.
Proposed APIs
Contributed Chat Context
We have a new API proposal to let extensions contribute context providers for chat. This enables extensions to provide rich context from their own domain to be used in chat sessions. For example, the GitHub Pull Request extension provides the following context:
• Workspace context, with information about the current repository, branch, and pull request.
• Implicit pull request and issue context when a pull request or issue webview is active.
• Explicit pull request and issue context when the user adds them via "Add Context".The API is still in the early stages, so expect changes to come. We'd love to get feedback on what parts of the proposal will solve extension authors' needs. You can find the proposal here: vscode.proposed.chatContextProvider.d.ts.
Engineering
Builds rollout
We've started progressively rolling out Insiders build releases over a 4-hour time window. This means that, as an Insiders user, you might receive the update notification a bit later than usual. If you're in a hurry, you can always run Check for Updates to force the update to be applied immediately.We'll roll out the November 2025 (1.107) release to Stable users over a 24-hour time window. Just like Insiders, you can always run Check for Updates to force the update to be applied immediately.
Improved website search functionality
We've improved our website with fast, client-side search that allows you to easily and quickly navigate across our documentation.We've open-sourced the library behind this functionality: you can download docfind and use it for your projects today! We'll follow up with a blog post on the innovations behind this tech.
Updated build scripts run directly as TypeScript
This iteration, we cleaned up our build scripts to make them easier to work with and maintain. These build scripts were a mix of compiled TypeScript, TypeScript files run using ts-node, and JavaScript. Many of these scripts were not type checked and were using commonjs (require) instead of modern modules with import and export. Even worse, many of the TypeScript build scripts required checking in the compiled JS output to our source control. What a mess!Thankfully Node 22.18+ now allows running scripts directly as TypeScript. This lets us incrementally convert our build scripts to modern TypeScript. We used the follow tsconfig options to make sure our new TypeScript code could be run directly by Node:
{
"compilerOptions": {
"target": "esnext",
"module": "nodenext",
"noEmit": true, // Don't generate .js files
"erasableSyntaxOnly": true, // Only allow TypeScript syntax that node can strip out. Enums and namespaces for example are not allowed
"allowImportingTsExtensions": true, // Allow importing of .ts files
"verbatimModuleSyntax": true // Make sure imports will be valid when the script is run by node directly
}
}GitHub Copilot helped automate many of the required changes, such as converting old commonjs files to modules and adding type annotations.
One thing to keep in mind is that while Node can run TypeScript code, it doesn't actually type check it. You still need to use tsc for that. For vscode, we're actually using ts-go, which can fully type check all of our build scripts in well under a second.
It's pretty amazing to be able to run node build/hygiene.ts directly. Switching fully to TypeScript also lets us modernize and bring type safety to our build scripts, which will make it much easier to understand and make changes to them. Plus it enabled us to delete around 15,000 lines of compiled JS code that we previously had to keep checked in!
Copilot extensions unification
Setting: chat.extensionUnification.enabled
We have fully rolled out inline suggestions to be served from the GitHub Copilot Chat extension. As part of this change, the GitHub Copilot extension will be disabled by default for all users.If you run into any issues with inline suggestions, please report them. You can temporarily revert to the previous behavior by setting chat.extensionUnification.enabled to false, which reenables the GitHub Copilot extension.
Note that we are planning to fully deprecate the GitHub Copilot extension in January 2026, at which point the chat.extensionUnification.enabled setting will also be removed.
Notable fixes
• vscode#233635 - Add an action to close other windows
• vscode#262817 - Running "Move Editor into Previous Group" from the left-most group should create a new group to the left
• vscode#264569 - Setting and removing window.activeBorder color does not reset the window border color
• vscode#140186 - Cannot open local terminal when remote container is opened as a workspace
• vscode#228359 - Relaunching the terminal will often just close the terminal
• vscode#232420 - Terminal Cursor is at the wrong place with Python3.13
• vscode#247568 - Terminal Ctrl+Click on a file with colon in filename does not open the file, preceding zeroes are deleted
• vscode#275011 - Getting strange terminal message when opening VS Code in WSL on a trusted workspace
• vscode#275417 - Tasks with reveal:never, close:true no longer work on WSL
• vscode#277311 - Add "X" button to remove command from "recently used" list in Command Palette
• vscode#282222 - SCM - improve git blame/timeline/graph hover rendering. Thanks to Stanislav Fort (Aisle Research)
• vscode-python-environments#1000 - Environment activation is not working reliably with "Command Prompt"
• vscode-copilot-chat: multiple PRs fixing various issues
• vscode-js-debug: Dereferences of undefined at various places
• vscode-pull-request-github: multiple PRs adding features and fixes
• vscode-python: Fix Python REPL cursor drifting
• vscode-python-debugger: Update to latest debugpy
• vscode-python-environments: Support UvWorkspace envs too
• language-server-protocol: add slang-server
• node-native-keymap: Fix casing of msctf.h header
• node-pty: Add OpenBSD includes for termios and util
• python-environment-tools: Run commands without creating a console window on WindowsThank you to all contributors listed in the release notes.
Original source - Nov 12, 2025
- Date parsed from source:Nov 12, 2025
- First seen by Releasebot:Jan 7, 2026
Visual Studio Code by Microsoft
October 2025 (version 1.106)
VS Code's October 2025 release brings Agent HQ, stronger AI trust, and a smoother editor experience. It adds centralized agent sessions, post‑approval tool security, enhanced diff and terminal work, plus open source inline suggestions.
Welcome to the October 2025 release of Visual Studio Code.
This release brings significant updates across three key areas:
• Agent HQ is your single view to kick off, monitor, and review agent sessions, whether they're local or remote, from Copilot or OpenAI Codex
• Security and trust help you stay in control and confidently delegate more tasks to AI
• A great editor experience to make your day-to-day coding smoother and more enjoyableWatch our VS Code 1.106 release highlights video to hear about these features from our engineers!
Happy Coding!
If you'd like to read these release notes online, go to Updates on code.visualstudio.com.
Insiders: Want to try new features as soon as possible?
You can download the nightly Insiders build and try the latest updates as soon as they are available.Agents
Agent Sessions view
Setting: chat.agentSessionsViewLocation
As you hand off tasks to various coding agents, it's important to have a clear overview of all your active sessions. The Agent Sessions view provides a centralized location for managing your active chat sessions. This includes both local sessions in VS Code and sessions created by background agents in other environments, such as Copilot coding agent, GitHub Copilot CLI, or OpenAI's Codex. The Agent Sessions view is now enabled by default, and can be managed via the chat.agentSessionsViewLocation setting.
By default, the Agent Sessions view lists all your active chat sessions organized by their source. The view is divided into sections for local chat sessions in VS Code and for background agent sessions.
If you prefer to have one consolidated view of your sessions across all providers, you can enable the single-view option for the chat.agentSessionsViewLocation setting. This option also moves the Agent Sessions view next to the Chat view in the Secondary Side Bar, making it easier to switch between chat and managing your sessions.
Note that not all functionality is available in the consolidated view yet. We are actively working on making this view the default in the near future.
The Agent Sessions view now also supports search (Ctrl+Alt+F) to help you easily find your sessions in the list.
Plan agent
A new plan agent helps developers break down complex tasks step-by-step before any code is written. Select Plan from the agents dropdown in the Chat view to get started. When tackling a multi-step implementation, VS Code prompts you with clarifying questions and generates a detailed implementation plan that you approve first, ensuring all requirements and context are captured upfront.
We recommend spending time iterating on the plan before implementation. You can refine requirements, adjust scope, and address open questions multiple times to build a solid foundation. Once you approve the plan, Copilot implements it either locally in VS Code or via cloud agents, giving you greater control and visibility into the development process. This helps you catch gaps or missing decisions early, reducing rework and improving code quality.
You can also create your own custom plan agent tailored to your team's specific workflow and tools. Use the Configure Custom Agent menu to copy the built-in plan agent as a starting point, then customize the planning style, tools, and prompts to match your development process. Learn more about planning in VS Code chat and creating custom agents.
Cloud agents
In this release, we have made quite a few updates to cloud agent sessions in the editor.
We migrated the Copilot coding agent integration from the GitHub Pull Request extension into the Copilot Chat extension to provide a more native cloud agent experience in VS Code. This integration paves the way for smoother transitions and interactions between VS Code and GitHub Mission Control, such as opening a cloud agent session directly from the Agent Sessions view in the browser and vice versa.
CLI agents
In this release, we have also shipped an initial integration with the Copilot CLI. You can create new and resume existing CLI agent sessions in a chat editor or an integrated terminal.
In a CLI agent editor, you can send messages to the Copilot CLI just as you would in a terminal, switch models, and attach context.
Agent delegation
We continue to improve the experience for delegating to cloud agents.
When you use the cloud button to delegate to an agent from the chat panel, you'll be provided a set of available agents to which you can delegate. You can also delegate to the Copilot coding agent from the CLI, via the /delegate command in a CLI editor or terminal instance.
CLI agent edit tracking
Chat edit sessions now track edits made by background agents, such as the Copilot CLI. When you create sessions from the Agent Sessions view, you can see edits tracked through both inline edit pills and the working set view, making it easier to understand what changes agents are making to your workspace.
Chat modes renamed to custom agents
Chat modes have been renamed to custom agents throughout VS Code to better align with terminology used in other environments.
When you create custom agents, the definition files are now located in .github/agents in your workspace. These files can use the .agents.md suffix and can also be used as GitHub Copilot Cloud Agents and CLI Agents.
Use Chat: New Custom Agent... to create a new agent and Chat: Configure Custom Agents... to manage them.
If you have existing custom chat modes (.chatmode.md files in .github/chatmodes), they continue to work and are automatically treated as custom agents. When you open a chat agent file in the editor, an info marker appears on the first line with a quick fix to migrate it to a custom agent file.
Custom agent metadata
Custom agent .agent.md files now accept an additional target frontmatter property to describe how an agent should run across environments:
• target: vscode: optimizes the agent for local chat and unlocks name, description, argument-hint, model, tools, and handoffs properties. Any tool installed in VS Code can be used.
• target: github-copilot: prepares the agent for Copilot cloud agents or the GitHub CLI with support for name, description, tools, mcp-servers, and target. Tools can be edit, search, shell, custom-agent, and tools from MCP servers.All agents can be run in all environments. Each environment ignores unknown attributes and tools.
Additional properties:
• name: lets you override the agent label without renaming the file.
• argument-hint: surfaces guidance in the chat input so teammates know how to prompt the agent.
• handoffs: wires guided transitions to other agents, letting you chain multi-step workflows.The agent file editor provides validation, code completions, hovers and code actions.
Learn more about custom agents and agent handoffs in our documentation.
Code Editing
Deleted code in diff editor is now selectable
Previously, when you deleted code and viewed the changes in the diff editor, you couldn't copy those deleted lines. In this release, you can now select and copy text from deleted lines in the diff editor when using the inline diff view.
Inline suggestions are open source
This release continues our journey to make VS Code an open source AI editor. Following our first milestone of open sourcing GitHub Copilot Chat, we've now open sourced inline suggestions by merging them into the vscode-copilot-chat repository.
As part of this milestone, we're consolidating the GitHub Copilot extension and GitHub Copilot Chat extension into a single extension experience. The Chat extension now serves all inline suggestions, providing the same intelligent code suggestions you're used to while maintaining all chat and agent functionality. The change should be transparent, you'll continue getting the same code suggestions as you type. If you encounter any issues, you can temporarily revert using the chat.extensionUnification.enabled setting.
The GitHub Copilot extension will be deprecated by early 2026. Learn more about this milestone and explore the open source code in our blog post.
Snooze inline suggestions from gutter
You can now snooze inline suggestions directly from the gutter icon. When you hover over the gutter icon, a control appears with a Snooze option. Select it and choose a duration to pause suggestions.
Go to line improvements
This iteration, we've made several enhancements to the Go to Line command (Ctrl+G), improving navigation within files.
The Go to Line command now supports navigating to a specific character position in a file by using the :: syntax. This is useful when tools report errors at specific character offsets, such as "error at position 599".
To navigate to a character offset, type :: followed by the character number in the Go to Line input box. For example:
• ::599 - Navigate to character 599 in the file
• ::-100 - Navigate 100 characters from the end of the fileUse the toggle in the input box to switch between 1-based (default) and 0-based offset calculations.
In addition, the Go to Line command also handles out-of-range values more gracefully and makes it easier to navigate to the start or end of files and lines:
• Line numbers: Typing a line number larger than the file's line count navigates to the last line.
• Column numbers: Using negative column numbers navigates from the end of a line. For example, :12:-1 takes you to the last character on line 12. Typing a column number larger than the length of the line takes you to the end of the line.Editor Experience
Refreshed iconography
In this release, the codicon icon set has had a facelift. The new icons have been refined with curves, new modifier designs, and more accurate metaphors to make them feel modern, friendly and more legible.
Linux policy support
We've introduced support for managing VS Code policies on Linux systems using JSON files. This allows administrators to enforce specific settings and configurations across all users on a Linux machine.
For more details, see JSON Policies on Linux.
Navigate changes in multi file diff editor
Just like you can navigate to next or previous changes in a diff editor for a single file, you can now do so across files in the multi-file diff editor. Use keybindings or the navigation up and down arrow keys to review your changes across files.
Copy diagnostic hover text
A copy button now appears in diagnostic hovers (errors, warnings, info, and hints) to make copying error messages easier. When you hover over a diagnostic marker, move your mouse over the hover message to reveal a copy button in the top-right corner.
Accent-insensitive command filtering
The Command Palette now ignores character accents when searching for commands, making it easier to find what you need regardless of your keyboard layout or language preferences. For example, when searching for a command containing the word Générer (French for Generate), type generer without accents and matching commands appear in the results.
This is helpful when using different keyboard layouts or when mistyping while looking for a command. The filtering is based on Unicode Normalization Form D and supports all Unicode languages.
Advanced VS Code settings
VS Code now supports the concept of advanced settings. These settings are meant for configuring specialized scenarios and are intended for advanced users who need fine-grained control over their environment. By default, advanced settings are hidden in the Settings editor, keeping the interface streamlined while making these powerful options available when needed.
To view and configure advanced settings, select Advanced from the filter dropdown menu in the Settings editor, or type @tag:advanced in the search box.
When you search for a specific setting by its exact name or use the @id: filter, advanced settings appear in the results without having to apply the Advanced filter. This ensures you can always find the settings you're looking for.
Advanced settings can be combined with other filters such as @modified or @feature: to help you find exactly what you need. For example, @tag:advanced @feature:terminal shows only advanced settings related to the terminal.
Note: Extension authors can mark their settings as advanced by adding the advanced tag to the setting configuration.
Chat
Embeddings-based tool selection
In this release we've significantly improved how we filter and group tools for users that have many (over 100) tools enabled in chat. You should see the "Optimizing tool selection..." loading state less often and for a shorter period of time. We also improved tool selection with a lower probability of agent confusion to make sure the right tools are chosen.
Tool approvals and trust
Post-approval for external data
Agent tools that pull in external data now support post-approval. This helps protect against potential prompt injection attacks by letting you review the data before it's used in your chat session.
Post-approval is enabled for the #fetch tool and for Model Context Protocol (MCP) tools that declare openWorldHint.
Trust all tools for a server or extension
You can now trust MCP servers and extension tools at the source level through the Allow button dropdown. This means that you can approve all tools from a specific MCP server or extension at once, rather than having to approve each tool individually.
We have also updated the Chat: Manage Tool Approval command experience to let you manage both pre- and post-approval of tools.
Tool auto approval status moved
Auto approval status has moved from being inline inside the chat view to the tool call status/tick icon.
Terminal tool
Auto approve parser improvements
Previously, subcommand detection in the terminal tool used the naive approach of just splitting on certain strings such as | or &&. This failed in several ways but the bigger ones were when pipe was used inside strings like echo "a|b|c", which would detect the subcommands echo, b, and c". Another important one is that since we couldn't reliably pull subcommands, we outright banned parenthesis pairs, curly brace pairs, and backticks to be more on the safe side and prevent accidental execution.
This release, we integrated a parser into the feature and use a PowerShell grammar or a bash grammar for everything else*. So, even really complex cases should be correctly extracted.
- Note that this means it can fail to catch subcommands when the shell syntax differs from bash, such as ; in zsh.
File write/redirection detection (Experimental)
Thanks to the new parser, we're able to fairly reliably extract files being written to via redirection. There's the new experimental setting chat.tools.terminal.blockDetectedFileWrites that will prevent auto approval conditionally.
Disable default auto approve rules (Experimental)
The new experimental setting chat.tools.terminal.ignoreDefaultAutoApproveRules allows disabling the default rules (both allow and deny rules). This is useful if you want more control without needing to look up the defaults.
Shell specific prompts and command rewriting
The terminal tool now has shell-specific descriptions for PowerShell, bash, zsh and fish. This should make commands suggested by the agent more reliable and less likely to fail, especially for PowerShell.
In addition to this, for PowerShell we also re-write && to ; since the && chain operator is not supported in Windows PowerShell (v5). Note that this is temporarily also happening for PowerShell 7 until vscode#274548 is actioned.
Attach terminal commands to chat
You can now attach a terminal command to chat as context from the command decoration's context menu. The attachment shares the command line, captured output, and exit code so the agent understands precisely what happened. This applies to any command tracked by shell integration, making it easy to escalate troubleshooting without copying and pasting text.
View terminal output inside chat (Experimental)
The new chat.tools.terminal.outputLocation setting controls where the output is displayed. The default none value prevents the terminals from cluttering the panel.
Every chat terminal invocation now surfaces two actions on the progress element:
• Show Terminal reveals and focuses hidden sessions, and with rich shell integration, scrolls directly to the relevant command. With basic or no shell integration, the action still focuses the correct terminal tab.
• Show Output opens the terminal's final output inline within the chat view. The output view expands automatically when a command exits with a non-zero code.When npm i fails, the output is automatically expanded. The terminal is revealed with the Show Terminal inline action.
Discover hidden chat terminals (Experimental)
When setting(chat.tools.terminal.outputLocation):none, a new X hidden terminal(s) button appears in the terminal tabs view when there is at least one hidden chat terminal. It opens a quick pick that lists each chat terminal alongside its chat session so you can immediately focus the right process. The same picker is available from the terminal overflow menu under View Hidden Chat Terminals, and it disappears once all chat terminals are visible again.
The agent runs ls -la, which succeeds, so the output is collapsed. The hidden terminal action is taken from the tabs view and the terminal is selected, revealed, and scrolled to highlight the command.
Save conversation as prompt
You can now save your chat conversations as reusable prompts with the /savePrompt command. When you invoke /savePrompt in an active chat session, VS Code generates a prompt file containing a generalized prompt based on your conversation. The editor displays a blue button that lets you save this prompt to a valid location, either at the user or workspace level.
This feature replaces the previous /save command and provides a more streamlined workflow for capturing and sharing useful conversation patterns. The generated prompts can be easily reused in future chat sessions or shared with your team. Learn more about custom prompt files.
Edit welcome prompts
You can now right-click on suggested prompts in the Chat welcome view to access additional actions. When you right-click a prompt (or press Shift+F10), a context menu appears with an Edit Prompt File option to open the corresponding prompt file directly in the editor.
Editing a prompt file works for prompts that have an associated file, including user-defined prompts and project-specific prompts configured through the chat.promptFilesRecommendations setting.
Learn more about custom prompt files.
Automatically open edited files
Setting: chat.openEditedFilesAutomatically
We changed the default behavior of the agent to no longer automatically open edited files in an editor. If you prefer the previous behavior, you can enable the setting accessibility.openChatEditedFiles.
Reasoning (Experimental)
Setting: chat.agent.thinkingStyle, chat.agent.thinking.collapsedTools
Last iteration, we added the chat.agent.thinkingStyle setting which enabled displaying thinking tokens in chat. This is now available in more models! As of this release, GPT-5-Codex, GPT-5, GPT-5 mini, and Gemini 2.5 Pro support this.
The chat.agent.thinkingStyle was adjusted to three more common styles, with fixedScrolling as the default to show the most recent chain of thoughts.
An additional setting, chat.agent.thinking.collapsedTools, adds tool calls into the collapsible thinking UI.
Inline chat v2 (Preview)
Setting: inlineChat.enableV2
We have ramped up our efforts to modernize inline chat. It's built to be
• single prompt,
• single file,
• and for code changes onlyThis makes the overall experience much lighter and allows for a simplified UI. For tasks it cannot handle, you'll be automatically upgraded to the Chat view.
Chat view UX improvements
We tweaked some parts of the Chat view to make it feel more pleasant to use:
• The action to create a new Chat is now a dropdown with options to create a chat session in the editor or in a new window
• The tools and MCP server actions moved right next to the model picker
• The configuration dropdown is cleaned upIt is now also possible to copy math source by right-clicking math expressions in the chat view.
MCP
MCP server access for your organization
Settings: chat.mcp.gallery.serviceUrl, chat.mcp.access
VS Code now supports MCP registry configured through GitHub organization policies. This enables organizations to set up a custom MCP registry and control which MCP servers can be installed and started.
When an MCP registry endpoint is configured in your organization's policies, VS Code will:
• Provide browsing and installing of MCP servers from the configured registry
• Restrict starting MCP servers to only those available in the registry when access restriction is enabledWhen your organization has configured these policies, the chat.mcp.gallery.serviceUrl setting specifies the MCP registry endpoint URL, and the chat.mcp.access setting controls whether access is restricted to only the servers in that registry. These settings will be marked as "(Managed by organization)" in the Settings editor.
To learn more about configuring MCP server access for your organization or enterprise, see Configure MCP server access.
Install MCP servers to workspace configuration
When installing an MCP server, you can now choose whether to install it globally or to the workspace configuration. Right-click on an MCP server in the extensions view and select Install (Workspace) from the context menu, or use the Install (Workspace) action directly in the MCP server editor. This adds the MCP server to the .vscode/mcp.json file in your current workspace, making it easier to share MCP servers with your team.
Authentication: Client ID Metadata Document authentication flow
Authentication support for remote MCPs now supports the Client ID Metadata Document (CIMD) authentication flow, which is the future standard for OAuth in MCP. This flow enables a more secure and scalable solution to authentication over Dynamic Client Registration (DCR) because now authorization servers do not have to worry about issuing client IDs per-client.
When connecting to an MCP server that uses an authorization server that supports CIMD, VS Code will automatically use that flow over DCR.
For more information about CIMD, take a look at the resources on oauth.net.
Authentication: WWW-Authenticate scope step up
Authentication support for remote MCPs now supports dynamic scope escalation through the WWW-Authenticate header for remote MCP servers. This is called out in the OAuth 2.0 specification. This allows MCP servers to request additional permissions when needed, rather than requiring all scopes upfront. For example, connecting to a server might require a minimal set of scopes, but specific tool calls can request broader permissions only when necessary. This provides better security by following the principle of least privilege.
This is currently called out in the latest draft of the MCP specification which is expected to be finalized soon.
Accessibility
Speech timeout is disabled by default
The configuration accessibility.voice.speechTimeout has changed to be 0 by default. This means, a voice session no longer ends automatically after a certain delay (e.g. a Chat request would not be triggered automatically if you pause). We feel this is a better default experience, but you can always change back to the previous default (2500).
Chat input improvements
The chat input now announces the active agent and model in a clearer order so screen reader users hear the most relevant context first. The chat accessibility help also calls out that you can press Delete to remove attached context items, making attachment management fully keyboard-accessible.
Notebooks
Notebook search
Notebooks now support searching across cells. Use key bindings (F3 and Shift+F3) to navigate to the next and previous match, just like you would in the editor.
Source Control
Folding support in git commit messages
Settings: git.verboseCommit, git.useEditorAsCommitInput
When writing git commit messages in the editor, you can now fold sections of the commit message to keep things organized. To use this feature, enable the git.verboseCommit and git.useEditorAsCommitInput settings.
Graph incoming/outgoing changes
Settings: scm.graph.showIncomingChanges, scm.graph.showOutgoingChanges
This milestone, we are adding the capability to easily view incoming and outgoing changes in the Source Control Graph view. For active branches that have incoming or outgoing changes, the graph displays an "Incoming Changes" and "Outgoing Changes" node. Selecting each node displays the list of incoming or outgoing files.
You can hide this information from the Graph view by using the scm.graph.showIncomingChanges and scm.graph.showOutgoingChanges settings.
Graph compare references
We have added a new command to the Source Control Graph context menu, Compare with..., that enables you to compare a history item in the graph with an arbitrary branch or tag. This feature lets you view changes that are in the history item but not in the branch or tag.
In the context menu, there are shortcuts commands, Compare with Remote and Compare with Merge Base for comparing a history item with the remote branch and merge base respectively.
Repositories selection mode
Setting: scm.repositories.selectionMode
The Source Control Repositories view shows the list of opened repositories in the workspace and is used to control the repositories shown in the Source Control Changes view.
We are looking to expand the functionality of the Repositories view and in preparation for that, we are introducing a setting, scm.repositories.selectionMode, to control the selection mode in the Repositories view to either a single repository or multiple repositories.
Apart from the new functionality in the Repositories view, this also allows us to remove the repository picker in the Graph view's title and have a global repository picker across all source control views. You can toggle the selection mode using the setting, or from the "..." menu of the Repositories view.
New Repository menu
Users can use the scm/repository menu id to contribute commands to the inline source control provider rows in the new Source Control Repositories view. Commands contributed to the "inline" group will appear inline, while all other commands will appear in the ... menu.
Repositories explorer (experimental)
Settings: scm.repositories.explorer, scm.repositories.selectionMode
We are looking at enhancing the Repositories view and showing additional information for each repository. To try out this experimental feature, set scm.repositories.selectionMode and scm.repositories.explorer.
In this first iteration, we have focused on branches and tags. You can create new branches, tags, view the list of branches and tags, and take various actions of each branch/tag (ex: checkout, etc.). In the upcoming milestone, we will add more information (ex: stashes, remotes, etc). Give this experimental feature a try and let us know what you think.
Testing
Navigate uncovered lines in test coverage
When reviewing test coverage, you can now easily navigate between uncovered lines using new navigation commands. Two commands are available in the editor toolbar when viewing coverage information:
• Go to Next Uncovered Line - Jumps to the next line that is not covered by tests
• Go to Previous Uncovered Line - Jumps to the previous line that is not covered by testsThese commands help you quickly identify coverage gaps and focus on areas that need additional test coverage, making it easier to improve the overall test quality of your codebase.
Terminal
Terminal IntelliSense
Terminal IntelliSense has been in the product as an experimental/preview feature for around 1.5 years! This release we're removing the preview tag and will be doing a staged roll out as the default to all users on stable.
When enabled, typing in the terminal will bring up IntelliSense similar to the editor for PowerShell, bash, zsh and fish.
Some commands feature advanced specifications, like git which has the ability to pull in branch names.
If we learned anything when building this feature it's that no one size fits all, so there are many options to tweak the behavior to get what you're after:
• terminal.integrated.suggest.quickSuggestions - Show automatically depending on the content of the command line, as opposed to manually via Ctrl+Space.
• terminal.integrated.suggest.suggestOnTriggerCharacters - Show automatically after a "trigger character" such as - or /.
• terminal.integrated.suggest.runOnEnter - Optionally run the command when Enter is used (not Tab).
• terminal.integrated.suggest.windowsExecutableExtensions - The list of extensions that are treated as executables on Windows.
• terminal.integrated.suggest.providers - Provides the ability to disable specific providers, for example extensions may contribute completions you don't want.
• terminal.integrated.suggest.showStatusBar - Whether to show the status bar at the bottom of the IntelliSense popup.
• terminal.integrated.suggest.cdPath - Whether to enable $CDPATH integration.
• terminal.integrated.suggest.inlineSuggestion - Whether to integrate with shell "ghost text" and how to present it.
• terminal.integrated.suggest.upArrowNavigatesHistory - Whether up arrow is sent to the shell instead of browsing completions, this is particularly useful on zsh where you can filter and then press up to do a history search with that prefix.
• terminal.integrated.suggest.selectionMode - How the Intellisense popup is focused which determines what Enter and Tab do.
• (New!) terminal.integrated.suggest.insertTrailingSpace - Insert a trailing space and re-trigger completions after accepting.If you don't see the feature yet, make sure you have shell integration enabled and enable IntelliSense explicitly in settings via terminal.integrated.suggest.enabled.
Apart from overall polish, this is what is coming to the feature this release:
• copilot and azd CLIs now have completions
• The extension API is close to finalization
• Git commit completions show the commit messageConsolidated shell integration timeout setting
We now have one unified configurable setting, terminal.integrated.shellIntegration.timeout, that controls how long VS Code waits for shell integration to become ready before executing commands in the terminal, including those triggered through the executeCommand API and by Copilot terminal tool.
chat.tools.terminal.shellIntegrationTimeout has been deprecated in favor of this consolidation.
Authentication
Manage extension account preferences discoverability
The Manage Extension Account Preferences command is now more discoverable. In addition to being available in the Command Palette and extension context menus, it now appears in the Account Menu alongside Manage Language Model Access. This makes it easier to find and configure which accounts extensions can access.
Last version of classic Microsoft authentication - use msal-no-broker if you experience issues
We will be removing the classic option for microsoft-authentication.implementation. This means that VS Code release 1.106 is the final version that has the classic option.
The microsoft-authentication.implementation setting has been around to let users opt-out of native brokered authentication for Microsoft accounts if they experienced issues. The values for this setting are:
• msal - Use MSAL with brokered authentication when available (default)
• msal-no-broker - Use MSAL without brokered authentication (introduced recently)
• classic - Use the classic Microsoft authentication flow without MSALWe will remove the classic option since its usage is very low and most issues with the msal option are due to the brokering, which is remedied with msal-no-broker.
Device code flow for Microsoft authentication
Microsoft authentication now supports the device code flow in non-brokered scenarios, particularly useful for remote development environments. When other authentication methods fail, VS Code automatically falls back to device code flow, which displays a code that you can enter on another device to complete authentication.
Manage accounts command
Manage your authentication accounts directly from the Command Palette using the Accounts: Manage Accounts command. This command provides access to account management features when the Account menu is hidden or not easily accessible.
When you run the Manage Accounts command, you'll see a quick pick menu listing all your active accounts. You can select an account to view available actions, including:
• Manage Trusted Extensions - Control which extensions can access the selected account
• Manage Trusted MCP Servers - Manage MCP server access permissions for accounts that support this capability
• Sign Out - Sign out of the accountLanguages
Python
Python Environments Extension: Support for python.poetryPath setting
The Python Environments Extension now respects the existing python.poetryPath user setting. This allows you to specify which Poetry executable to use. The provided path will be searched for and selected when managing Poetry environments.
Python Environments Extension: Improved venv creation: dev-requirements.txt detection
When creating a new virtual environment, the extension now detects both requirements.txt and dev-requirements.txt files and installs dependencies automatically.
Add Copilot Hover Summaries as docstring
You can now add your AI-generated documentation directly into your code as a docstring using the new Add as docstring command in Copilot Hover Summaries. When you generate a summary for a function or class, navigate to the symbol definition and hover over it to access the Add as docstring command, which inserts the summary below your cursor formatted as a proper docstring.
This streamlines the process of documenting your code, allowing you to quickly enhance readability and maintainability without retyping.
Localized Copilot Hover Summaries
GitHub Copilot Hover Summaries inside Pylance now respect your display language within VS Code. When you invoke an AI-generated summary, you'll get strings in the language you've set for your editor, making it easier to understand the generated documentation.
Convert wildcard imports Code Action
Wildcard imports (from module import *) are often discouraged in Python because they can clutter your namespace and make it unclear where names come from, reducing code clarity and maintainability. Pylance now helps you clean up modules that still rely on from module import * via a new Code Action. It replaces the wildcard with the explicit symbols, preserving aliases and keeping the import to a single statement. To try it out, you can click on the line with the wildcard import and press Ctrl+. (or Cmd+. on macOS) to select the Convert to explicit imports Code Action.
dotenv
There is built-in basic support for dotenv files (.env), which are commonly used to define environment variables for applications.
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:
• AI-generated PR descriptions (via githubPullRequests.pullRequestDescription) will respect the repository PR template if there is one.
• Drafts in the Pull Requests view now render in italics instead of having a [DRAFT] prefix.
• Pull requests can be opened from a URL, for example: vscode-insiders://github.vscode-pull-request-github/checkout-pull-request?uri=https://github.com/microsoft/vscode-css-languageservice/pull/460Review the changelog for the 0.122.0 release of the extension to learn about everything in the release.
Preview Features
Language Models editor
A new Language Models editor provides a centralized place to view and manage all available language models for GitHub Copilot Chat. You can open it from the chat model picker or via the command Chat: Manage Language Models.
Note: This feature is only available in VS Code Insiders.
The editor displays:
• All available models organized by provider
• Model capabilities (tools, vision, agent)
• Context size and multiplier information
• Model visibility statusYou can search and filter models using:
• Text search with highlighting
• Provider filter: @provider:"OpenAI"
• Capability filters: @capability:tools, @capability:vision, @capability:agent
• Visibility filter: @visible:true/falseHover over model names or context sizes to see detailed information including model ID, version, status, and token breakdown.
Manage model visibility
Control which models appear in the chat model picker by toggling their visibility with the eye icon next to each model. When a model is visible, it appears in the model picker dropdown when you're using GitHub Copilot Chat, making it available for selection. Hidden models remain in the Language Models editor but won't appear in the model picker, helping you keep your model selection focused on the ones you use most frequently.
This is particularly useful when you have access to many models and want to streamline your workflow by showing only your preferred models in the picker.
Add models from installed providers
Use the Add Models... button to configure and add models from language model providers you've already installed. When you select this button, you'll see a dropdown list of all installed model providers, such as Copilot, Anthropic, Azure, Google, Groq, Ollama, OpenAI, and others. Select a provider from the list to configure it and start using its models in GitHub Copilot Chat.
This makes it easy to activate additional model providers you've installed without needing to navigate away from the Language Models editor. Access provider management by selecting the gear icon on provider rows.
Extension Authoring
ID token in authentication sessions
The AuthenticationSession interface now includes an optional idToken property. This allows authentication providers to return ID tokens in addition to access tokens, which is particularly useful for scenarios that require user identity information. The Microsoft authentication provider returns this field, while other providers like GitHub may not.
ID tokens contain claims about the authenticated user and are signed by the identity provider, making them useful for verifying user identity. For more information about the difference between ID tokens and access tokens, see https://oauth.net/id-tokens-vs-access-tokens/.
View containers in Secondary Side Bar
Extension authors can now register view containers in the Secondary Side Bar by using the new secondarySidebar contribution point. This lets extensions place their custom views alongside built-in views like Chat in the Secondary Side Bar and provide a better integration with VS Code's dual side bar layout.
Proposed APIs
Quick Pick and Quick Input improvements
The Quick Pick and Quick Input APIs include several new capabilities that give extension developers more flexibility in creating interactive user interfaces.
Extensions can add toggle buttons to Quick Pick and Quick Input interfaces through the toggles property on QuickInput. This enables scenarios like a password visibility toggle in the input box area, allowing users to interact with controls without leaving the quick pick interface.
Quick Pick supports a prompt property, similar to the one available in Input Box. The prompt displays persistent text beneath the input box that remains visible while users type, providing helpful guidance or instructions that doesn't disappear when the user starts entering text.
Quick Pick items can display file-type-specific icons through the resourceUri property on QuickPickItem. When you provide a resource URI, VS Code automatically derives the appropriate label, description, and icon based on the resource type, matching your current theme's file icon set. This is particularly useful when building file or folder selection interfaces, as users can quickly identify items by their familiar file type icons.
GitHub-style alerts in MarkdownStrings (#209652)
We have added support for rendering GitHub-style alert syntax in MarkdownString by setting a new property supportAlertSyntax.
This enables extensions to render alerts in various places in the UI, such as comments.
MarkdownString support in TreeItem labels (#115365)
Extension authors can now use MarkdownString in tree view item labels, enabling a subset of Markdown syntax including codicons and text formatting. This allows extensions to create more visually rich tree views.
Engineering
Exploration of automated UX PR testing
We've introduced a new automation workflow that helps reviewers understand UI changes in pull requests without manually checking out and running the code. By adding the ~copilot-video-please label to a pull request with UI changes, an automated process kicks off that:
• Builds VS Code from the PR branch
• Uses GitHub Copilot CLI to interact with the changes and record a video along the way - leveraging playwright-mcp
• Generates a Playwright trace for detailed inspection
• Posts the results as a comment on the PRWhile it's still early, this workflow can reduce the manual effort required for code review, especially for small UI changes. The videos and traces help reviewers quickly verify that changes work as expected. Currently, the videos are only accessible to team members.
For more details about this automation, see https://github.com/microsoft/vscode/issues/272529.
macOS 11.0 support has ended
VS Code 1.106 is the last release that supports macOS 11.0 (macOS Big Sur). Refer to our FAQ for additional information.
Notable fixes
- Add setting for extensions request timeout used when installing extensions
- Tasks do not trigger onDidStartTerminalShellExecution
- /** is automatically closed with */ in .gitignore files
- First input gets ignored on pwsh/conpty
- Copilot 'configure instructions' quickpick doesn't show workspace-level agent instruction files (copilot-instructions.md, AGENTS.md)
- Network: Load intermediate certification authorities on Windows
Thank you
Issue tracking
Contributions to our issue tracking:
• @RedCMD (RedCMD)
• @gjsjohnmurray (John Murray)
• @IllusionMH (Andrii Dieiev)
• @albertosantini (Alberto Santini)
• @Accurio (Accurio)Pull Requests
Contributions to vscode:
• @avarayr (avarayr): fix: Increase workbench border radius on macos tahoe
• @baptiste0928 (Baptiste Girardeau): fix: resolve renamed paths on merge editor
• @barroit (barroit): Fix tabstop calc in tokenizeLineToHTML()
• @Benimautner: Fix: don't apply inertial scrolling if input device is a mouse.
• @danielbayley (Daniel Bayley): Add TM_DIRECTORY_BASE snippets variable
• @dibarbet (David Barbet): Hookup semantic tokens range refresh notification to the viewport contribution
• @dnicolson (Dave Nicolson): Update activation event linter message
• @DrSergei (Sergei Druzhkov): Fix disassembly view
• @gjsjohnmurray (John Murray): Show the Learn How to Hide AI Features in more situations (fix #268450)
• @imbant (imbant): fix(chat): correct file icon rendering in Files & Folders picker
• @JeffreyCA: Add Fig spec for Azure Developer CLI (azd)
• @Selva-Ganesh-M (Selva Ganesh M): fix(editor)(#_261780): transform UPPER_CASE to PascalCase
• @SimonSiefke (Simon Siefke): fix: memory leak in gettingStarted, output view, notebook text model, InlayHints, chat session tracker, getTerminalActionBarArgs, sticky scroll, chat welcome
• @sinsincp: Fix AppUserModelID for code-workspace association
• @Skn0tt (Simon Knott): Testing - Uncompleted result should be marked as skipped
• @subin-chella (subin): fix the bug #209943
• @tamuratak (Takashi Tamura): chat: always apply prompt file and auto-attach instructions. Fix #271624, fix(chat): guard against undefined customModes.custom Fix #272223 and #272236
• @yavanosta (Dmitry Guketlev): Fix memory leak in InlineEditsGutterIndicator (#_273549)Contributions to vscode-copilot-chat:
• @24anisha: Built-in toolsets for default tools
• @AbdelrahmanAbouelenin (ababouelenin): Custom vsc model prompt
• @devm33 (Devraj Mehta): Update repo URL in @vscode/chat-lib package
• @DGideas (Wanlin Wang 王万霖): Improve error handling for Copilot Chat when 404
• @IanMatthewHuff (Ian Huff): Fix issue with internal git repo telemetry collection
• @joelverhagen (Joel Verhagen): Allow latest server.json schema in assisted NuGet MCP install flow
• @phawrylak (Paweł Hawrylak): Add security-sensitive file extensions to workspace indexing exclusion listContributions to vscode-html-languageservice:
• @obrobrio2000 (Giovanni Magliocchetti): Add setting to disable end tag suggestions
Contributions to vscode-json-languageservice:
• @Legend-Master (Tony): Escape plain text description hover correctly
Contributions to vscode-languageserver-node:
• @dibarbet (David Barbet): Clear workspace pull state on document close to prevent stale diagnostics
Contributions to vscode-pull-request-github:
• @bendrucker (Ben Drucker): Enable all LLM tools in prompts (agent mode)
• @gerardbalaoro (Gerard Balaoro): Make branch list timeout configurable (#_2840)
• @wankun-tcj: Fix avatar display issue in Pull Request tree viewContributions to vscode-test-cli:
• @bwateratmsft (Brandon Waterloo [MSFT]): Bump version ahead of release
Contributions to debug-adapter-protocol:
• @rsubtil (Ricardo Subtil): Add Godot to the list of DAP adapters
Contributions to language-server-protocol:
• @kristoff-it (Loris Cro): Update servers.md
Contributions to monaco-editor:
• @flofriday (Florian Freitag): Fix Kotlin number literals
Contributions to node-pty:
• @devm33 (Devraj Mehta): Load native addons directly from prebuilds directory
Contributions to python-environment-tools:
• @VictorColomb (Victor Colomb): fix(poetry): pep503 normalize package name
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.
Original source - Nov 1, 2025
- Date parsed from source:Nov 1, 2025
- First seen by Releasebot:Jan 7, 2026
Visual Studio Code by Microsoft
Version 1.107
Version 1.107 is now available! Read about the new features and fixes from November.
Original source