Visual Studio Code Release Notes

Last updated: Jan 7, 2026

  • Dec 10, 2025
    • Parsed from source:
      Dec 10, 2025
    • Detected 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 list

    Local 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/false

    Manage 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 elicitation

    These 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.com

    To 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 authentication

    Languages
    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 control

    You 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 Windows

    Thank you to all contributors listed in the release notes.

    Original source Report a problem
  • Nov 12, 2025
    • Parsed from source:
      Nov 12, 2025
    • Detected 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 enjoyable

    Watch 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 file

    Use 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 only

    This 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 up

    It 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 enabled

    When 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 tests

    These 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 message

    Consolidated 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 MSAL

    We 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 account

    Languages

    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/460

    Review 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 status

    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/false

    Hover 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 PR

    While 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 list

    Contributions 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 view

    Contributions 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 Report a problem
  • Nov 1, 2025
    • Parsed from source:
      Nov 1, 2025
    • Detected 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 Report a problem
  • Nov 1, 2025
    • Parsed from source:
      Nov 1, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    Version 1.107

    Version 1.107 brings Open Sourcing of the GitHub Copilot Chat extension under MIT and plans to lift Copilot into the core VS Code. Subscriptions stay unchanged and a Copilot Free plan remains available. A clear path for community contributions and timeline updates.

    Version 1.107 is now available! Read about the new features and fixes from November.

    Open sourcing AI in VS Code

    We've open sourced the GitHub Copilot Chat extension under the MIT license and are bringing relevant components into VS Code core. Read all details in our announcement blog post and first milestone update.

    Does this affect my current GitHub Copilot subscription? Is GitHub Copilot free now?

    This change does not affect current GitHub Copilot subscriptions. To use GitHub Copilot, you'll continue to need both a GitHub account, and access to a GitHub Copilot subscription.

    Individual developers who don't have access to Copilot through an organization or enterprise have access to the GitHub Copilot free plan (restrictions may apply). If that plan doesn't meet your needs, you can sign up for a Copilot paid plan or bring your own model keys.

    Will the GitHub Copilot backend services also be open sourced?

    The GitHub Copilot services are not affected and will remain closed source.

    What is the timeline? When can I provide a contribution to the AI experience in VS Code?

    We have completed the first step of this process by open sourcing the GitHub Copilot Chat extension. The source code is available in the microsoft/vscode-copilot-chat repository.

    In the coming months, we will bring the relevant components of the Copilot Chat extension into the core VS Code repository. Check our plan item for details and updates about the timeline.

    Our goal is to make the experience for contributing to our AI features as simple as contributing to any part of VS Code. As part of this, we want to make it possible to use the Copilot backend services for debugging and testing purposes when contributing. Check the CONTRIBUTING.md file for details on how to contribute.

    Why integrate GitHub Copilot into the core VS Code repository?

    In the time since GitHub Copilot was first released, it's become clear that AI-powered tools are core to how we write code. From usage telemetry, we can see that more users are actually using AI features in VS Code than some other features like debugging or testing.

    Making AI functionality a core part of VS Code is a reaffirmation in our belief that working in the open leads to a better product for our users and fosters a diverse ecosystem of extensions.

    I'm an extension author. How am I affected?

    We maintain backwards compatibility for stable APIs. You should not expect any impact on your extension. We're continuously evolving and expanding the VS Code extension APIs based on feedback from extension authors. If you need additional APIs to make your extension successful, we would love to hear from you – please file an API request in the microsoft/vscode repo.

    I already use other AI coding extensions in VS Code (Cline, Roo Code, ...). How does this affect me?

    You can continue to use these extensions in VS Code! We love that the community is building extensions to make the developer experience in VS Code better. To improve the experience for other AI extensions, we're constantly adding APIs like the Language Model API for directly calling language models from an extension, the Tools API for interacting with language model tools and integrating with the built-in or your own agents, or the Shell Execution API for running and interacting with terminal commands (particularly useful for agentic experiences). Going forward, we are planning to add even more APIs to meet the needs of extension authors.

    Will this change anything about how you collect data?

    No, nothing is changing. By open sourcing GitHub Copilot Chat, we are making it fully transparent how we collect data and enable you to verify this in the source code. Learn more about telemetry in VS Code and the GitHub Copilot Trust Center.

    How will the VS Code team prioritize between AI features and non-AI features in future releases?

    We believe that AI-powered tools are core to how we write code. We invest in both AI features and improving the core editor experience. This is also reflected in a 50/50% split of the team working on AI versus other features. Many of the non-AI features might not always be as visible to the user, such as performance, security, accessibility, Electron updates, and more.

    Will bringing AI features into the core VS Code repository affect the (startup) performance of VS Code?

    Performance is our core priority and we are committed to maintaining the performance of VS Code as we integrate AI features. In addition, if you don't enable AI functionality in VS Code, no associated background processes will run that could affect performance.

    Can I disable AI functionality in VS Code?

    You can disable the built-in AI features in VS Code with the chat.disableAIFeatures setting, similar to how you configure other features in VS Code. This disables and hides features like chat or inline suggestions in VS Code and disables the Copilot extensions. You can configure the setting at the workspace or user level.

    Alternatively, use the Learn How to Hide AI Features action from the Chat menu in the title bar to access the setting.

    Note
    If you have previously disabled the built-in AI features, your choice is respected upon updating to a new version of VS Code.

    If I disable AI functionality in VS Code, is my data still sent to Microsoft?

    No, if you disable AI functionality in VS Code or if you don't login to your Copilot subscription from VS Code, your data is not sent to the Copilot backend services. Learn more about telemetry in VS Code and the GitHub Copilot Trust Center.

    Are the models that VS Code uses in the Copilot extension open source (OSS)?

    No. The models used by GitHub Copilot are licensed separately, and that does not change. In fact, most of those models are from third parties such as OpenAI, Anthropic and Google...

    What is the difference between Visual Studio Code and Visual Studio IDE?

    Visual Studio Code is a streamlined code editor with support for development operations like debugging, task running, and version control. It aims to provide just the tools a developer needs for a quick code-build-debug cycle and leaves more complex workflows to fuller featured IDEs, such as Visual Studio IDE.

    Is VS Code free?

    Yes, VS Code is free for private or commercial use. See the product license for details.

    If you don't yet have a Copilot subscription, you can use Copilot for free by signing up for the Copilot Free plan and get a monthly limit of inline suggestions and chat interactions.

    Platform support

    Which OSs are supported?

    VS Code runs on macOS, Linux, and Windows. See the Requirements documentation for the supported versions. You can find more platform specific details in the Setup overview.

    Can I run VS Code on older Windows versions?

    Microsoft ended support and is no longer providing security updates for Windows 7, Windows 8, and Windows 8.1. VS Code desktop versions starting with 1.71 (August 2022) no longer run on Windows 7 and starting with 1.80 (June 2023) will no longer run on Windows 8 and 8.1. You will need to upgrade to a newer Windows version to use later versions of VS Code.

    VS Code will no longer provide product updates or security fixes on old Windows versions. VS Code version 1.70.3 is the last available release for Windows 7 users and version 1.79 will be the last available release for Windows 8 and 8.1 users. You can learn more about upgrading your Windows version at support.microsoft.com.

    Additionally, 32-bit OEM support has been dropped with Windows 10, version 2004. The last stable VS Code version to support Windows 32-bit is 1.83 (September 2023). You will need to update to the 64-bit release.

    Can I run VS Code on old macOS versions?

    VS Code desktop version starting with 1.105 (September 2025) is deprecating support for macOS Big Sur (version 11.0 and older). Starting with VS Code 1.107 (November 2025), we will stop updating VS Code on macOS Big Sur (version 11.0 and older). You will need to upgrade to a newer macOS version to use later versions of VS Code.

    VS Code will no longer provide product updates or security fixes on macOS Big Sur (versions 11.0 and older) and VS Code version 1.106 will be the last available release for macOS Big Sur (11.0 and older). You can learn more about upgrading your macOS version at support.apple.com.

    Can I run VS Code on older Linux distributions?

    Starting with VS Code release 1.86.1 (January 2024), VS Code desktop is only compatible with Linux distributions based on glibc 2.28 or later, for example, Debian 10, RHEL 8, or Ubuntu 20.04.

    If you are unable to upgrade your Linux distribution, the recommended alternative is to use our web client. If you would like to use the desktop version, then you can download the VS Code release 1.85 from here. Depending on your platform, make sure to disable updates to stay on that version. A good recommendation is to set up the installation with Portable Mode.

    Can I run a portable version of VS Code?

    Yes, VS Code has a Portable Mode that lets you keep settings and data in the same location as your installation, for example, on a USB drive.

    Telemetry and crash reporting

    How to disable telemetry reporting

    VS Code collects usage data and sends it to Microsoft to help improve our products and services. Read our privacy statement and telemetry documentation to learn more.

    If you don't want to send usage data to Microsoft, you can set the telemetry.telemetryLevel user setting to off.

    From File > Preferences > Settings, search for telemetry, and set the Telemetry: Telemetry Level setting to off. This will silence all telemetry events from VS Code going forward.

    Important Notice: VS Code gives you the option to install Microsoft and third party extensions. These extensions may be collecting their own usage data and are not controlled by the telemetry.telemetryLevel setting. Consult the specific extension's documentation to learn about its telemetry reporting.

    How to disable experiments

    VS Code uses experiments to try out new features or progressively roll them out. Our experimentation framework calls out to a Microsoft-owned service and is therefore disabled when telemetry is disabled. However, if you want to disable experiments regardless of your telemetry preferences, you may set the workbench.enableExperiments user setting to false.

    From File > Preferences > Settings, search for experiments, and uncheck the Workbench: Enable Experiments setting. This will prevent VS Code from calling out to the service and opt out of any ongoing experiments.

    How to disable crash reporting

    VS Code collects data about any crashes that occur and sends it to Microsoft to help improve our products and services. Read our privacy statement and telemetry documentation to learn more.

    If you don't want to send crash data to Microsoft, you can change the telemetry.telemetryLevel user setting to off.

    From File > Preferences > Settings, search for telemetry, and set the Telemetry: Telemetry Level setting to off. This will silence all telemetry events including crash reporting from VS Code. You will need to restart VS Code for the setting change to take effect.

    GDPR and VS Code

    Now that the General Data Protection Regulation (GDPR) is in effect, we want to take this opportunity to reiterate that we take privacy very seriously. That's both for Microsoft as a company and specifically within the VS Code team.

    To support GDPR:
    • The VS Code product notifies all users that they can opt out of telemetry collection.
    • The team actively reviews and classifies all telemetry sent (documented in our OSS codebase).
    • There are valid data retention policies in place for any data collected, for example crash dumps.

    You can learn more about VS Code's GDPR compliance in the telemetry documentation.

    What online services does VS Code use?

    Beyond crash reporting and telemetry, VS Code uses online services for various other purposes such as downloading product updates, finding, installing, and updating extensions, or providing Natural Language Search within the Settings editor. You can learn more in Managing online services.

    You can choose to turn on/off features that use these services. From File > Preferences > Settings, and type the tag @tag:usesOnlineServices. This will display all settings that control the usage of online services and you can individually switch them on or off.

    Licensing

    Location

    You can find the VS Code licenses, third party notices and Chromium Open Source credit list under your VS Code installation location resources\app folder. VS Code's ThirdPartyNotices.txt, Chromium's Credits_*.html, and VS Code's English language LICENSE.txt are available under resources\app. Localized versions of LICENSE.txt by language ID are under resources\app\licenses.

    Why does Visual Studio Code have a different license than the vscode GitHub repository?

    To learn why Visual Studio Code, the product, has a different license than the open-source vscode GitHub repository, see issue #60 for a detailed explanation.

    What is the difference between the vscode repository and the Microsoft Visual Studio Code distribution?

    The github.com/microsoft/vscode repository (Code - OSS) is where we develop the Visual Studio Code product. Not only do we write code and work on issues there, we also publish our roadmap and monthly iteration and endgame plans. The source code is available to everyone under a standard MIT license.

    Visual Studio Code is a distribution of the Code - OSS repository with Microsoft specific customizations (including source code), released under a traditional Microsoft product license.

    See the Visual Studio Code and 'Code - OSS' Differences article for more details.

    What does "Built on Open Source" mean?

    Microsoft Visual Studio Code is a Microsoft licensed distribution of 'Code - OSS' that includes Microsoft proprietary assets (such as icons) and features (Visual Studio Marketplace integration, small aspects of enabling Remote Development). While these additions make up a very small percentage of the overall distribution code base, it is more accurate to say that Visual Studio Code is "built" on open source, rather than "is" open source, because of these differences. More information on what each distribution includes can be found in the Visual Studio Code and 'Code - OSS' Differences article.

    Extensions

    Are all VS Code extensions open source?

    Extension authors are free to choose a license that fits their business needs. While many extension authors have opted to release their source code under an open-source license, some extensions like Wallaby.js, Google Cloud Code, and the VS Code Remote Development extensions use proprietary licenses.

    At Microsoft, we have a mix of open and closed source extensions. Reliance on existing proprietary source code or libraries, source code that crosses into Microsoft licensed tools or services (e.g., the C# DevKit extension uses the Visual Studio subscription license model, see License), and business model differences across the entirety of Microsoft may result in extensions choosing a proprietary license. You can find a list of Microsoft contributed Visual Studio Code extensions and their source code licenses in the Microsoft Extension Licenses article.

    How do I find the license for an extension?

    Most extensions will have a link to their license on the Marketplace page (their "Read Me" document), found on the right column under Resources. If you don't find a link, you may find the license in the extension's repository if it is public, or you can contact the extension author through the Q & A section of the Marketplace.

    Can I use a Microsoft extension outside of VS Code?

    No. While the source code for an extension from Microsoft may be open source, we do not license extensions from Microsoft or its affiliates that are published to and acquired from the Visual Studio Marketplace for use outside of the Visual Studio family of products: Microsoft Visual Studio, Visual Studio Code, GitHub Codespaces, Azure DevOps, Azure DevOps Server, and successor products and services offered by us and Microsoft affiliates, such as GitHub, Inc. We build, test, deploy, and support these extensions and services only in the Visual Studio family of products, to ensure they meet our security and quality standards. We do not do this for extensions elsewhere, including those built on a fork of the Code - OSS Repository. Please see Conditions: Use Rights for Marketplace/NuGet Offerings in the Visual Studio Marketplace Terms of Service for more information.

    I can't access the Visual Studio Marketplace from product << fill in the blank >>, why not?

    We provide the Visual Studio Marketplace for use only by the Visual Studio family of products: Microsoft Visual Studio, Visual Studio Code, GitHub Codespaces, Azure DevOps, Azure DevOps Server, and successor products and services offered by us and Microsoft affiliates, such as GitHub, Inc. Therefore, alternative products including those built on a fork of the Code - OSS Repository, are not permitted to access the Visual Studio Marketplace. We do this to protect the security and quality of the ecosystem, including the following measures:
    • Extensions run in the context and with the permissions of the product, and they might contain executable code. The Marketplace vets every extension for security and to prevent them from performing malicious activity. When you install an extension with a product in the Visual Studio family, you know that it has been vetted to run in that context.
    • When a malicious extension is reported and verified, or a vulnerability is found in an extension dependency, the extension is removed from the Marketplace, added to a block list, and automatically uninstalled by VS Code.
    • Microsoft spends considerable resources in running, maintaining, and securing this global online service. Products in the Visual Studio family are designed to access the Marketplace in a secure and reliable manner, so that the Marketplace is available when you need it.
    • Extensions might integrate deeply with the product. The Marketplace ensures that we maintain API compatibility and that extensions use the product's extensions APIs correctly. This helps ensure that extensions you install work correctly across version updates.

    See #31168 for additional details on this topic.

    Why should I install extensions from the Visual Studio Marketplace?

    Installing extensions from the Visual Studio Marketplace has many advantages over installing them from other sources.
    • The Visual Studio Marketplace employs several mechanisms to protect you from installing malicious extensions, including malware scanning, dynamic detection, publisher verification, and more. When you install extensions from a different source, there is no guarantee that the extension is safe to run in your context.
    • When a malicious extension is reported and verified, or a vulnerability is found in an extension dependency, the extension is removed from the Marketplace, added to a block list, and automatically uninstalled by VS Code.
    • The Marketplace enables you to easily find, install, and update extensions. When an update is available, for example because of a security fix, VS Code automatically installs the updated version.
    • Extensions might integrate deeply with the product. The Marketplace ensures that we maintain API compatibility and that extensions use the product's extensions APIs correctly. This helps ensure that extensions you install work correctly across version updates.

    Report an issue with a VS Code extension

    For bugs, feature requests or to contact an extension author, you should use the links available in the Visual Studio Code Marketplace or use Help: Report Issue from the Command Palette. However, if there is an issue where an extension does not follow our code of conduct, for example it includes profanity, pornography or presents a risk to the user, then we have an email alias to report the issue. Once the mail is received, our Marketplace team will look into an appropriate course of action, up to and including unpublishing the extension.

    VS Code versions

    How do I find my current VS Code version?

    You can find the VS Code version information in the About dialog box.

    On macOS, go to Code > About Visual Studio Code.

    On Windows and Linux, go to Help > About.

    The VS Code version is the first Version number listed and has the version format 'major.minor.release', for example '1.100.0'.

    Previous release versions

    You can find links to some release downloads at the top of a version's release notes:

    If you need a type of installation not listed there, you can manually download via the following URLs:

    Substitute the specific release you want in the {version} placeholder. For example, to download the Linux Arm64 debian version for 1.83.1, you would use

    https://update.code.visualstudio.com/1.83.1/linux-deb-arm64/stable

    You can use the version string latest, if you'd like to always download the latest VS Code stable version.

    Windows 32-bit versions

    Windows x86 32-bit versions are no longer actively supported after release 1.83 and could pose a security risk.

    Prerelease versions

    Want an early peek at new VS Code features? You can try prerelease versions of VS Code by installing the "Insiders" build. The Insiders build installs side by side to your stable VS Code install and has isolated settings, configurations, and extensions. The Insiders build is updated nightly so you'll get the latest bug fixes and feature updates from the day before.

    To install the Insiders build, go to the Insiders download page.

    How do I opt out of VS Code auto-updates?

    By default, VS Code is set up to auto-update for macOS and Windows users when we release new updates. If you do not want to get automatic updates, you can set the Update: Mode setting from default to none.

    To modify the update mode, go to File > Preferences > Settings, search for update mode and change the setting to none.

    If you use the JSON editor for your settings, add the following line:

    "update.mode": "none"

    You can install a previous release of VS Code by uninstalling your current version and then installing the download provided at the top of a specific release notes page.

    Note: On Linux: If the VS Code repository was installed correctly then your system package manager should handle auto-updating in the same way as other packages on the system. See Installing VS Code on Linux.

    Opt out of extension updates

    By default, VS Code will also auto-update extensions as new versions become available. If you do not want extensions to automatically update, you can clear the Extensions: Auto Update check box in the Settings editor (Ctrl+,).

    If you use the JSON editor to modify your settings, add the following line:

    "extensions.autoUpdate": false

    Where can I find the Visual Studio Code icons?

    Are there guidelines for using the icons and names?

    You can download the official Visual Studio Code icons and read the usage guidelines at Icons and names usage guidelines.

    What is a VS Code "workspace"?

    A VS Code "workspace" is usually just your project root folder. VS Code uses the "workspace" concept in order to scope project configurations such as project-specific settings as well as config files for debugging and tasks. Workspace files are stored at the project root in a .vscode folder. You can also have more than one root folder in a VS Code workspace through a feature called Multi-root workspaces.

    You can learn more in the What is a VS Code "workspace"? article.

    Problems and issues

    Installation appears to be corrupt [Unsupported]

    VS Code does a background check to detect if the installation has been changed on disk and if so, you will see the text [Unsupported] in the title bar. This is done since some extensions directly modify (patch) the VS Code product in such a way that is semi-permanent (until the next update) and this can cause hard to reproduce issues. We are not trying to block VS Code patching, but we want to raise awareness that patching VS Code means you are running an unsupported version. Reinstalling VS Code will replace the modified files and silence the warning.

    You may also see the [Unsupported] message if VS Code files have been mistakenly quarantined or removed by anti-virus software (see issue #94858 for an example). Check your anti-virus software settings and reinstall VS Code to repair the missing files.

    Resolving shell environment fails

    When VS Code is launched from a terminal (for example, via code .), it has access to environment settings defined in your .bashrc or .zshrc files. This means features like tasks or debug targets also have access to those settings.

    However, when launching from your platform's user interface (for example, the VS Code icon in the macOS dock), you normally are not running in the context of a shell and you don't have access to those environment settings. This means that depending on how you launch VS Code, you may not have the same environment.

    To work around this, when launched via a UI gesture, VS Code will start a small process to run (or "resolve") the shell environment defined in your, .bashrc, .zshrc, or PowerShell profile files. If, after a configurable timeout (via application.shellEnvironmentResolutionTimeout, defaults to 10 seconds), the shell environment has still not been resolved or resolving failed for any other reason, VS Code will abort the "resolve" process, launch without your shell's environment settings, and you will see an error like the following:

    If the error message indicates that resolving your shell environment took too long, the steps below can help you investigate what might be causing slowness. You can also increase the timeout by configuring the application.shellEnvironmentResolutionTimeout setting. But keep in mind that increasing this value means you will have to wait longer to use some of the features in VS Code, such as extensions.

    If you see other errors, please create an issue to get help.

    Investigate slow shell initialization

    The process outlined below may help you identify which parts of your shell initialization are taking the most time:
    • Open your shell's startup file (for example, in VS Code by typing ~/.bashrc or ~/.zshrc in Quick Open (Ctrl+P)).
    • Selectively comment out potentially long running operations (such as nvm if you find that).
    • Save and fully restart VS Code.
    • Continue commenting out operations until the error disappears.

    Note: While nvm is a powerful and useful Node.js package manager, it can cause slow shell startup times, if being run during shell initialization. You might consider package manager alternatives such as asdf or search on the internet for nvm performance suggestions.

    Launch VS Code from a terminal

    If modifying your shell environment isn't practical, you can avoid VS Code's resolving shell environment phase by launching VS Code directly from a fully initialized terminal.
    • Typing code from an open terminal will launch VS Code with your last workspace.
    • Typing code . will launch VS Code open to the current folder.

    VS Code is blank?

    The Electron shell used by Visual Studio Code has trouble with some GPU (graphics processing unit) hardware acceleration. If VS Code is displaying a blank (empty) main window, you can try disabling GPU acceleration when launching VS Code by adding the Electron --disable-gpu command-line switch.

    If this happened after an update, deleting the GPUCache directory can resolve the issue.

    VS Code gets unresponsive right after opening a folder

    When you open a folder, VS Code will search for typical project files to offer you additional tooling (for example, the solution picker in the Status bar to open a solution). If you open a folder with lots of files, the search can take a large amount of time and CPU resources during which VS Code might be slow to respond. We plan to improve this in the future but for now you can exclude folders from the explorer via the files.exclude setting and they will not be searched for project files:

    "files.exclude": {
    "**/largeFolder": true
    }

    Technical support channels

    You can ask questions and search for answers on Stack Overflow and enter issues and feature requests directly in our GitHub repository.

    If you'd like to contact a professional support engineer, you can open a ticket with the Microsoft assisted support team.

    12/10/2025

    Original source Report a problem
  • Nov 1, 2025
    • Parsed from source:
      Nov 1, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    Version 1.107

    Version 1.107 brings a fresh monthly update to the VS Code Extension API with new features and APIs for extensions. Learn how to build, debug, test, and publish extensions, plus themes, UI extensions, Webviews, and language support. A clear release note for developers advancing extension capability.

    Version 1.107 is now available!

    Read about the new features and fixes from November.

    Extension API

    Visual Studio Code is built with extensibility in mind. From the UI to the editing experience, almost every part of VS Code can be customized and enhanced through the Extension API. In fact, many core features of VS Code are built as extensions and use the same Extension API.

    This documentation describes:

    • How to build, run, debug, test, and publish an extension
    • How to take advantage of VS Code's rich Extension API
    • Where to find guides and code samples to help get you started
    • Following our UX guidelines for best practices

    Code samples are available at Microsoft/vscode-extension-samples.
    If you are looking for published extensions, head to the VS Code Extension Marketplace.

    What can extensions do?

    Here are some examples of what you can achieve with the Extension API:

    • Change the look of VS Code with a color or file icon theme - Theming
    • Add custom components & views in the UI - Extending the Workbench
    • Create a Webview to display a custom webpage built with HTML/CSS/JS - Webview Guide
    • Support a new programming language - Language Extensions Overview
    • Support debugging a specific runtime - Debugger Extension Guide

    If you'd like to have a more comprehensive overview of the Extension API, refer to the Extension Capabilities Overview page.
    Extension Guides Overview also includes a list of code samples and guides that illustrate various Extension API usage.

    How to build extensions?

    Building a good extension can take a lot of time and effort. Here is what each section of the API docs can help you with:

    • Get Started teaches fundamental concepts for building extensions with the Hello World sample.
    • Extension Capabilities dissects VS Code's vast API into smaller categories and points you to more detailed topics.
    • Extension Guides includes guides and code samples that explain specific usages of VS Code Extension API.
    • UX Guidelines showcases best practices for providing a great user experience in an extension.
    • Language Extensions illustrates how to add support for a programming language with guides and code samples.
    • Testing and Publishing includes in-depth guides on various extension development topics, such as testing and publishing extensions.
    • Advanced Topics explains advanced concepts such as Extension Host, Supporting Remote Development and GitHub Codespaces, and Proposed API.
    • References contains exhaustive references for the VS Code API, Contribution Points, and many other topics.

    What's new?

    VS Code updates on a monthly cadence, and that applies to the Extension API as well. New features and APIs become available every month to increase the power and scope of VS Code extensions.
    To stay current with the Extension API, you can review the monthly release notes, which have dedicated sections covering:

    • Extension authoring - Learn what new extension APIs are available in the latest release.
    • Proposed extension APIs - Review and give feedback on upcoming proposed APIs.

    Looking for help

    If you have questions for extension development, try asking on:

    • VS Code Discussions: GitHub community to discuss VS Code's extension platform, ask questions, help other members of the community, and get answers.
    • Stack Overflow: There are thousands of questions tagged vscode-extensions, and over half of them already have answers. Search for your issue, ask questions, or help your fellow developers by answering VS Code extension development questions!
    • VS Code Dev Slack: Public chatroom for extension developers. VS Code team members often join in the conversations.

    To provide feedback on the documentation, create new issues at Microsoft/vscode-docs. If you have extension questions that you cannot find an answer for, or issues with the VS Code Extension API, please open new issues at Microsoft/vscode.

    Help and support

    Was this documentation helpful?
    Yes, this page was helpful
    No, this page was not helpful

    Still need help?
    Ask the community
    Request features
    Report issues
    Help us improve
    All VS Code docs are open source. See something that's wrong or unclear? Submit a pull request.

    12/10/2025

    Original source Report a problem
  • Oct 9, 2025
    • Parsed from source:
      Oct 9, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    September 2025 (version 1.105)

    VS Code’s September 2025 release unifies AI powered planning, agent workflows, and Copilot enhancements with OS notifications, improved terminals, and broader model support. It highlights plan handoffs, subagents, Copilot CLI, MCP marketplace, and richer integration across editors and sessions.

    Security update: The following extension has security updates: GitHub.copilot-chat.
    Update 1.105.1: The update addresses these issues in core and these issues in the GitHub Copilot Chat extension.
    Update: Check out the announcements from VS Code at GitHub Universe.
    Downloads: Windows: x64, Arm64 | Mac: Universal, Intel silicon | Linux: deb, rpm, tarball, Arm, snap

    Welcome to the September 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
    • OS integration
    ◦ Get notified about task completion and chat responses (Show more)
    ◦ Native authentication experience on macOS (Show more)
    • Developer productivity
    ◦ Plan and hand off complex coding tasks (Show more)
    ◦ Resolve merge conflicts with AI assistance (Show more)
    • Agent tools
    ◦ OpenAI Codex integration (Show more)
    ◦ Use subagents to improve context management (Show more)

    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.

    VS Code at GitHub Universe
    At GitHub Universe, we shared several updates to help you be more productive with AI-powered development in VS Code. You can now use the built-in plan agent to research and plan complex tasks, manage context better with subagents, and manage background agents like OpenAI Codex and GitHub Copilot CLI.
    Download VS Code Insiders to try out these features today.

    Plan agent
    Note: This feature is currently only available in VS Code Insiders.
    To help you better prepare for complex coding tasks, VS Code now includes a built-in plan agent. The plan agent helps you analyze tasks, break them down into steps, and generate implementation plans before starting development. This approach helps avoid missing important requirements.
    To use the plan agent, open the Chat view (Ctrl+Alt+I), select Plan from the agents dropdown, and describe your task.
    After finalizing the plan, you can start the implementation immediately or save the plan for later use. The plan agent makes use of the new handoff feature for custom chat modes.
    Learn more about how to use the built-in plan agent in VS Code.

    Handoffs
    Note: This feature is currently only available in VS Code Insiders.
    Handoffs let you create guided workflows that transition between chat modes with suggested next steps. After a chat response completes, handoff buttons appear that let users move to the next mode with relevant context and a pre-filled prompt.
    Handoffs are useful for orchestrating multi-step development workflows, for example:
    Handoffs let you specify how to transition from one chat mode to another and define custom, structured workflows. When transitioning to another mode, you can specify a prompt that should be used.
    You specify the handoff in the Frontmatter metadata of your custom chat mode definition:

    description: Generate an implementation plan
    tools: ['search', 'fetch']
    handoffs:

    • label: Start Implementation
      agent: implementation
      prompt: Now implement the plan outlined above.
      send: true

    Learn more about using handoffs in custom chat modes.

    Isolated subagents
    Note: This feature is currently only available in VS Code Insiders.
    Subagents let you delegate tasks to autonomous agents within your chat sessions. Subagents have their own context window and operate without user interaction, making them ideal for tasks like research, analysis, and context gathering.
    After the subagent completes its task, it returns the results to the main chat session. Subagents have their own context window, which helps optimize context management in your main chat session.
    To use subagents in your chat prompts or custom chat modes, reference the #runSubagent tool to have the main agent invoke a subagent. For example:
    • "Run #runSubagent tool for context gathering and research about auth mechanisms for this app."
    Learn more about using subagents in VS Code.

    Integration with OpenAI Codex
    Note: This feature is currently only available in VS Code Insiders.
    The new Agent Sessions view in VS Code Insiders now also integrates with OpenAI Codex. Manage both local and cloud-based agent sessions from a unified interface, making it easier to track progress and delegate tasks across multiple AI coding assistants.
    OpenAI Codex can now be powered by your Copilot subscription. Once the Codex extension is installed and configured, Codex will automatically appear in the Agent Sessions view. Use your Copilot Pro+ subscription to authenticate and access Codex without additional setup.
    Get more information about GitHub Copilot billing and premium requests in the GitHub documentation.

    Integration with Copilot CLI
    The new Agent Sessions view in VS Code Insiders now supports the GitHub Copilot CLI. You can manage both local and cloud-based agent sessions from a unified interface, making it easier to track progress and delegate tasks across the Copilot CLI and Copilot Coding agent.
    • Kick off and resume CLI sessions in a chat editor or an integrated terminal.
    • Use /delegate in a CLI chat editor to delegate your work to the coding agent in the cloud.
    • Improve the CLI experience in VS Code, such as attaching context from your editor like you would in ask or agent mode today.

    Fully qualified tool names
    Prompt files and custom chat modes enable you to specify which tools can be used. To avoid naming conflicts between built-in tools and tools provided by MCP servers or extensions, we now support fully qualified tool names for prompt files and chat modes. This also helps with discovering missing extensions or MCP servers.
    Tool names are now qualified by the MCP server, extension, or tool set they are part of. For example, instead of codebase, you would use search/codebase or list_issues would be github/github-mcp-server/list_issues.
    You can still use the previous notation, however a code action helps you migrate to the new names.

    Improved edit tools for custom models
    Setting: github.copilot.chat.customOAIModels
    We improved the set of edit tools for Bring Your Own Key (BYOK) custom models to better integrate with VS Code built-in tools. In addition, we enhanced our default tools and added a 'learning' mechanism to select the optimal tool set for custom models.
    If you're using OpenAI-compatible models, you can also explicitly configure the list of edit tools with the github.copilot.chat.customOAIModels setting.

    Support for nested AGENTS.md files (Experimental)
    Setting: chat.useNestedAgentsMdFiles
    Last milestone, we introduced support for AGENTS.md at the root of your workspace. This functionality is now generally available and enabled by default.
    We now also added support for nested AGENTS.md files in subfolders of your workspace. This enables you to provide more specific context and instructions for different parts of your codebase. For example, you might have different instructions for frontend and backend code. This functionality is currently experimental and can be enabled with the chat.useNestedAgentsMdFiles setting.
    Learn more about customizing chat in VS Code to your practices and team workflows.

    Chat user experience improvements
    OS notifications for chat responses
    Setting: chat.notifyWindowOnResponseReceived
    In VS Code 1.103, we introduced OS notifications for chat sessions that required a user confirmation when the VS Code window was not focused. In this release, we are expanding this functionality to show an OS badge and notification toast when a chat response is received. The notification includes a preview of the response, and selecting it brings focus to the chat input.
    You can control the notification behavior with the chat.notifyWindowOnResponseReceived setting.

    Chain of thought (Experimental)
    Setting: chat.agent.thinkingStyle
    Chain of thought shows the model’s reasoning as it responds, which can be great for debugging or understanding suggestions the model provides. With the introduction of GPT-5-Codex, thinking tokens are now shown in chat as expandable sections in the response.
    You can configure how to display or hide chain of thought with the chat.agent.thinkingStyle setting. Thinking tokens will soon be available in more models as well!

    Show recent chat sessions (Experimental)
    Setting: chat.emptyState.history.enabled
    Last milestone, we introduced prompt file suggestions to help you get started when creating a new chat session (Ctrl+N). In this release, we are building on that by showing your recent local chat conversations. This helps you quickly pick up where you left off or revisit past conversations.
    By default, this functionality is off, but you can enable it with the chat.emptyState.history.enabled setting.

    Keep or undo changes during an agent loop
    Previously, when an agent was still processing your chat request, you could not keep or undo file edits until the agent finished. Now, you can keep or undo changes to files while an edit loop is happening. This enables you to have more control, especially for long-running tasks.

    Keyboard shortcuts for navigating user chat messages
    To quickly navigate through your previous chat prompts in the chat session, we added keyboard shortcuts for navigating up and down through your chat messages:
    • Navigate previous: Ctrl+Alt+Up
    • Navigate next: Ctrl+Alt+Down

    Agent sessions
    This milestone, we made several improvements to the Chat Sessions view and the experience of delegating tasks to remote coding agents:
    Chat Sessions view enhancements
    Setting: chat.agentSessionsViewLocation
    The Chat Sessions view provides a centralized location for managing both local chat conversations and remote coding agent sessions. This view enables you to work with multiple AI sessions simultaneously, track their progress, and manage long-running tasks efficiently.
    In this release, we made several UI refinements and performance improvements to enhance the Chat Sessions experience.
    • The Chat Sessions view continues to support features like Status Bar tracking for monitoring multiple coding agents, context menus for session management, and rich descriptions to provide detailed context for each session.
    • Quickly initiate a new session by using the "+" button in the view header.

    Delegating to remote coding agents
    A typical scenario for working with remote coding agents is to first discuss and plan a task in a local chat session, where you have access to the full context of your codebase, and then delegate the implementation work to a remote coding agent. The remote agent can then work on the task in the background and create a pull request with the solution.
    If you're working in a repository that has Copilot coding agent enabled, the Delegate to coding agent button in the Chat view now appears by default.
    When you use the delegate action, all context from your chat conversation, including file references, is forwarded to the coding agent. If your conversation exceeds the coding agent's context window, VS Code automatically summarizes and condenses the information to fit the window.

    Chat terminal profiles
    We added platform-specific settings chat.tools.terminal.terminalProfile.windows, chat.tools.terminal.terminalProfile.osx, and chat.tools.terminal.terminalProfile.linux for configuring the shell that is launched by the run-in-terminal tool.
    Having a chat-specific shell is useful to simplify or remove interactive elements from your regular shell setup and make it easier for the agent to use. At the same time, it keeps your regular environment and shell launch scripts unchanged.

    Auto-reply to terminal prompts (Experimental)
    Setting: chat.tools.terminal.autoReplyToPrompts
    We introduced an opt-in setting, chat.tools.terminal.autoReplyToPrompts, which enables the agent to respond to prompts for input in the terminal automatically, like Confirm? y/n.

    Terminal free-form input request detection
    When the terminal requires free-form input, we now display a confirmation prompt. This lets you stay focused on your current work and only shift attention when input is needed.

    Sign in with Apple accounts
    In addition to signing in with a GitHub or Google account, you can now also sign in or set up a GitHub Copilot account by using an Apple account. This functionality will be rolling out to VS Code users.
    You can find more information about this in the announcement GitHub blog post.

    Model availability
    This milestone, we added support for the following models in chat. The available models depend on your Copilot plan and configuration.
    • GPT-5-Codex, OpenAI’s GPT-5 model, optimized for agentic coding.
    • Claude Sonnet 4.5, Anthropic’s most advanced model for coding and real-world agents.
    You can choose between different models with the model picker in chat. Learn more about language models in VS Code.

    MCP marketplace (Preview)
    Setting: chat.mcp.gallery.enabled
    VS Code now includes a built-in MCP marketplace that enables users to browse and install MCP servers directly from the Extensions view. This is powered by the GitHub MCP registry and provides a seamless experience for discovering and managing MCP servers directly within the editor.
    Note: This feature is currently in preview. Not all features are available yet and the experience might still have some rough edges.
    The MCP marketplace is disabled by default. When no MCP servers are installed, you see a welcome view in the Extensions view that provides easy access to enable the marketplace. You can also enable the MCP marketplace manually by using the chat.mcp.gallery.enabled setting.
    To browse the MCP servers from the Extensions view:
    • Use the @mcp filter in the Extensions view search box
    • Select MCP Servers from the filter dropdown in the Extensions view
    • Search for specific MCP servers by name

    Autostart MCP servers
    Setting: chat.mcp.autostart
    In this release, new or outdated MCP servers are now started automatically when you send a chat message. VS Code also avoids triggering interactions such as dialogs when autostarting a server, and instead adds an indicator in chat to let you know that a server needs attention.
    With MCP autostart on by default, we no longer eagerly activate extensions and instead only activate MCP-providing extensions when the first chat message is sent.
    For extension developers, we also added support for the when clause on the mcpServerDefinitionProviders contribution point, so you can avoid activation when it's not relevant.

    Improved representation of MCP resources returned from tools
    Previously, our implementation of tool results that contain resources left it up to the model to retrieve those resources, without clear instructions on how to do so. In this version of VS Code, by default, we include a preview of the resource content and add instructions to retrieve the complete contents. This should lead to better model performance when using such tools.

    MCP specification updates
    This milestone, we adopted the following updates to the MCP specification:
    • SEP-973, which lets MCP servers specify icons to associate with their data. This can be used to give a custom icon to servers, resources, and tools.
    HTTP MCP servers must provide icons from the same authority that the MCP server itself is listening on, while stdio servers are allowed to reference file:/// URIs on disk.
    • SEP-1034, which lets MCP servers provide default values when using elicitation.

    Accessibility
    Shell integration for pwsh on Windows support for screen readers
    PSReadLine has historically been disabled when a screen reader is detected to avoid overwhelming users with excessive auditory feedback. Since our terminal's shell integration relies on PSReadLine support, we now activate a streamlined version of PSReadLine in screen reader mode. This ensures shell integration and its features work for screen reader users.

    Chat improvements
    Setting: accessibility.verboseChatProgressUpdates
    A new setting, accessibility.verboseChatProgressUpdates, enables more detailed announcements for screen reader users about chat activity.
    From the chat input, users can focus the last focused chat response item Ctrl+Shift+Down.

    Accessible view persistence
    When switching between VS Code and other windows, we now maintain the user's position in the Accessible view for a seamless workflow.

    Editor Experience
    Override default shortcuts for Quick Input
    The Quick Input controls, like the ones used in the Command Palette (Quick Pick, Input Box), used to hard-code keyboard shortcuts for navigation, such as moving up or down the list, accepting (Enter), and a few other interactions.
    These actions are now moved to commands, which enables you to override their keyboard shortcuts. For example, if you want Tab to be used to accept something in the Quick Pick, this is now possible. To see all keyboard shortcuts that you can override, open the Keyboard Shortcuts editor (kb(workbench.action.openGlobalKeybindings)) and search for quickInput.

    Disallow whitespace-only next edit suggestions
    Setting: github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges
    It is now possible to disallow next edit suggestions (NES) to propose whitespace-only changes such as code formatting.

    Source Control
    Resolve merge conflicts with AI
    When opening a file with git merge conflict markers, you are now able to resolve merge conflicts with AI. We added a new action in the lower right-hand corner of the editor. Selecting this new action opens the Chat view and starts an agentic flow with the merge base and changes from each branch as context.
    You can review the proposed merge conflict resolution in the editor and follow up with additional context if needed. You can customize the merge conflict resolution by using an AGENTS.md file.

    Add file commit to chat context
    A couple of milestones ago, we added the capability to view the files in each history item shown in the Source Control Graph view. You can now add a file from a history item as context to a chat request. This can be useful when you want to provide the contents of a specific version of a file as context to your chat prompt.
    To add a file from a past commit to chat, select a commit to view the list of files, right-click on a particular file, and then select Add to Chat from the context menu.

    Testing
    Run tests with code coverage
    If you have a testing extension installed for your code, the runTests tool in chat enables the agent to run tests in your codebase by using the VS Code testing integration rather than running them from the command line.
    In this release, the runTests tool now also reports test code coverage to the agent. This enables the agent to generate and verify tests that cover the entirety of your code.

    Swap test result column
    You can change the side on which the result tree is displayed in the Test Results view by using the new swap ↔️ button in the view's title menu.

    Tasks
    OS notification for long-running task completion
    Setting: task.notifyWindowOnTaskCompletion
    When a user-initiated, long-running task completes while the VS Code window is not focused, an OS badge and notification toast are shown. Selecting the notification focuses the window where the task completed. You can configure this behavior with the task.notifyWindowOnTaskCompletion setting.

    Task terminal title persistence
    Setting: terminal.integrated.tabs.title
    You can configure the title of terminal tabs with the terminal.integrated.tabs.title setting. By default, the value is ${process}, which shows the name of the process running in the terminal.
    For tasks, this means that the terminal title might change when the task starts a different process, which can be confusing. To address this, we now persist the task's name as the terminal title when a task is started.

    Terminal
    Start dictation exposed
    We added the Start dictation action to the terminal overflow menu. This action enables you to use voice dictation to input text into the terminal. A corresponding Stop dictation action appears when relevant.

    Authentication
    macOS native broker support for Microsoft Authentication
    Setting: microsoft-authentication.implementation
    This milestone, we adopted the latest MSAL libraries and with that you are now able to sign in through a native experience on macOS (in addition to Windows):
    Native broker authentication is only available for:
    • M-series (also known as ARM) macOS devices
    • macOS machines that are Intune-enrolled with the policy to go through the 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 (Linux, Windows ARM, macOS Intel/x64) 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.

    PKCE support for GitHub Authentication
    GitHub recently enabled PKCE (Proof Key for Code Exchange) support in their authentication flows. We have adopted this in the flow that VS Code uses to authenticate to GitHub.

    Languages
    Python
    Copy test ID action
    The run gutter icon context menu now includes a Copy Test Id command to copy the fully qualified pytest or unittest test identifier.

    Contributions to extensions
    GitHub Pull Requests
    There has been more progress on the GitHub Pull Requests extension, which enables you to work on, create, and manage pull requests and issues. New features include:
    • The #openPullRequest tool recognizes open PR diffs and PR files as being the "open pull request".
    • The setting githubIssues.issueAvatarDisplay can be used to control whether the first assignee's avatar or the author's avatar is shown in the Issues view.
    • Instead of always running the pull request queries that back the Pull Requests view when refreshing, we now check to see if there are new PRs in the repo before running the queries. This should reduce API usage when there are no new PRs.
    Review the changelog for the 0.120.0 release of the extension to learn about everything in the release.

    Microsoft Authentication now supports WWW-Authenticate claims challenges
    Azure is now enforcing that all create/delete operations to Azure resources must be done using authenticated sessions that used MFA to sign in. While some organizations require MFA for any authentication reason, some organizations do not enforce this, and those are affected by this MFA enforcement.
    If you have an extension that uses Microsoft Authentication and talks to ARM, you need to handle the case when the ARM API call returns a 401 Unauthorized with a WWW-Authenticate header like so:
    Bearer realm="", authorization_uri="https://login.microsoftonline.com/common/oauth2/authorize", error="insufficient_claims", claims="SOME VALUE HERE"
    The good news is that we have introduced a finalized API that you can use to handle this status code:
    const wwwAuthenticateFromRequest = headers['WWW-Authenticate'];
    vscode.authentication.getSession('microsoft', { wwwAuthenticate: wwwAuthenticateFromRequest, fallbackScopes: scopesFromOriginalRequest }, { createIfNone: true });
    All you have to do is pass in, verbatim, that WWW-Authenticate value along with the scopes that you originally asked for (most likely the ARM scope), and the Microsoft Authentication Provider handles the rest and makes sure the user goes through MFA.
    We have worked with the Azure Tools team, who owns the Azure Resources extension, to adopt this new API. If you are using that extension or something that uses that extension, this enforcement should be handled. If you experience problems, open an issue on the Azure Resources extension.
    NOTE: Looking to support WWW-Authenticate challenges in your AuthenticationProvider? Provide your thoughts on the proposed API in issue #267992.

    Prompt and instructions file contributions
    Extensions can now contribute prompt and instructions files.
    Chat mode contributions (chatModes) are currently behind a proposed API flag.

    List keys in SecretStorage
    This iteration, we have finalized the API to list all keys that your extension has stored in Secret Storage. This can be found in the context.secrets object:
    export function activate(context: ExtensionContext) {
    const keys: string[] = await context.secrets.keys();
    const value = await context.secrets.get(keys[0]); // a value that exists
    }
    One example where this can be used is on deactivate, where you might want to delete all secret storage data.

    Engineering
    Playwright VS Code MCP server
    We further explored using an MCP server that can control a local build of VS Code to help in the development loop for VS Code. While we had mixed results on model comprehension for parsing screenshots, orchestration for subagents using the #executePrompt tool (which can be enabled with github.copilot.chat.executePrompt.enabled) was effective at not polluting context.
    We plan to explore this further in future releases, so stay tuned!
    To try this MCP Server, you can find it in the test/mcp folder of the vscode repo. It's very easy to get started:
    • Follow the Contribution Guidelines for getting a local version of Code OSS running.
    • Use our trivial (for now) prompt file in agent mode to ask a question: /playwright .

    Notable fixes
    • vscode#265842 - Chat: fix a file corruption issue affecting Sonnet, Gemini, and Grok models
    • vscode#221255 - Fix terminal links opening regardless of confirmation of "Opening URIs can be insecure" warning.
    • vscode#229374 - Fix to open terminal OSC 8 hyperlink to a folder in VS Code's explorer instead of native file explorer.
    • vscode#268443 - Settings links in Release Notes do nothing.

    Thank you
    Issue tracking
    Contributions to our issue tracking:
    • @gjsjohnmurray (John Murray)
    • @albertosantini (Alberto Santini)
    • @RedCMD (RedCMD)
    • @IllusionMH (Andrii Dieiev)

    Pull Requests
    Contributions to vscode:
    • @alpalla (Alessio Palladino): Maintain line breaks in transform to Camel and Pascal case actions PR #263781
    • @andr8928: Suggest widget: Bug fix - when widget is too tall, ensure larger of above and below space is used. PR #260583
    • @avarayr (avarayr): Fix: Disable window shadows on macOS Tahoe to prevent GPU performance issues PR #267724
    • @bwateratmsft (Brandon Waterloo [MSFT]): Fix the type incompatibility issue in the MCP HTTP server handler PR #268548
    • @CGNonofr (Loïc Mangeonjean):
    ◦ fix: race condition on supported task types PR #265847
    ◦ fix: properly update cloned stylesheets on mutation in firefox PR #269126
    • @dmiska25 (Dylan Miska): dispose of ref instead of object itself to avoid null objects. PR #266299
    • @DrSergei (Sergei Druzhkov): Improve canSetExpressionValue check PR #268952
    • @essjay05 (Joy Serquiña): fix: adds aria-description to provide screen reader context for tooltip PR #267818
    • @garciasdos (Diego García): fix: elicitation email validator PR #265326
    • @harbin1053020115 (ermin.zem): feat: split editor group direction according to workbench.editor.splitInGroupLayout configuration when clicking walkthrough ':toSide' commands PR #267557
    • @hron (Aleksei Gusev): Allow to bind diffEditor.revert to keyboard PR #225881
    • @leonard520 (Xiaoyun Ding): Add conversation id to mcp meta PR #265303
    • @lukocode: fix: ensure SVG images are loaded before clipboard copy PR #263799
    • @mawosoft (Matthias Wolf):
    ◦ Fix PowerShell shell integration when strict mode is enabled. PR #266260
    ◦ Restore PSReadline key remapping in PowerShell shell integration PR #267311
    • @narbit (Natalya Arbit): Do not allow localhost redirect in favor of loopback IP redirect PR #267546
    • @Peter-developer01 (Peter): Fix a typo in nls.localize(...) in localization.contribution.ts PR #263228
    • @RedCMD (RedCMD): Fix RangeFormat wrong document race condition PR #267628
    • @SimonSiefke (Simon Siefke):
    ◦ fix: memory leak in ReplAccessibilityAnnouncer PR #264937
    ◦ fix: memory leak in chat widget PR #265002
    ◦ reduce memory by ~1.2 MB PR #267785
    ◦ fix: memory leak in folding PR #269071
    • @Skn0tt (Simon Knott): Treat ellipsis character as search wildcard PR #262462
    • @tmm1 (Aman Karmani): Fix disposable leak in BrowserSocketFactory PR #263736
    • @turansky (Victor Turansky): fix: lm.registerLanguageModelChatProvider jsdoc formatting PR #266485
    • @witsaint (DQ): fix: confirmation btn style PR #267438
    • @yiliang114 (易良): Fix to #263546, for submenu of treeView view/item/context z-index iss… PR #263555

    Contributions to vscode-copilot-chat:
    • @24anisha: Adding accept/reject and survival to GH Telemetry PR #1059
    • @DGideas (Wanlin Wang 王万霖): improve custom OpenAI Compatible model URL resolution PR #1074
    • @johan-j (Johan Jansson): Grouping of BYOK custom models in model picker PR #1111
    • @shaunm-msft (Shaun Miller):
    ◦ Modifications to allow direct-endpoint tests to use responses api PR #1047
    ◦ restore correct service creation for list-models PR #1090
    • @vritant24 (Vritant Bhardwaj): Ungroup tools based on embedding rankings PR #678
    • @yemohyleyemohyle:
    ◦ Yemohyle/dedup messages telemetry PR #952
    ◦ Yemohyle/edit feedback msft internal PR #984

    Contributions to vscode-eslint:
    • @frodi-karlsson (Fróði Karlsson):
    ◦ Support realpaths with config PR #2068
    ◦ support setting command in config for lintTask PR #2081
    • @fronterior (Low Front): Fix workspaceFolder check to use optional chaining PR #2075

    Contributions to vscode-json-languageservice:
    • @danila-schelkov (Danila Schelkov): feat: examples completion for propertyNames PR #286

    Contributions to vscode-mypy:
    • @cnaples79 (Chase Naples): Fix: parse mypy diagnostics from stderr in non_interactive mode PR #375

    Contributions to vscode-python-environments:
    • @almarouk (Abdelrahman AL MAROUK): fix conda env refresh not waiting for promises PR #751
    • @renan-r-santos (Renan Santos): Display activate button when a terminal is moved to the editor window PR #764

    Contributions to vscode-vsce:
    • @joyceerhl (Joyce Er): fix: generate language model tag for languageModelChatProvider contributions PR #1199

    Contributions to debug-adapter-protocol:
    • @dmjio (David M. Johnson): Update debug adapters list in adapters.md PR #562

    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 Report a problem
  • Sep 11, 2025
    • Parsed from source:
      Sep 11, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    August 2025 (version 1.104)

    August 2025 VS Code release packs AI chat upgrades, auto model selection, safer edits for sensitive files, AGENTS.md context, improved changed-files and prompt files, font and tool-set customization, terminal and notebook boosts, plus richer GitHub Copilot integration.

    Welcome to the August 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
    • Model flexibility
    ◦ Let VS Code select the best model (Show more)
    ◦ Contribute models through VS Code extensions (Show more)
    • Security
    ◦ Confirm edits for sensitive files (Show more)
    ◦ Let agents run terminal commands safely (Show more)
    • Productivity
    ◦ Remove distractions from chat file edits (Show more)
    ◦ Use AGENTS.md to add chat context (Show more)

    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.

    Chat
    Auto model selection (Preview)
    This iteration, we're introducing auto model selection in chat. When you choose the Auto model in the model picker, VS Code automatically selects a model to ensure that you get the optimal performance and reduce rate limits.
    Auto model selection is currently in preview and we are rolling it out to all GitHub Copilot users in VS Code in the following weeks, starting with the individual Copilot plans.
    Auto will choose between Claude Sonnet 4, GPT-5, GPT-5 mini, and GPT-4.1, unless your organization has disabled access to these models. When using auto model selection, VS Code uses a variable model multiplier, based on the selected model. If you are a paid user, auto will apply a 10% request discount.
    You can view the selected model and the model multiplier by hovering over the response in the Chat view.
    Learn more about auto model selection in VS Code.

    Confirm edits to sensitive files
    Setting: chat.tools.edits.autoApprove
    In agent mode, the agent can autonomously make edits to files in your workspace. This might include accidentally or maliciously modifying or deleting important files such as configuration files, which could cause immediate negative side-effects on your machine. Learn more about security considerations when using AI-powered development tools.
    In this release, the agent now explicitly asks for user confirmation before making edits to certain files. This provides an additional layer of safety when using agent mode. With the chat.tools.edits.autoApprove setting, you can configure file patterns to indicate which files require confirmation.
    Common system folders, dotfiles, and files outside your workspace will require confirmation by default.

    Support for AGENTS.md files (Experimental)
    Setting: chat.useAgentsMdFile
    An AGENTS.md file lets you provide context and instructions to the agent. Starting from this release, when you have an AGENTS.md file in your workspace root(s), it is automatically picked up as context for chat requests. This can be useful for teams that use multiple AI agents.
    Support for AGENTS.md files is enabled by default and can be controlled with the chat.useAgentsMdFile setting. See https://agents.md/ for more information about AGENTS.md files.
    Learn more about customizing chat in VS Code to your practices and team workflows.

    Improved changed files experience
    This iteration, the changed files list has been reworked with several quality-of-life features. These changes should improve your experience when working in agent mode!
    • The list of changed files is now collapsed by default to give more space to the chat conversation. While collapsed, you can still see the files changed count and the lines added or removed.
    • When you keep or accept a suggested change, the file is removed from the files changed list.
    • When you stage or commit a file using the Source Control view, this automatically accepts the proposed file changes.
    • Changes per file (lines added or removed) are now shown for each item in the list.

    Use custom chat modes in prompt files
    Prompt files are Markdown files in which you write reusable chat prompts. To run a prompt file, type / followed by the prompt file name in the chat input field, or use the Play button when you have the prompt file open in the editor.
    You can specify which chat mode should be used for running the prompt file. Previously, you could only use built-in chat modes like agent, edit, or ask in your prompt files. Now, you can also reference custom chat modes in your prompt files.
    Learn more about customizing chat in VS Code with prompt files, chat modes, and custom instructions.

    Configure prompt file suggestions (Experimental)
    Setting: chat.promptFilesRecommendations
    Teams often create custom prompt files to standardize AI workflows, but these prompts can be hard to discover when users need them most. You can now configure which prompt files appear as suggestions in the Chat welcome view based on contextual conditions.
    The new chat.promptFilesRecommendations setting supports both simple boolean values and when-clause expressions for context-aware suggestions.
    This helps teams surface the right AI workflows at the right time, making custom prompts more discoverable and relevant to your workspace and file type.

    Select tools in tool sets
    Tool sets are a convenient way to group related tools together and VS Code has several built-in tool sets like edit or search.
    The tools picker now shows which tools are part of each tool set and you can individually enable or disable each tool. You can access the tools picker via the Configure Tools... button in the Chat view.

    Configure font used in chat
    Settings: chat.fontFamily, chat.fontSize
    VS Code lets you choose which font to use across the editor, however the Chat view lacked that configurability. We have now added two new settings for configuring the font family (chat.fontFamily) and font size (chat.fontSize) of chat messages.
    Note: content for lists currently does not yet honor these settings, but this is something that we are working on fixing in the upcoming releases.

    Collaborate with coding agents (Experimental)
    With coding agents, you delegate tasks to AI agents to be worked on in the background. You can have multiple such agents work in parallel. We're continuing to evolve the chat sessions experience to help you collaborate more effectively with coding agents.

    Chat Sessions view
    Setting: chat.agentSessionsViewLocation
    The Chat Sessions view provides a single, unified view for managing both local and contributed chat sessions. We've significantly enhanced the Chat Sessions view where you can now perform all key operations, making it easier to iterate and finalize your coding tasks.
    • Status Bar tracking: Monitor progress across multiple coding agents directly from the Status Bar.
    • Multi-session support: Launch and manage multiple chat sessions from the same view.
    • Expanded context menus: Access more actions to interact with your coding agents efficiently.
    • Rich descriptions: With rich description enabled, each list entry now includes detailed context to help you quickly find relevant information.

    GitHub coding agent integration
    We've improved the integration of GitHub coding agents with chat sessions to deliver a smoother, more intuitive experience.
    • Chat editor actions: Easily view or apply code changes, and check out pull requests directly from the chat editor.
    • Seamless transitions: Move from local chats to GitHub agent tasks with improved continuity.
    • Better session rendering: Various improvements on cards and tools rendering for better visual clarity.
    • Performance boosts: Faster session loading for a more responsive experience.

    Delegate to coding agent
    We continued to expand on ways to delegate local tasks in VS Code to a Copilot coding agent:
    • Fix todos with coding agent: Comments starting with TODO now show a Code Action to quickly initiate a coding agent session.
    • Delegate from chat (githubPullRequests.codingAgent.uiIntegration): Additional context, including file references, are now forwarded to GitHub coding agent when you perform the Delegate to coding agent action in chat. This enables you to precisely plan out a task before handing it off to coding agent to complete it. A new chat editor is opened with the coding agent's progress shown in real-time.

    Social sign in with Google
    The option to sign in or sign up to GitHub Copilot with a Google account is now generally available and rolling out to all users in VS Code.
    You can find more information about this in the announcement GitHub blog post.

    Terminal auto approve
    Setting: chat.tools.terminal.enableAutoApprove
    Automatically approving terminal commands can greatly streamline agent interactions, but it also comes with security risks. This release introduces several improvements to terminal auto approve to enhance both usability and security.
    • You can now enable or disable terminal auto approve with the chat.tools.terminal.enableAutoApprove setting. This setting can also be set by organizations via device management.
    • Before terminal auto approve is actually enabled, you need to explicitly opt in via a dropdown in the Chat view.
    • From the Chat view, you can conveniently add auto-approve rules for the command being run, or open the configuration setting.
    • This has some basic support for commands to suggest sub-commands where they would be more appropriate, such as suggesting an npm test rule rather than npm.
    • To improve transparency around auto-approved commands, we show which rule was applied in the Chat view, also enabling you to configure that rule.
    • We improved the defaults to provide safety and reduce noise. You can see the full list of rules by viewing the setting's default value by opening your settings.json file, then entering chat.tools.terminal.autoApprove and completing it via Tab.
    • Non-regex rules that contain a backslash or forward slash character are now treated as a path and not only approve that exact path, but also allow either slash type and also a ./ prefix. When using PowerShell, all rules are forced to be case insensitive.
    • When agent mode wants to pull content from the internet using curl, wget, Invoke-RestMethod, or Invoke-WebRequest, we now show a warning, as this is a common vector for prompt injection attacks.
    Learn more about terminal auto approve in our documentation.

    Global auto approve
    Global auto approve has been an experimental setting since v1.99. What we have observed is that users have been enabling this setting without thinking deeply enough about the consequences. Additionally, some users thought that enabling the chat.tools.autoApprove setting was a prerequisite to enabling terminal auto approve, which was never the case.
    To combat these misconceptions and to further protect our users, there is now a deservedly scary-looking warning the first time global auto approve attempts to be used, so the user can easily back out and disable the setting:
    The setting has also been changed to the clearer chat.tools.global.autoApprove without any automatic migration, so all users (accidental or intentional) need to go and explicitly set it again.

    Math rendering enabled by default
    Setting: chat.math.enabled
    Rendering of mathematical equations in chat responses is now generally available and enabled by default. You can disable this functionality with the chat.math.enabled setting.
    This feature is powered by KaTeX and supports both inline and block math equations. Inline math equations can be written by wrapping the markup in single dollar signs ($...$), while block math equations use two dollar signs ($$...$$).

    Chat view default visibility
    Setting: workbench.secondarySideBar.defaultVisibility
    When you first open a workspace, the Secondary Side Bar with the Chat view is visible by default, inviting you to ask questions or start an agentic session right away. You can configure this behavior with the workbench.secondarySideBar.defaultVisibility setting or by using the dropdown of the Chat view itself.

    Improved task support
    • Input request detection: When you run a task or terminal command in agent mode, the agent now detects when the process requests user input, and you're prompted to respond in chat. If you type in the terminal while a prompt is present, the prompt will hide automatically. When options and descriptions are provided (such as [Y] Yes [N] No), these are surfaced in the confirmation prompt.
    • Error detection for tasks with problem matchers: For tasks that use problem matchers, the agent now collects and surfaces errors based on the problem matcher results, rather than relying on the language model to evaluate output. Problems are presented in a dropdown within the chat progress message, allowing you to navigate directly to the problem location. This ensures that errors are reported only when relevant to the current task execution.
    • Compound task support: Agent mode now supports running compound tasks. When you run a compound task, the agent indicates progress and output for each dependent task, including any prompts for user input. This enables more complex workflows and better visibility into multi-step task execution.

    Improved terminal support
    • Moved more terminal tools to core: Like the runInTerminal tool last release, the terminalSelection and terminalLastCommand tools have been moved from the extension to core, which should provide general reliability improvements.
    • Configurable terminal tool shell integration timeout: Whenever the runInTerminal tool tries to create a terminal, it waits a period for shell integration to activate. If your shell is especially slow to start up, say you have a very heavy PowerShell profile, this could cause it to wait the previously fixed 5-second timeout and still end up failing in the end. This timeout is now configurable via the chat.tools.terminal.shellIntegrationTimeout setting.
    • Prevent Command Prompt usage: Since shell integration isn't really possible in Command Prompt, at least with the capabilities that Copilot needs, Copilot now opts to use Windows PowerShell instead, which should have shell integration by default. This should improve the reliability of the runInTerminal tool when your default shell is Command Prompt. If, for some reason, you want Copilot to use Command Prompt, this is currently not possible. We will likely be adding the ability to customize the terminal profile used by Copilot soon, which is tracked in #253945.

    Todo List tool
    The todo list tool helps agents break down complex multi-step tasks into smaller tasks and report progress to help you track individual items. We've made improvements to this tool, which is now enabled by default.
    Tool progress is displayed in the Todo control at the top of the Chat view, which automatically collapses as the todo list is worked through and shows only the current task in progress.

    Skip tool calls
    When the agent requests confirmation for a tool call, you can now choose to skip the tool call and let the agent continue. You can still cancel the request or enter a new request via the chat input box.

    Improvements to semantic workspace search
    We've upgraded the #codebase tool to use a new embeddings model for semantic searching for code in your workspace. This new model provides better results for code searches. The new embeddings also use less storage space, requiring only 6% of our previous model's on-disk storage size for each embedding.
    We'll be gradually rolling out this new embeddings model over the next few weeks. Your workspace will be automatically updated to use this new embeddings model, so no action is required. VS Code Insiders is already using the new model if you want to try it out before it rolls out to you.

    Hide and disable GitHub Copilot AI features
    Setting: chat.disableAIFeatures
    We are introducing a new setting chat.disableAIFeatures for disabling and hiding built-in AI features provided by GitHub Copilot, including chat, code completions, and next edit suggestions.
    The setting has the following advantages over the previous solution we had in place:
    • Syncs across your devices unless you disable this explicitly
    • Disables the Copilot extensions in case they are installed
    • Configure the setting per-profile or per-workspace, making it easy to disable AI features selectively
    The command to "Hide AI Features" was renamed to reflect this change and will now reveal this new setting in the settings editor.
    Note: users that were hiding AI features previously will continue to see AI features hidden. You can update the setting in addition if you want to synchronize your choice across devices.

    MCP
    Support for server instructions
    VS Code now reads MCP server instructions and will include them in its base prompt.

    MCP auto discovery disabled by default
    Setting: chat.mcp.discovery.enabled
    VS Code supports automatic discovery of MCP servers installed in other apps like Claude Code. As MCP support has matured in VS Code, auto-discovery is now disabled by default, but you can re-enable it using the chat.mcp.discovery.enabled setting.

    Enable MCP
    Setting: chat.mcp.access
    The chat.mcp.enabled setting that previously controlled whether MCP servers could run in VS Code has been migrated to a new chat.mcp.access setting with more descriptive options:
    • all: allow all MCP servers to run (equivalent to the previous true value)
    • none: disable MCP support entirely (equivalent to the previous false value)

    Accessibility
    Focus chat confirmation action
    We've added a command, Focus Chat Confirmation (kb(workbench.action.chat.focusConfirmation)), which focuses the confirmation dialog, if present, or announces to screen reader users that confirmation is not required.

    Code Editing
    Configurable inline suggestion delay
    Setting: editor.inlineSuggest.minShowDelay
    A new setting editor.inlineSuggest.minShowDelay enables you to configure how quickly inline suggestions can appear after you type. This can be useful if you find that suggestions are appearing too quickly and getting in the way of your typing.

    Editor Experience
    Window border color support on Windows
    Setting: window.border
    We are happy to add a new setting window.border on Windows that enables you to show a colored border around the VS Code window. The setting has the following options:
    • default: respect color theme settings, fallback to Windows settings
    • system: respect Windows settings only (window title accent color)
    • off: disable border colors
    • : specific color in Hex, RGB, RGBA, HSL, HSLA format
    You can configure colors per workspace, making it easier to distinguish which workspace is opened in which window.
    When you configure window.border as default, a theme is able to set the border color for active and inactive windows using the window.activeBorder and window.inactiveBorder color keys. You can further override these colors from the workbench.colorCustomizations setting.

    Manage extension account preference
    We've added an Accounts: Manage Extension Account Preferences command to the Command Palette. When invoked, it shows a list of extensions that have access to authentication accounts and lets you change the account that those extensions use. You are even able to sign in to a new account right from the list.
    This builds on the account management functionality that we added a year ago.

    Editor tab index
    Setting: workbench.editor.showTabIndex
    You can now render the index of an editor tab in the tab's label. This can be helpful when you have many tabs open and want to quickly navigate between them using keyboard shortcuts. Enable this functionality with the workbench.editor.showTabIndex setting.

    Editor tab bar scrollbar visibility
    Setting: workbench.editor.titleScrollbarVisibility
    The workbench.editor.titleScrollbarVisibility enables you to control when the scrollbar in the editor tab bar is visible. The default value auto shows the scrollbar only when the tabs overflow and a tab is hovered. You can also set it to visible to always show the scrollbar when the tabs overflow, or hidden to never show it.

    Issue reporter improvements
    When reporting issues in VS Code or extensions via the built-in issue reporter, you can now choose either Create on GitHub or Preview on GitHub via a dropdown on the report button. If the button does not populate a dropdown and only shows Create or Preview, this likely means that you are still loading extension data or need to ensure that you are signed in with a GitHub account that provides the correct scopes.

    Notebooks
    Improved NES suggestions (Experimental)
    Setting: github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled
    We are experimenting with improving the quality of next edit suggestions for notebooks. Currently, the language model has access to the contents of the active cell when generating suggestions. With the github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled setting enabled, the language model has access to the entire notebook, enabling it to generate more accurate and higher-quality next edit suggestions.

    Source Control
    Preview and migrate Git worktree changes
    You can now preview differences between worktree files and your current workspace by right-clicking on a worktree file to open the context menu in the Source Control Changes view and selecting Compare with Workspace.
    After reviewing your changes, you can use the Migrate Worktree Changes... command from the Command Palette (unassigned) to merge all changes from a worktree into your current workspace. This makes it easy to work across multiple worktrees and selectively bring changes back into your main repository.
    Learn more about Git worktrees in VS Code.

    Terminal
    Terminal window discoverability and polish
    A common request is to allow terminals to be opened in separate windows. This functionality has existed for about one and a half years, but it has not been particularly discoverable. This iteration, we added multiple entry points for this functionality:
    • The new command Ctrl+Shift+Alt+`.
    • The empty editor and tab well menus now have a New Terminal entry.
    • The new terminal dropdown has been shuffled around and now has a New Terminal Window entry.
    • The top-level terminal menu now has a New Terminal Window entry.
    We also polished the experience where these new terminal windows open in compact mode. If you add a new tab to the window, it automatically exits compact mode.

    Terminal actions in terminal editors
    The actions that are available in the terminal view (new terminal dropdown, clear terminal, etc.) are now also available for terminals in the editor area and terminal windows.
    Just like in the terminal view, you can right-click the actions area to move them out of the overflow menu.

    Terminal IntelliSense improvements (Preview)
    Terminal IntelliSense is getting several improvements this release:
    • Multiple performance improvements, these disproportionately affect the experience on Windows.
    • git completions are now more reliable on Windows due to the removal of the sed dependency, which isn't available on Windows.
    • git completions now have familiar icons to represent commits, branches, remotes, stashes, and tags.
    • A large number of completion specs were added: adb, basename, bundle, clear, cut, date, dd, diff, dig, dirname, docker-compose, docker, dotnet, env, export, fdisk, fmt, fold, gh, go, htop, id, jq, ln, lsblk, lsof, mount, nl, od, paste, ping, pkill, readlink, rsync, ruby, ruff, sed, seq, shred, sort, source, split, stat, su, sudo, tac, tar, tee, time, tr, traceroute, tree, truncate, uniq, unzip, wc, where, whereis, which, who, xargs, xxd, yo, zip.

    Terminal sticky scroll improvements
    We have now enabled terminal sticky scroll by default. We have made several improvements for a better experience, such as improved behavior when using a pager. Terminal sticky scroll is now compatible with the editor.tabFocusMode setting.

    Languages
    JavaScript and TypeScript
    After reviewing usage numbers, we decided to remove our built-in bower.json IntelliSense. Bower has been deprecated since 2017 and our built-in support had little usage and was not being actively maintained.
    Bower recommends that users migrate to npm or yarn. Continued support for Bower in VS Code can be provided by extensions.

    Python
    Python Environments extension support for Pipenv
    Pipenv environments can now be discovered and selected just like in the Python extension. In addition, they appear in the Environment Manager view in the Python sidebar, where they are grouped and displayed alongside your other environment types.

    Configure environment variable injection
    A new setting, python.useEnvFile, controls whether environment variables from .env files and the python.envFile setting are injected into terminals when the Python Environments extension is enabled.

    Python Environments extension improvements
    The Python Environments Extension continued to receive bug fixes and improvements as part of the controlled roll-out to stable users. To use the Python Environments extension during the roll-out, make sure the extension is installed and add the following to your VS Code settings.json file:
    "python.useEnvironmentsExtension": true.

    AI-powered hover summaries with Pylance (Experimental)
    A new experimental AI hover summaries feature is now available for Python when using the latest pre-release version of Pylance. When you enable the python.analysis.aiHoverSummaries setting, you can get helpful summaries on-the-fly for symbols that do not already have documentation. This makes it easier to understand unfamiliar code and boosts productivity as you explore Python projects. AI hover summaries are currently available to GitHub Copilot Pro, Pro+, and Enterprise users.

    Run code snippet tool
    Instead of relying on terminal commands like python -c "code" or creating temporary files to be executed, the Pylance run code snippets tool enables GitHub Copilot to execute Python snippets entirely in memory. It automatically uses the correct Python interpreter configured for your workspace, and it eliminates common issues with shell escaping and quoting that sometimes arise during terminal execution.
    One of the standout benefits is the clean, well-formatted output it provides, with both stdout and stderr interleaved for clarity. This makes it ideal when using agent mode with GitHub Copilot to test small blocks of code, run quick scripts, validate Python expressions, or check imports, all within the context of your workspace.
    To try it out, make sure to use the latest pre-release version of the Pylance extension. You can then select the pylancerunCodeSnippet tool via the Add context... > Tools menu in the Chat view.
    Note: As with all AI-generated code, please make sure to inspect the generated code before allowing this tool to be executed. Reviewing the logic and intent of the code ensures it aligns with your project's goals and maintains safety and correctness.

    Pylance IntelliSense enabled in all Python documents
    The python.analysis.supportAllPythonDocuments setting has been removed from the latest Pylance pre-release version, with Pylance IntelliSense now being enabled by default in all Python documents, including terminal and diff views. This means you can get rich code completions, hover and code navigation wherever you work with Python in VS Code.

    Activation hooks
    Python activation hooks can now run from shell integration scripts, instead of requiring the Python environment extension to modify your shell profile. This provides more reliable terminal activation when python-envs.terminal.autoActivationType is set to shellStartup and, importantly, ensures Copilot terminals are activated as expected.

    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:
    • Side Bar content collapses on narrow windows
    • Pull request and issue webviews restore after reload
    • The new "TODO" code action lets you delegate directly to the Copilot coding agent
    • Submodules can be ignored with githubPullRequests.ignoreSubmodules
    Review the changelog for the 0.118.0 release of the extension to learn about everything in the release.

    Extension Authoring
    shellIntegrationNonce for extension launched terminals
    shellIntegrationNonce can now be passed to createTerminal in TerminalOptions and ExtensionTerminalOptions. This enables the extension to control the nonce, which is used to verify commands in shell integration escape sequences.

    Language Model Chat Provider API
    This iteration, we finalized the LanguageModelChatProviders API. This enables extensions to contribute one or more language models, cloud-hosted or local. By installing the extension, users can select these models through the model picker in chat.
    There are already multiple extensions that take advantage of this API to extend chat in VS Code with additional models, including AI Toolkit for VS Code, Cerebras Inference, and Hugging Face.
    You can learn more about how to utilize this API in our Language Model Chat Provider extension guide or in our extension sample.
    Note: Models provided through this API are currently only available to users on individual GitHub Copilot plans.

    Proposed APIs
    Authentication: Supporting WWW-Authenticate challenges in getSession
    A well-established pattern of HTTP is that a request to an API can return a 401 Unauthorized status code with a WWW-Authenticate header, which defines auth challenges. These are essentially things that the API needs in order to resolve past the 401.
    We have introduced a proposed API, which allows for the passing down and handling of these challenges to authentication providers. First off, from the calling side you can now pass in a challenge like so:
    [TypeScript interface and function definitions omitted for brevity]
    On the authentication provider side, we have added the following two new functions to AuthenticationProvider:
    getSessionsFromChallenges and createSessionFromChallenges.
    An auth provider can declare support for challenges when registered via supportsChallenges: true in AuthenticationProviderOptions.

    Example: Azure MFA
    This work was initially done due to an upcoming change to require MFA in Azure APIs so let's also use that as an example of this API.
    Let's say you have an extension that creates a resource in Azure. All that's doing is calling an Azure RM API, nothing fancy... Your extension is probably already familiar with calling vscode.authentication.getSession to get an authentication session, mainly an access token, that can be used to call this API. Now, when you first minted that authentication session, depending on your organization, you may or may NOT have gone through multifactor authentication (MFA). If you did, then the Azure API will be happy. If you didn't go through MFA, then Azure's API will return a 401 and a WWW-Authenticate header.
    Now comes our new API in VS Code... all you have to do is take that header value, and pass it right in to vscode.authentication.getSession.
    This will pass that header value down to the microsoft auth provider, and the auth provider will be responsible for minting a session in which the challenges are satisfied.

    Next steps
    Next iteration we will finalize the getSession (aka extension asking for auth) parts of this proposal so if you have any feedback on that or the shape of the AuthenticationProvider changes, let us know! You can find the full proposal on GitHub here.
    Another use case that will be lit up soon regarding WWW-Authenticate, is for MCP servers to issue a WWW-Authenticate header asking for a token with more scopes. There's a proposal in the MCP specification for this.

    View containers in the Secondary Side Bar
    Extensions can contribute view containers to the activitybar and panel. We have now added support for contributing to the secondarySidebar as well. This is currently behind the contribSecondarySideBar proposed API. We are hoping to finalize this API soon.

    Engineering
    Exploring Playwright and Playwright MCP in the inner development loop of VS Code
    Agent mode and other AI features of VS Code have become a core tool (no pun intended) for the VS Code team to build VS Code itself. We wanted to explore how we can apply these features further to make the inner development loop of VS Code even better. To that end, we have been experimenting with extending our existing smoke test automation project, which uses Playwright, to create an MCP server that can drive a local instance of VS Code. This allows our existing agentic flows, which focused on receiving context from build/test-time artifacts (compilation, linters, tests, etc.), to now also interact with a live instance of VS Code... verifying that changes have the desired effect at runtime.
    The first piece of this work can be found in the test/mcp folder of the vscode repo. If you're interested in trying it out, it's very easy to get started:
    Follow the Contribution Guidelines for getting a local version of Code OSS running
    Then you can use our trivial (for now) prompt file to ask a question /playwright your question here in Agent mode.
    This is still an early exploration, but we are excited about the possibilities this opens up for us to use AI further in our inner development loop. The ground work is now laid, and we will be iterating on this to make it more robust and useful for the team.
    This work was recently featured on the VS Code Insiders podcast, where we discussed the motivations behind this exploration and some of the technical details. You can listen to the episode of the VS Code Insiders podcast.

    Notable fixes
    • vscode#151902 - Terminal: Copy on selection + new highlight in 1.68 copies previous term on CMD+F
    • vscode#222075 - Terminal sticky scroll can show up for 1 frame when using page down in a pager
    • xtermjs/xterm.js#5390 - Fix scrollbar teleport after exiting alt buffer

    Thank you
    Last but certainly not least, a big Thank You to the contributors of VS Code.

    Issue tracking
    Contributions to our issue tracking:
    • @gjsjohnmurray (John Murray)
    • @RedCMD (RedCMD)
    • @IllusionMH (Andrii Dieiev)
    • @albertosantini (Alberto Santini)

    Pull Requests
    Contributions to vscode:
    • @a-ariff (Ariff): docs: fix grammar in Development Container section PR #264162
    • @alexkozy (Alexey): fix: tiny memory leak in debugToolBar.ts PR #259349, fix: register WorkerTextModelSyncClient PR #259442
    • @alexvoedi (Alexander Vödisch): Fix linkedEditing desync PR #242993
    • @bluedog13: Fix OAuth redirect URI format to align with Microsoft's URL standards PR #260446, Fix OAuth2 resource parameter compliance with RFC 8707 PR #261815
    • @CGNonofr (Loïc Mangeonjean): Fix theme not being synchronized with external windows on firefox PR #259839
    • @Da-nie-elT: Update for-in loop snippet with Object.hasOwn() PR #262682
    • @DoctorKrolic: Add .slnx to xml language extension list PR #259049
    • @DrSergei (Druzhkov Sergei): Fix memory reference handling in Watch window PR #259753
    • @gjsjohnmurray (John Murray): Add Go to Test to coverage sources quickpick PR #259600, Set correct active entry on test coverage toolbar's quickpick PR #259639, Test Results: Only offer Go to Test with a uri (fix #260443) PR #260508
    • @hihry (Himanshu Ravindra Iwanati): fix: update capitalization for 'Restore to Last Checkpoint' hover text PR #259572
    • @j3iiifn: Prompt file name cannot contain digits PR #261704
    • @joelverhagen (Joel Verhagen): Allow the canonical package name and version to be sent back from the install flow PR #259081, Support server.json being returned by assisted MCP install PR #259634, Add support for a help link when MCP assisted installation fails PR #260215
    • @kenherring (Ken Herring): terminal.copyOnSelection and terminalFindWidget - do not copy selection on focus PR #254065
    • @kplates (kplates): feat: Include/ Exclude file types from file search PR #254285
    • @LeftPhalange (Ethan Bovard): Add Open Active Diff Side option to Command Palette using DIFF_OPEN_SIDE command PR #261699
    • @remcohaszing (Remco Haszing): Fix global access of MonacoEnvironment PR #248075, Highlight more languages in markdown code blocks PR #263550
    • @rwoll (Ross Wollman): Wait for agent loop to finish in automation PR #262370, support model switching in automation PR #262420, fix: parse commands in chat.open commands PR #263458, fix: confirm response based on promise PR #263894, Revert "fix: confirm response based on promise (#_263894)" PR #264047
    • @SimonSiefke (Simon Siefke): fix: memory leak in pattern input widget PR #258152, fix: memory leak in codelens controller PR #263136, fix: memory leak in accessibility signal scheduler PR #263147, fix: memory leak in QuickDiffModel PR #265007
    • @swordjjjkkk (Truman): Display Tab Indexes in VSCode PR #209196
    • @terreng (Terren): Implement new option to control title scrollbar visibility PR #246161
    • @timheuer (Tim Heuer): Add collapse all functionality to test coverage view PR #258906
    • @tmm1 (Aman Karmani): fix some typos PR #259747, terminalProcessManager: fix disposable leak PR #261710, storage: optimize sqlite insert with upsert syntax PR #261999
    • @Tritlo (Matthías Páll Gissurarson): extHostMcp: accept Content-Type parameters for SSE/JSON handling PR #262787
    • @ttttotem (ttttotem): Fixes "Caret jumps to column 0 when clicking between first two characters" PR #265131
    • @JBlitzar (JBlitzar): Use app.dock.hide when connecting to an existing instance PR #259352

    Contributions to vscode-copilot-chat:
    • @24anisha: add sku data to github telemetry PR #819
    • @devm33 (Devraj Mehta): Make logprobs field optional PR #325
    • @iann0036 (Ian Mckay): fix: Case sensitive adjustment for "GitHub" PR #631
    • @joelverhagen (Joel Verhagen): Use .NET SDK to search for NuGet packages, emit events, add tests for all package types PR #546, Add command executor abstraction, only run dotnet CLI tests on CI PR #607, Hash package name during MCP server installation PR #618
    • @jwangxx (James Wang): Add "onExP" tag to enableRetryAfterFilteredResponse setting PR #479, Remove experimental setting for retrying after filtered response PR #830
    • @lipido (Daniel Glez-Peña): Improve agent test coverage PR #614
    • @m4dc4p: Update getErrors (GetErrors / problems) tool PR #394
    • @rwoll (Ross Wollman): Fix auth for Copilot Chat running in automated VSC Extension Host PR #609, allow more services in Scenario Mode PR #653, plumb code on ChatErrorDetails PR #680
    • @shaunm-msft (Shaun Miller): Remove the message copilot_cache_control field from a context where there is no understanding of it PR #554
    • @sridharavinash (Avinash Sridhar): Add mode to conversation model messages PR #517
    • @yemohyleyemohyle: Add message length events to MSFT internal telemetry PR #473
    • @zhichli (Zhichao Li): Feature: add JSON export of chat prompt logs in chat debug view PR #672, Add tool and other metadata to chat debug json export PR #789, Remove tool calls from request type JSON logs exported from chat debug PR #794

    Contributions to vscode-eslint:
    • @AmarMuric04 (AmarMuric): docs: Update ESLint installation and configuration instructions PR #2062, docs: Remove duplicate text in README.md PR #2066
    • @davidtaylorhq (David Taylor): Add probe support for Ember's glimmer-ts/glimmer-js format PR #2069

    Contributions to vscode-extension-samples:
    • @Sepush (Artea): refactor(lsp-embedded-request-forwarding): clean useless code PR #1196

    Contributions to vscode-js-debug:
    • @LittleLittleCloud (Xiaoyun Zhang): fix: handle localhost hostname in constructInspectorWSUri function PR #2260

    Contributions to vscode-jupyter:
    • @hunterhogan (Hunter Hogan): Typos in package.nls.json PR #16890
    • @krassowski (Michał Krassowski): Add support for custom CDN URLs PR #16885

    Contributions to vscode-languageserver-node:
    • @MariaSolOs (Maria José Solano): Add capability information to textDocument/colorPresentation PR #1660

    Contributions to vscode-markdown-languageservice:
    • @remcohaszing (Remco Haszing): Update @vscode/l10n to version 0.0.18 PR #199

    Contributions to vscode-markdown-tm-grammar:
    • @c-schuhmann (Christian Schuhmann): Add support for SAP ABAP syntax PR #176
    • @esmasth (Siddharth Sharma): Add support for YANG code fence PR #169
    • @Morikko (Eric Masseran): Add restructuredtext support in markdown code block PR #178
    • @remcohaszing (Remco Haszing): Add support for jsonl code blocks PR #181, Add support for ignore code blocks PR #182

    Contributions to vscode-pull-request-github:
    • @krassowski (Michał Krassowski): Fix typo "will be replace" → "will be replaced" PR #7540

    Contributions to vscode-python-environments:
    • @almarouk (Abdelrahman AL MAROUK): fix: enhance conda executable retrieval with path existence checks PR #677
    • @sjsikora (Sam Sikora): bug fix: Stricter pip list Package Parsing PR #698

    Contributions to vscode-vsce:
    • @tgrospic (Tomislav Grospić): Avoid Node.js DEP0190 warning by using string form for prepublish command PR #1188

    Contributions to debug-adapter-protocol:
    • @jborean93 (Jordan Borean): Add Ansible implementation PR #552

    Contributions to language-server-protocol:
    • @aartaka (Artyom Bologov): Add cl-lsp (Common Lisp) to implementations list PR #2179
    • @anakin4747 (Anakin Childerhose): Add kconfig-language-server PR #2177
    • @asukaminato0721 (Asuka Minato): add ty PR #2175
    • @MariaSolOs (Maria José Solano): Add capability information to textDocument/colorPresentation PR #2173
    • @notpeter (Peter Tripp): Fix broken anchor links in changelog PR #2171, Markdown whitespace formatting improvements PR #2172
    • @ribru17 (Riley Bruins): Fix 3.18 metamodel version PR #2180
    • @skewb1k: correct grammar and consistency in lazy property descriptions PR #2170

    Contributions to node-jsonc-parser:
    • @operagxsasha: docs: edited the link to the badge tests PR #98
    • @pimterry (Tim Perry): Add startLine & startCharacter to parser errors PR #102

    Contributions to python-environment-tools:
    • @almarouk (Abdelrahman AL MAROUK): Fix conda env trace message PR #241

    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 Report a problem
  • Aug 7, 2025
    • Parsed from source:
      Aug 7, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    July 2025 (version 1.103)

    July 2025 VS Code delivers GPT-5 and GPT-5 mini rollout, revamped tool picker, chat checkpoints, Git worktrees, and richer agent sessions. It boosts accessibility and reliability while expanding AI tooling and integration across editors, terminals, and notebooks.

    Welcome to the July 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
    • MCP
    ◦ Revamped tool picker experience
    ◦ Enable more than 128 tools per agent request
    • Chat
    ◦ Use GPT-5 in VS Code
    ◦ Restore to a previous good state with chat checkpoints
    • Productivity
    ◦ Check out multiple branches simultaneously with Git worktrees
    ◦ Manage coding agent sessions in a dedicated view

    Update 1.103.1: The update adds GPT-5 prompt improvements, support for GPT-5 mini, and addresses various issues.
    Update 1.103.2: The update addresses additional issues.

    Downloads: Windows: x64, Arm64 | Mac: Universal, Intel silicon | Linux: deb, rpm, tarball, Arm, snap

    Chat:
    Starting today, GPT-5 is rolling out to all paid GitHub Copilot plans. GPT-5 is OpenAI's most capable model yet, bringing new advances in reasoning, coding, and chat. Learn more about the GPT-5 model availability in the GitHub Changelog.
    Open the Chat view and choose GPT-5 from the model picker to start using it for your chat conversations in VS Code. Learn more about using language models in VS Code.
    Update 1.103.1: This update adds significant prompt improvements to further enhance the quality and performance of the model.

    GPT 5 mini availability:
    Starting from this release, GPT-5 mini is rolling out to all GitHub Copilot plans. GPT-5 mini is OpenAI's faster, more cost-efficient variant of GPT-5. Learn more about the GPT-5 mini model availability in the GitHub Changelog.

    Chat checkpoints:
    Setting: chat.checkpoints.enabled
    We've introduced checkpoints that enable you to restore different states of your chat conversations. You can easily revert edits and go back to certain points in your chat conversation. This can be particularly useful if multiple files were changed in a chat session.
    When you select a checkpoint, VS Code reverts workspace changes and the chat history to that point. After restoring a checkpoint, you can redo that action as well!

    Tool picker improvements:
    We've totally revamped the tool picker this iteration and adopted a new component called Quick Tree to display all the tools.
    Notable features:
    • Expand or collapse
    • Configuration options moved to the title bar
    • Sticky scrolling
    • Icon rendering
    Let us know what you think!

    Tool grouping (Experimental):
    Setting: github.copilot.chat.virtualTools.threshold
    The maximum number of tools that you can use for a single chat request is currently 128. Previously, you could quickly reach this limit by installing MCP servers with many tools, requiring you to deselect some tools in order to proceed.
    In this release of VS Code, we have enabled an experimental tool-calling mode for when the number of tools exceeds the maximum limit. Tools are automatically grouped and the model is given the ability to activate and call groups of tools.
    This behavior, including the threshold, is configurable via the setting github.copilot.chat.virtualTools.threshold.

    Terminal auto-approve improvements:
    Setting: chat.tools.terminal.autoApprove
    Early terminal auto-approve settings were introduced last month. This release, the feature got many improvements. Learn more about terminal auto-approval in our documentation.
    • We merged the allowList and denyList settings into the chat.tools.terminal.autoApprove setting. If you were using the old settings, you should see a warning asking you to migrate to the new setting.
    • Regular expression matchers now support flags. This allows case insensitivity, for example in PowerShell, where case often doesn't matter.
    • There was some confusion around how the sub-command matching works, this is now explained in detail in the setting's description, but we also support matching against the complete command line.
    • The auto approve reasoning is now logged to the Terminal Output channel. We plan to surface this in the UI soon.

    Input request detection for terminals and tasks:
    When you run a task or terminal command in agent mode, the agent now detects when the process requests user input. You will be prompted to respond in chat, with the default or first option surfaced as the primary action and other options available in a dropdown. This works for scripts and commands that require multiple confirmations, across all supported shells and both foreground and background terminals. If you type in the terminal while a prompt is present, the prompt will hide automatically. When options and descriptions are provided (such as [Y] Yes [N] No), these are surfaced in the confirmation prompt.

    Improved error detection for tasks with problem matchers:
    For tasks that use problem matchers, the agent now collects and surfaces errors based on the problem matcher results, rather than relying on the language model to evaluate output. Problems are presented in a dropdown within the chat progress message, allowing you to navigate directly to the problem location. This ensures that errors are reported only when relevant to the current task execution.

    Compound task support in agent mode:
    Agent mode now supports running compound tasks. When you run a compound task, the agent indicates progress and output for each dependent task, including any prompts for user input. This enables more complex workflows and better visibility into multi-step task execution.

    Accessibility: Focus chat confirmation action:
    We've added a command, Focus Chat Confirmation (kb(workbench.action.chat.focusConfirmation)), which will focus the confirmation dialog, if any, or announce to screen reader users that confirmation is not required.

    Track progress with task lists (Experimental):
    Setting: chat.todoListTool.enabled
    The great thing about agent mode is that you can give it a high-level task and have it implement it. As it plans the work and breaks it down into smaller tasks, it can be overwhelming to track the progress of all these individual tasks.
    This milestone, we are introducing the task/todo list feature in chat to better help you see which tasks are completed and which ones are still pending. You can view the task list at the top of the Chat view, so you always have visibility into the progress being made. As the agent progresses through its work, it updates the task list.
    Get started by giving the agent a high-level task and ask it to track its work in a todo list!

    Improved model management experience:
    This iteration, we've revamped the chat provider API, which is responsible for language model access. Users are now able to select which models appear in their model picker, creating a more personalized and focused experience.
    We plan to finalize this new API in the coming months and would appreciate any feedback. Finalization of this API will open up the extension ecosystem to implement their own model providers and further expand the bring your own key offering.

    Azure DevOps repos remote index support:
    The #codebase tool now supports remote indexes for workspaces that are linked to Azure DevOps repos. This enables #codebase to search for relevant snippets almost instantly without any initialization. This even works for larger repos with tens of thousands of indexable files. Previously, this feature only worked with GitHub linked repos.
    Remote indexes are used automatically when working in a workspace that is linked to Azure DevOps through git. Make sure you are also logged into VS Code with the Microsoft account you use to access the Azure DevOps repos.
    We're gradually rolling out support for this feature on the services side, so not every organization might be able to use it initially. Based on the success of the rollout, we hope to turn on remote indexing for Azure DevOps for as many organizations as possible.

    Improved reliability and performance of the run in terminal and task tools:
    We have migrated the tools for running tasks and commands within the terminal from the Copilot extension into the core microsoft/vscode repository. This gives the tools access to lower-level and richer APIs, allowing us to fix many of the terminal hanging issues. This update also comes with the benefit of more easily implementing features going forward, as we're no longer restricted to the capabilities of the extension API, especially any changes that need custom UI within the Chat view.

    Output polling for tasks and terminals:
    The agent now waits for tasks and background terminals to complete before proceeding by using output polling. If a process takes longer than 20 seconds, you are prompted to continue waiting or move on. The agent will monitor the process for up to two minutes, summarizing the current state or reporting if the process is still running. This improves reliability when running long or error-prone commands in chat.

    Task awareness improvement:
    Previously, the agent could only monitor active tasks. Now, it can track and analyze the output of both active and completed tasks, including those that have failed or finished running. This enhancement enables better troubleshooting and more comprehensive insights into task execution history.

    Agent awareness of user created terminals:
    The agent now maintains awareness of all user-created terminals in the workspace. This enables it to track recent commands and access terminal output, providing better context for assisting with terminals and troubleshooting.

    Terminal inline chat improvements:
    Terminal inline chat now better detects your active shell, even when working within subshells (for example, launching Python or Node from PowerShell or zsh). This dynamic shell detection improves the accuracy of inline chat responses by providing more relevant command suggestions for your current shell type.

    Improved test runner tool:
    The test runner tool has been reworked. It now shows progress inline within chat, and numerous bugs in the tool have been fixed.

    Edit previous requests:
    Setting: chat.editRequests
    Last iteration, we enabled users to edit previous requests and rolled out a few different access points. This iteration, we've made inline edits the default behavior. Click on the request bubble to begin editing that request. You can modify attachments, change the mode and model, and resend your request with modified text.

    Open chat as maximized:
    Setting: workbench.secondarySideBar.defaultVisibility
    We added two extra options for configuring the default visibility of the Secondary Side Bar to open it as maximized:
    • maximizedInWorkspace: open the Chat view as maximized when opening a new workspace
    • maximized: open the Chat view always as maximized, including in empty windows

    Pending chat confirmation:
    To help prevent accidentally closing a workspace where an agent session is actively changing files or responding to your request, we now show a dialog when you try to quit VS Code or close its window when a chat response is in progress.

    OS notification on user action:
    Setting: chat.notifyWindowOnConfirmation
    We now leverage the OS native notification system to show a toast when user confirmation is needed within a chat session. Enable this behavior with the chat.notifyWindowOnConfirmation setting.
    We plan to improve this experience in the future to allow for displaying more information and for allowing you to approve directly from the toast. For now, selecting the toast focuses the window where the confirmation originated from.

    Math support in chat (Preview):
    Setting: chat.math.enabled
    Chats now have initial support for rendering mathematical equations in responses:
    This feature is powered by KaTeX and supports both inline and block math equations. Inline math equations can be written by wrapping the markup in single dollar signs ($...$), while block math equations use two dollar signs ($$...$$).
    Math rendering can be enabled using chat.math.enabled. Currently, it is off by default but we plan to enable it in a future release, after further testing.

    Context7 integration for project scaffolding (Experimental):
    Setting: github.copilot.chat.newWorkspace.useContext7
    When you scaffold a new project with #new in chat, you can now make sure that it uses the latest documentation and APIs from Context7, if you have already installed the Context7 MCP server.

    MCP:
    Server autostart and trust:
    Setting: chat.mcp.autostart
    Previously, when you added or updated an MCP server configuration, VS Code would show a blue "refresh" icon in the Chat view, enabling you to manually refresh the list of tools. In the milestone, you can now configure the auto-start behavior for MCP servers, so you no longer have to manually restart the MCP server.
    Use the chat.mcp.autostart setting to control this behavior. You can also change this setting within the icon's tooltip and see which servers will be started.
    The first time an MCP server is started after being updated or changed, we now show a dialog asking you to trust the server. Giving trust to these servers is particularly important with autostart turned on to prevent running undesirable commands unknowingly.
    Learn more about using MCP servers in VS Code in our documentation.

    Client credentials flow for remote MCP servers:
    The ideal flow for a remote MCP server that wants to support authentication is to use an auth provider that supports Dynamic Client Registration (DCR). This enables the client (VS Code) to register itself with that auth provider, so the auth flow is seamless.
    However, not every auth provider supports DCR, so we introduced a client-credentials flow that enables you to supply your own client ID and (optionally) client secret that will be used when taking you through the auth provider's auth flow.
    Steps:

    1. VS Code detects that DCR can't be used, and asks if you want to do the client credentials flow.
    2. From the auth provider's portal, you will get a client ID and maybe a client secret. You'll put the client ID in the input box that appears and hit Enter.
    3. Then you'll put in the client secret if you have one, and hit Enter (leave blank if you don't have one).
      At that point, you'll be taken through the typical auth flow to authenticate the MCP server you're working with.

    Remove dynamic auth provider from Account menu:
    Since the addition of remote MCP authentication, there has been a command available in the Command Palette called Authentication: Remove Dynamic Authentication Providers, which enables you to remove client credentials (client ID and, if available, a client secret) and all account information associated with that provider.
    We've now exposed this command in the Account menu. You can find it inside of an MCP server account or at the root of the menu if you don't have any MCP server accounts yet.

    Support for resource_link and structured output:
    VS Code now fully supports the latest MCP specification, version 2025-06-18, with support for resource_links and structured output in tool results.

    Accessibility:
    Accessible chat elicitations:
    When the agent prompts for user input, such as whether to keep waiting for a process, the chat elicitation is now accessible to screen readers. You are alerted when the prompt appears, can navigate to it with the keyboard, and can review the message in the accessible view.
    Control file opening for chat edits:
    A new setting, accessibility.openChatEditedFiles, lets you choose whether files are automatically opened as the agent edits them in chat. Enable this setting for more control over which files appear in your editor.
    View all and previous edits commands:
    The View All Edits and View Previous Edits commands are now available throughout the editor, making it easy to review changes made by the agent. These commands are especially helpful when accessibility.openChatEditedFiles is disabled, allowing you to track edits without opening each file.
    Side Bar visibility announcements:
    When the Primary or Secondary Side Bar is shown or hidden, an ARIA announcement now notifies you of this change. This improves accessibility by ensuring screen reader users are aware of Side Bar visibility updates.
    Accessibility testing with Playwright:
    We have added automated accessibility tests for the editor using Playwright. These tests help us continuously validate that Visual Studio Code meets accessibility standards and best practices, ensuring a better experience for all users.

    Editor Experience:
    Settings search suggestions:
    The AI search results toggle in the search box of the Settings editor, indicated by a sparkle, is now available for all users. The toggle is enabled when AI search results have loaded and are available. Pressing the toggle switches between the AI and non-AI search results.
    The AI settings search results are based on semantic similarity instead of string matching. For example, editor.fontSize appears as an AI settings search result when you search for "increase text size".

    Editor tab context menu:
    We cleaned up the editor tab context menu to group related options for splitting and moving into a submenu.

    AI statistics (Preview):
    Setting: editor.aiStats.enabled
    We added an experimental feature for displaying basic AI statistics. Use the editor.aiStats.enabled to enable this feature, which is disabled by default.
    This feature shows you, per project, the percentage of characters that was inserted by AI versus inserted by typing. It also keeps track of how many inline and next edit suggestions you accepted during the current day.

    Notebooks:
    Notebook inline chat with agent tools:
    Setting: inlineChat.notebookAgent
    The notebook inline chat control can now use the full suite of notebook agent tools to enable additional capabilities like running cells and installing packages into the kernel.

    Install dependencies in Virtual Environments created with uv:
    We now support installing required dependencies when you run Jupyter Notebooks against a Virtual Environment created using uv.

    Source Control:
    Git worktree support:
    Setting: git.detectWorktrees
    To address a long-standing feature request, this milestone we have added Git worktree support. Worktrees let you check out multiple branches at once, making it easy to test changes or work in parallel without switching contexts.
    When opening a folder or workspace that contains a git repository, we now automatically detect worktrees and display them in the Source Control Repositories view. You can now view, create, delete, and open worktrees in a new or current window by using commands available from the Command Palette or Source Control Repositories view. You can disable this functionality by toggling the git.detectWorktrees setting.

    Repositories view:
    The Source Control Repositories view displays all source control providers that were discovered in the current folder/workspace. This milestone, we have updated the rendering of the view in order to visually distinguish between repositories, submodules, and worktrees. We also show the parent-child relationship between repositories, submodules and worktrees.

    Terminal:
    Documentation support in terminal suggest:
    Terminal suggestions powered by language servers (LSP) now include inline documentation, similar to what you see in the editor. Starting with the Python REPL, you'll get helpful descriptions and usage details for commands as you type.
    You currently need these settings to enable LSP suggestions in the terminal:
    • python.terminal.shellIntegration.enabled
    • python.analysis.supportAllPythonDocuments

    Voice dictation:
    Now that natural language input is supported in terminals, including those enabled by the Gemini and Claude extensions, we have reintroduced voice dictation in the terminal. You can start or stop dictation by using the Terminal: Start Dictation in Terminal and Terminal: Stop Dictation in Terminal commands.

    Improved shell integration diagnostics:
    Shell integration is the foundation that many features in the integrated terminal are built upon such as sticky scroll, quick fixes, and agent mode's ability to understand what's happening inside the terminal.
    This release features some improved diagnostics when you hover the terminal and select Show Details. You should now see the detected shell type and current working directory.

    Languages:
    Python:
    Shell integration support for Python 3.13 and above:
    We now support shell integration for Python when using version 3.13 or later. When enabled, PyREPL is automatically disabled to ensure compatibility. You can disable shell integration if you prefer to continue using PyREPL.

    Python Environments extension improvements:
    The Python Environments Extension continued to receive bug fixes and improvements as part of the controlled roll-out to stable users. To use the Python Environments extension during the roll-out, make sure the extension is installed and add the following to your VS Code settings.json file: "python.useEnvironmentsExtension": true.

    TypeScript 5.9:
    VS Code now includes TypeScript 5.9.2. This major update brings a few new language improvements, including support for import defer, along with tooling improvements such as improved docs for many DOM apis.
    Check out the TypeScript 5.9 release blog for more details on this update.

    Expandable hovers for JavaScript and TypeScript:
    When you hover over a symbol in JavaScript or TypeScript, VS Code tries to show the most useful IntelliSense type information about that symbol. Types can be very complex, so one challenge for us has been trying to find the right balance between showing enough details to be useful, while not showing so much info that it becomes overwhelming. It's hard to come up with a good one size fits all approach, and also the level of type detail you want might change depending on what you are working on.
    That's why this iteration, we've added new UI that gives you more control over how types are shown in hovers. When you hover over a symbol, now you can select the little + icon on the left side of the hover control to expand the interfaces and complex types in the hover into their components. For example, you can use this to see the properties of an interface directly in the hover.
    Hovers can be expanded multiple times, which recursively expands types from the previous expansion. If you ever expand too much, just select the - icon to go back to the previous level. Also keep in mind that not every type is expandable and that we still need some limits on just how much expansion we can support.
    Let us know if there are any cases where expandable hovers aren't working how you'd like.

    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.
    Review the changelog for the 0.116.0 release of the extension to learn about everything in the release.

    Pull request header cleanup:
    We've simplified the button bar in the pull request description header. The copy actions are now in the right-click context menu of the PR link.

    Show coding agent PRs in chat:
    Setting: githubPullRequests.codingAgent.uiIntegration
    When you start a coding agent session (via #copilotCodingAgent or with the Delegate to coding agent action), the pull request is rendered as a card in the Chat view.
    Enable the githubPullRequests.codingAgent.uiIntegration setting to enable the new Delegate to coding agent button in the Chat view, for repositories that have the agent enabled.

    Chat sessions (Experimental):
    Coding agent chats:
    Building off last iteration's Copilot coding agent integration, you can now manage a coding agent session from a dedicated chat editor. This enables you to follow the progress of the coding agent, provide follow-up instructions, and see the agent's responses in a dedicated chat editor.
    • Start a coding agent session from VS Code with the #copilotCodingAgent tool or via the UI controls.
    • Follow the progress of coding agent in an attached chat editor.
    • Provide follow-up instructions directly from chat.

    Chat sessions view:
    Setting: chat.agentSessionsViewLocation
    Enable the chat.agentSessionsViewLocation setting to try this experimental feature.
    • When set to view, you will see a new Chat Sessions view is shown in the VS Code Side Bar. This view enables you to manage and interact with your local chat sessions, as well as the coding agent sessions.
    • When set to showChatsMenu, coding agent chat sessions are shown alongside the local chat history.
    This integration requires the latest GitHub Pull Request extension and a repository open that supports Copilot coding agent. For more information, see the new documentation on how to use coding agent in VS Code.

    Theme: Sharp Solarized (preview on vscode.dev)

    Extension Authoring:
    Terminal activation events:
    Two new activation events are available for extensions:
    • onTerminal: Triggered when any terminal is opened.
    • onTerminalShellIntegration: Triggered when rich shell integration is activated for a terminal.
    You can specify a shellType to target specific shells. For example, onTerminalShellIntegration:bash activates when shell integration is enabled for a Bash terminal.

    Proposed APIs:
    Render custom webviews in chat responses:
    The Chat Output Renderer API lets extensions take chat responses beyond text and images. With it, your extension can use a webview to render arbitrary HTML content in the chat output. Example use cases include custom visualizations, inline previews, and even interactive controls.
    The Chat Output Renderer extension sample shows how this API can be used to render Mermaid diagrams in chat responses. Here's an example of this extension sample in action:
    The neat thing is not that VS Code can render Mermaid diagrams, but that this rendering can be contributed entirely by extensions. With it, you can iterate on the custom outputs in chat:
    Here's a quick run down of how the API works:
    • Register a language model tool that can return custom data as part of its response. We use a mime type to identify this data.
    • Register a chat output renderer for this mime type.
    • When a language model calls the tool, invoke the chat output renderer to render it into a webview in the response.
    Check out the extension sample for a full end-to-end example of this API in action.
    This API has the potential to be very powerful and enable some amazing new chat experiences, so give it a try and let us know what you think!

    Chat Session Provider API:
    The new Chat Session Provider API proposal enables extensions to integrate their own chat backend into VS Code's native chat UI. Using it, your extension can open a new chat session, populate the history for that session, and respond to new user prompts.
    This API is still in early stages and is likely to change. However we're already using it to power the new GitHub coding agent session flow, which loads chats from GitHub and allows you to chat with an agent that is controlled entirely by GitHub.

    Task execution terminal:
    Extension authors can now access the terminal associated with a running task via the new taskExecution.terminal property. This makes it easier to identify which terminal is linked to a specific task and interact with it programmatically.

    SecretStorage keys() API:
    If you have ever wanted to get the list of keys that your extension has stored in SecretStorage, you can now do so with the new proposed keys() API.

    Engineering:
    packages.microsoft.com key update:
    packages.microsoft.com has updated their signing key and as a result, Linux users on newer distributions should stop seeing key-related warnings or errors while installing VS Code. Debian-based distributions automatically receive the new key, whereas users on other distributions may have to manually remove the old key before importing the new key.

    Electron 37 update:
    In this milestone, we are promoting the Electron 37 update to users on our Stable release. This update comes with Chromium 138.0.7204.100 and Node.js 22.17.0. We want to thank everyone who self-hosted on Insiders builds and provided early feedback.

    Notable fixes:
    • vscode#252384 - Agent Mode pauses when VS Code loses focus

    Thank you:
    Last but certainly not least, a big Thank You to the contributors of VS Code.

    Issue tracking:
    Contributions to our issue tracking:
    • @gjsjohnmurray (John Murray)
    • @RedCMD (RedCMD)
    • @albertosantini (Alberto Santini)
    • @IllusionMH (Andrii Dieiev)

    Pull Requests:
    Contributions to vscode:
    • @adityavc (Aditya Chittari): #134898 - trimming whitespace when deleting new line character PR #210870
    • @adrianstephens: Add debug/watch/context to list of valid menu extension points PR #237751
    • @andy0130tw (Andy Pan): Support the locale argument of TypeScript language server on the web version (#_256252) PR #256256
    • @Benimautner: Add inertial scrolling to scrollable elements PR #244034
    • @BlackHole1 (Kevin Cui): fix: cannot display MAKR Underlined in minimap PR #226116
    • @bytemain (Jiacheng): refactor(terminal): introduce ITerminalLaunchResult interface PR #256284
    • @c-claeys (Cristopher Claeys): Make ServicesAccessor typing more consistent in editor commands PR #218369
    • @CookieeQuinn (Quinn): Fix issue #212484: caretRangeFromPoint was not working when invoked over text which used user-select: none. PR #219819
    • @CrazySteve0605 (Wang Chong): fix(gettingStarted): remove duplicated "can be" in hover description PR #254412
    • @dbreen (Dan Breen): Use a saner default scrollbar width for the Explorer PR #199784
    • @devlinjunker: Expose undo/redo and canUndo/canRedo methods on model API PR #213954
    • @dibarbet (David Barbet): Enable angle bracket colorization for C# PR #247665
    • @duncpro (Duncan): Vertical pipe characters should terminate URLs PR #232460
    • @dylanchu: TerminalTaskSystem: Fix addtion arguments for string command PR #251201
    • @estrizhok (Eugene Strizhok): Correct capitalization of 'JetBrains' and 'ReSharper' in settings UI PR #254472
    • @noritaka1166 (Noritaka Kobayashi): chore: fix typo in comment-out PR #2031
    • @pilaoda (pilaoda): fix watch panel custom string representation. #2252 PR #2253
    • @fengzilong (MO): feat: allow format range to be undefined PR #272
    • @Adjective-Object (Max): add commonjs annotation to package.json PR #1179
    • @osiewicz (Piotr Osiewicz): chore: Add Zed to the list of tools supporting DAP PR #548
    • @Leonidas-from-XIV (Marek Kubica): ocaml-language-server does not exist anymore PR #2165
    • @renan-r-santos (Renan Santos): Exclude Pixi environments from the Conda locator PR #234
    • @desean1625 (Sean Sullivan): Add link in readme to where you can easily preview and search for icons. PR #295
    • @24anisha: Add microsoft internal telemetry PR #341
    • @danilofalcao (Danilo Falcão): list all openrouter models without category but tools support PR #208
    • @devm33 (Devraj Mehta): Remove unused fields from Completion response interface PR #123
    • @johnmog (John Mogensen): Git LFS instructions to CONTRIBUTING.md PR #156
    • @jwangxx (James Wang): Add commit_id option to ServeWebArgs for specific client version PR #255494
    • @joyceerhl (Joyce Er): fix: make chat input placeholder less cryptic PR #255601
    • @justin39 (Justin Wang): Add commit_id option to ServeWebArgs for specific client version PR #255494
    • @madskristensen (Mads Kristensen): Updated references to schemastore.org PR #254690
    • @martijnwalraven (Martijn Walraven): Fix notebook inline values when using language provider PR #254264
    • @mortalYoung (野迂迂): feat: editor.minimap.autohide support scroll PR #253868
    • @neorth (Joakim Berglund): CamelCase first word if not acronym PR #229797
    • @Ninglo (Ninglo): Fix editor.wordSegmenterLocales configuration don't take effect in simpleWidget editors (like chat or SCM input Editor) PR #223921
    • @OfekShilon (Ofek): Fix #4775: Escape user code before incorporating in a regex PR #236809
    • @omar-cs (Omar Carrizales): Issue #168531: Cursor Height PR #211473
    • @Q1CHENL (Qichen Liu 刘启辰): Fix: prevent view shift when enable minimap with right-click on the scrollbar PR #210510
    • @qirong77: Fix the unexpected console error that occurs when updating the shadow dom selection in monaco-editor PR #215780
    • @raffaeu (Raffaele Garofalo): Feature/move editor menu PR #247818
    • @RedCMD (RedCMD): fix empty end bracket error PR #240609
    • @rfon6ngy (Griffon Langyer): Allow \n to trigger a softwrap PR #231120
    • @Rishi-infy47 (Saptarshi Chakraborty): fix: changed the node js version for devcontainer PR #257400
    • @sahin52 (Sahin Kasap): fix: Quick search does not retain search term PR #234368
    • @Schpoone (Jason Kuo): Print Error literal at the start of all error messages for better parsing from the logs PR #260
    • @srilovesflutter (Sri): corrected typo PR #129
    • @trycatchkamal (Kamal Raj Sekar): Removed unused code from tests PR #207
    • @vritant24 (Vritant Bhardwaj): Add ability to specify models through config for simulation tests PR #324
    • @yamachu (Yusuke Yamada): Fix invalid settings keys PR #254609
    • @yutotnh (yutotnh): Fix the editor.wordSegmenterLocales description in the settings PR #210305

    This concludes the detailed release notes for July 2025 (version 1.103).

    Original source Report a problem
  • Jul 9, 2025
    • Parsed from source:
      Jul 9, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    June 2025 (version 1.102)

    June 2025 VS Code release brings Copilot Chat open source, MCP general availability, and wide editor and terminal enhancements. It adds customizable chat modes, on demand instructions, MCP server management, and deeper GitHub Copilot integration for a smarter dev experience.

    June 2025 (version 1.102)
    Release date: July 9, 2025
    Update 1.102.1: The update addresses these issues.
    Update 1.102.2: The update addresses these issues.
    Update 1.102.3: The update addresses these issues.
    Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap

    Welcome to the June 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:
    • Chat
    ◦ Explore and contribute to the open sourced GitHub Copilot Chat extension (Read our blog post).
    ◦ Generate custom instructions that reflect your project's conventions (Show more).
    ◦ Use custom modes to tailor chat for tasks like planning or research (Show more).
    ◦ Automatically approve selected terminal commands (Show more).
    ◦ Edit and resubmit previous chat requests (Show more).
    • MCP
    ◦ MCP support is now generally available in VS Code (Show more).
    ◦ Easily install and manage MCP servers with the MCP view and gallery (Show more).
    ◦ MCP servers as first-class resources in profiles and Settings Sync (Show more).
    • Editor experience
    ◦ Delegate tasks to Copilot coding agent and let it handle them in the background (Show more).
    ◦ Scroll the editor on middle click (Show more).

    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.

    Chat
    Copilot Chat is open source
    We're excited to announce that we've open sourced the GitHub Copilot Chat extension! The source code is now available at microsoft/vscode-copilot-chat under the MIT license.
    This marks a significant milestone in our commitment to transparency and community collaboration. By open sourcing the extension, we're enabling the community to:
    • Contribute directly to the development of AI-powered chat experiences in VS Code
    • Understand the implementation of chat modes, custom instructions, and AI integrations
    • Build upon our work to create even better AI developer tools
    • Participate in shaping the future of AI-assisted coding
    You can explore the repository to see how features like agent mode, inline chat, and MCP integration are implemented. We welcome contributions, feedback, and collaboration from the community.
    To learn more about this milestone and our broader vision for open source AI editor tooling, read our detailed blog post: Open Source AI Editor - First Milestone.

    Chat mode improvements
    Last milestone, we previewed custom chat modes. In addition to the built-in chat modes 'Ask', 'Edit' and 'Agent', you can define your own chat modes with specific instructions and a set of allowed tools that you want the LLM to follow when replying to a request.
    This milestone, we have made several improvements and bug fixes in this area.

    Configure language model
    Upon popular request, you can now also specify which language model should be used for a chat mode. Add the model metadata property to your chatmode.md file and provide the model identifier (we provide IntelliSense for the model info).

    Improved editing support
    The editor for chat modes, prompts, and instruction files now supports completions, validation, and hovers for all supported metadata properties.

    Gear menu in the chat view
    The Configure Chat action in the Chat view toolbar lets you manage custom modes as well as reusable instructions, prompts, and tool sets:
    Selecting Modes shows all currently installed custom modes and enables you to open, create new, or delete modes.

    Import modes, prompts and instructions via a vscode link
    You can now import chat mode, reusable prompt and instruction files from external links, such as a gist or our awesome-copilot community repository. For example, the following link will import the chat mode file for Burke's GPT 4.1 Beast Mode:
    Add GPT 4.1 Beast Mode to VS Code
    This will prompt for a destination, either your current workspace or your user settings, and confirm the name before importing the mode file from the URL.
    Try it out on the 100+ community-contributed instructions, prompts, and chat modes at awesome-copilot.

    Generate custom instructions
    Setting up custom instructions for your project can significantly improve AI suggestions by providing context about your coding standards and project conventions. However, creating effective instructions from scratch might be challenging.
    This milestone, we're introducing the Chat: Generate Instructions command to help you bootstrap custom instructions for your workspace. Run this command from the Command Palette or the Configure menu in the Chat view, and agent mode will analyze your codebase to generate tailored instructions that reflect your project's structure, technologies, and patterns.
    The command creates a copilot-instructions.md file in your .github folder or suggests improvements to existing instruction files. You can then review and customize the generated instructions to match your team's specific needs.
    Learn more about customizing AI responses with instructions.

    Load instruction files on demand
    Instruction files can be used to describe coding practices and project requirements. Instructions can be manually or automatically included as context to chat requests.
    There are various mechanisms supported, see the Custom Instructions section in our documentation.
    For larger instructions that you want to include conditionally, you can use .instructions.md files in combination with glob patterns defined in the applyTo header. The file is automatically added when the glob pattern matches one or more of the files in the context of the chat.
    New in this release, the large language model can load instructions on demand. Each request gets a list of all instruction files, along with glob pattern and description. In this example, the LLM has no instructions for TypeScript files explicitly added in the context. So, it looks for code style rules before creating a TypeScript file.

    Edit previous requests (Experimental)
    You can now click on previous requests to modify the text content, attached context, mode, and model. Upon submitting this change, this will remove all subsequent requests, undo any edits made, and send the new request in chat.
    There will be a controlled rollout of different entry points to editing requests, which will help us gather feedback on preferential edit and undo flows. However, users can set their preferred mode with the experimental chat.editRequests setting:
    • chat.editRequests.inline: Hover a request and select the text to begin an edit inline with the request.
    • chat.editRequests.hover: Hover a request to reveal a toolbar with a button to begin an edit inline with the request.
    • chat.editRequests.input: Hover a request to reveal a toolbar, which will start edits in the input box at the bottom of chat.

    Terminal auto approval (Experimental)
    Agent mode now has a mechanism for auto approving commands in the terminal. Here's a demo of it using the defaults:
    There are currently two settings: the allow list and the deny list. The allow list is a list of command prefixes or regular expressions that when matched allows the command to be run without explicit approval. For example, the following will allow any command starting with npm run test to be run, as well as exactly git status or git log:
    {
    "github.copilot.chat.agent.terminal.allowList": {
    "npm run test": true,
    "/^git (status|log)$/": true
    }
    }
    These settings are merged across setting scopes, such that you can have a set of user-approved commands, as well as workspace-specific approved commands.
    As for chained commands, we try to detect these cases based on the shell and require all sub-commands to be approved. So foo && bar we check that both foo and bar are allowed, only at that point will it run without approval. We also try to detect inline commands such as echo $(pwd), which would check both echo $(pwd) and pwd.
    The deny list has the same format as the allow list but will override it and force approval. For now this is mostly of use if you have a broad entry in the allow list and want to block certain commands that it may include. For example the following will allow all commands starting with npm run except if it starts with npm run danger:
    {
    "github.copilot.chat.agent.terminal.allowList": {
    "npm run": true
    },
    "github.copilot.chat.agent.terminal.denyList": {
    "npm run danger": true
    }
    }
    Thanks to the protections that we gain against prompt injection from workspace trust, the philosophy we've approached when implementing this feature with regards to security is to include a small set of innocuous commands in the allow list, and a set of particularly dangerous ones in the deny list just in case they manage to slip through. The allow list is empty by default as we're still considering what the defaults should be, but here is what we're thinking:
    • Allow list: echo, cd, ls, cat, pwd, Write-Host, Set-Location, Get-ChildItem, Get-Content, Get-Location
    • Deny list: rm, rmdir, del, kill, curl, wget, eval, chmod, chown, Remove-Item
    The two major parts we want to add to this feature are a UI entry point to more easily add new commands to the list (#253268) and an opt-in option to allow an LLM to evaluate the command(s) safety (#253267). We are also planning on both removing the github.copilot. prefix of these settings (#253314) as well as merging them together (#253472) in the next release before it becomes a preview setting.

    Terminal command simplification
    Agent mode sometimes wants to run commands with a cd statement, just in case. We now detect this case when it matches the current working directory and simplify the command that is run.

    Agent awareness of tasks and terminals
    Agent mode now understands which background terminals it has created and which tasks are actively running. The agent can read task output by using the new GetTaskOutput tool, which helps prevent running duplicate tasks and improves workspace context.

    Maximized chat view
    You can now maximize the Secondary Side Bar to span the editor area and hide the Primary Side Bar and panel area. VS Code will remember this state between restarts and will restore the Chat view when you open an editor or view.
    You can toggle in and out of the maximized state by using the new icon next to the close button, or use the new command workbench.action.toggleMaximizedAuxiliaryBar from the Command Palette.

    Agent mode badge indicator
    We now show a badge over the application icon in the dock when the window is not focused and the agent needs user confirmation to continue. The badge will disappear as soon as the related window that triggered it receives focus.
    You can enable or disable this badge via the chat.notifyWindowOnConfirmation setting.

    Start chat from the command line
    A new subcommand chat is added to the VS Code CLI that enables you to start a chat session in the current working directory with the prompt provided.
    The basic syntax is code chat [options] [prompt] and options can be any of:
    • -m --mode : The mode to use for the chat session. Available options: 'ask', 'edit', 'agent', or the identifier of a custom mode. Defaults to 'agent'
    • -a --add-file : Add files as context to the chat session
    • --maximize: Maximize the chat session view
    • -r --reuse-window: Force to use the last active window for the chat session
    • -n --new-window: Force to open an empty window for the chat session
    Reading from stdin is supported, provided you pass in - at the end, for example ps aux | grep code | code chat -

    Fetch tool supports non-HTTP URLs
    We've seen that, on occasion, models want to call the Fetch tool with non-HTTP URLs, such as file:// URLs. Rather than disallowing this, the Fetch tool now supports these URLs and returns the content of the file or resource at the URL. Images are also supported.

    Clearer language model access management
    We've reworked the UX around managing extension access to language models provided by extensions. Previously, you saw an item in the Account menu that said AccountName (GitHub Copilot Chat), which had nothing to do with what account GitHub Copilot Chat was using. Rather, it allowed you to manage which extensions had access to the language models provided by Copilot Chat.
    To make this clearer, we've removed the AccountName (GitHub Copilot Chat) item and replaced it with a new item called Manage Language Model Access.... This item opens a Quick Pick that enables you to manage which extensions have access to the language models provided by GitHub Copilot Chat.
    We think this is clearer... That said, in a future release we will explore more granular access control for language models (for example, only allowing specific models rather than all models provided by an extension), so stay tuned for that.

    Reading chat requests
    Since the chat extension itself is open source, you now get access to one of the debugging tools that we've been using internally for awhile. To easily see the details of all requests made by Copilot Chat, run the command "Show Chat Debug View". This will show a treeview with an entry for each request made. You can see the full prompt that was sent to the model, the tools that were enabled, the response, and other key details. You can save the request log with right click > "Export As...".
    The view also has entries for tool calls on their own, and a prompt-tsx debug view that opens in the Simple Browser.
    🚨 Note: This log is very helpful in troubleshooting issues, and we will appreciate if you share it when filing an issue about the agent's behavior. But, this log may contain personal information such as the contents of your files or terminal output. Please review the contents carefully before sharing it with anyone else.

    Edit Tool Improvements
    This release includes several changes to the predictability and reliability of the edit tools used for GPT-4 models and Sonnet models. You should see more reliable editing behavior in this release and we will continue to improve these tools in future releases.

    MCP
    MCP support in VS Code is generally available
    We've have been working on expanding MCP support in VS Code for the past few months, and support the full range of MCP features in the specification. As of this release, MCP support is now generally available in VS Code!
    In addition, organizations can now control the availability of MCP servers with a GitHub Copilot policy. Learn more about Managing policies and features for Copilot in your enterprise in the GitHub Copilot documentation.
    You can get started by installing some of the popular MCP servers from our curated list. Learn more about using MCP servers in VS Code and how you can use them to extend agent mode.
    If you want to build your own MCP server, check our MCP developer guide for more details about how to take advantage of the MCP capabilities in VS Code.

    Support for elicitations
    The latest MCP specification added support for Elicitations as a way for MCP servers to request input from MCP clients. The latest version of VS Code adopts this specification and includes support for elicitations.

    MCP server discovery and installation
    The new MCP Servers section in the Extensions view includes welcome content that links directly to the popular MCP servers from our curated list. Visit the website to explore available MCP servers and select Install on any MCP server. This automatically launches VS Code and opens the MCP server editor that displays the server's readme and manifest information. You can review the server details and select Install to add the server to your VS Code instance.
    Once installed, MCP servers automatically appear in your Extensions view under the MCP SERVERS - INSTALLED section, and their tools become available in the Chat view's tools Quick Pick. This makes it easy to verify that your MCP server is working correctly and access its capabilities immediately.

    MCP server management view
    The new MCP SERVERS - INSTALLED view in the Extensions view makes it easy to monitor, configure, and control your installed MCP servers.
    The view lists the installed MCP servers and provides several management actions through the context menu:
    • Start Server / Stop Server / Restart Server: Control the server's running state
    • Disconnect Account: Remove account access from the server
    • Show Output: View the server's output logs for troubleshooting
    • Show Configuration: Open the server's runtime configuration
    • Configure Model Access: Manage which language models the server can access
    • Show Sampling Requests: View sampling requests for debugging
    • Browse Resources: Explore resources provided by the server
    • Uninstall: Remove the server from your VS Code instance
    When you select an installed MCP server, VS Code opens the MCP server editor displaying the server's readme details, manifest, and its runtime configuration. This provides an overview of the server's capabilities and current settings, making it easy to understand what the server does and how it's configured.
    The MCP SERVERS - INSTALLED view also provides a Browse MCP Servers... action that takes you directly to the community website, making server discovery always accessible from within VS Code.

    MCP servers as first class resources
    MCP servers are now treated as first-class resources in VS Code, similar to user tasks and other profile-specific configurations. This represents a significant architectural improvement from the previous approach where MCP servers were stored in user settings. This change makes MCP server management more robust and provides better separation of concerns between your general VS Code settings and your MCP server configurations. When you install or configure MCP servers, they're automatically stored in the appropriate profile-specific location to ensure that your main settings file stays clean and focused.
    • Dedicated storage: MCP servers are now stored in a dedicated mcp.json file within each profile, rather than cluttering your user settings file
    • Profile-specific: Each VS Code profile maintains its own set of MCP servers, enabling you to have different server configurations for different workflows or projects
    • Settings Sync integration: MCP servers sync seamlessly across your devices through Settings Sync, with granular control over what gets synchronized

    MCP migration support
    With MCP servers being first-class resources and the associated change to their configuration, VS Code provides comprehensive migration support for users upgrading from the previous MCP server configuration format:
    • Automatic detection: Existing MCP servers in settings.json are automatically detected and migrated to the new profile-specific mcp.json format
    • Real-time migration: When you add MCP servers to user settings, VS Code immediately migrates them with a helpful notification explaining the change
    • Cross-platform support: Migration works seamlessly across all development scenarios including local, remote, WSL, and Codespaces environments
    This migration ensures that your existing MCP server configurations continue to work without any manual intervention while providing the enhanced management capabilities of the new architecture.

    Dev Container support for MCP configuration
    The Dev Container configuration devcontainer.json and the Dev Container Feature configuration devcontainer-feature.json support MCP server configurations at the path customizations.vscode.mcp. When a Dev Container is created the collected MCP server configurations are written to the remote MCP configuration file mcp.json.
    Sample devcontainer.json configuring the Playwright MCP server:
    {
    "image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
    "customizations": {
    "vscode": {
    "mcp": {
    "servers": {
    "playwright": {
    "command": "npx",
    "args": [
    "@playwright/mcp@latest"
    ]
    }
    }
    }
    }
    }
    }

    Commands to access MCP resources
    To make working with MCP servers more accessible, we've added commands to help you manage and access your MCP configuration files:
    • MCP: Open User Configuration - Direct access to your user-level mcp.json file
    • MCP: Open Remote User Configuration - Direct access to your remote user-level mcp.json file
    These commands provide quick access to your MCP configuration files, making it easy to view and manage your server configurations directly.

    Quick management of MCP authentication
    You are now able to sign out or disconnect accounts from the MCP gear menu and quick picks.
    • MCP view gear menu: Disconnect Account action shown in MCP view gear menu.
    • MCP editor gear menu: Disconnect Account action shown in MCP editor gear menu.
    • MCP quick pick: Disconnect Account action shown in MCP quick pick menu.
    The Disconnect action is shown when the account is used by either other MCP servers or extensions, while Sign Out is shown when the account is only used by the MCP server. The sign out action completely removes the account from VS Code, while disconnect only removes access to the account from the MCP server.

    Accessibility
    Keep all edits from within the editor
    Formerly, to accept all edits, focus would need to be in the Chat view. Now, with focus in the editor, you can run the command Keep All Edits (Ctrl+Alt+Y).

    User action required sound
    We’ve fine-tuned the accessibility signal to indicate when chat requires user action and set the default value to auto, so screen reader users will hear this signal. You can configure this behavior with the accessibility.signals.chatUserActionRequired setting.

    Alert when rendering errors occur in chat
    Previously, screen reader users were not alerted when a chat rendering error occurred. Users are now alerted with this information and can also focus it via keyboard.

    Code Editing
    Scroll on middle click
    Setting: editor.scrollOnMiddleClick
    Scroll the editor by simply clicking, or holding down your middle mouse button (the scroll wheel) and moving around.
    Once activated, the cursor changes to a panning icon and moving the mouse up or down then smoothly scrolls the editor in that direction. The scrolling speed is determined by how far you move the mouse from the initial click point. Release the middle mouse button or click it again to stop scrolling and return to the standard cursor.
    Known Conflicts
    Enabling this feature might interfere with other actions tied to the middle mouse button. For example, if you have column selection (editor.columnSelection) enabled, holding down the middle mouse button selects text. Similarly, on Linux, selection clipboard (editor.selectionClipboard) pastes content from your clipboard when the middle mouse button is clicked.
    To avoid these conflicts, please enable only one of these settings at a time.

    Snooze code completions
    You can now temporarily pause inline suggestions and next edit suggestions (NES) by using the new Snooze feature. This is helpful when you want to focus without distraction from suggestions.
    To snooze suggestions, select the Copilot dashboard in the Status Bar, or run the Snooze Inline Suggestions command from the Command Palette and select a duration from the dropdown menu. During the snooze period, no inline suggestions or NES will appear.
    You can also assign a custom keybinding to quickly snooze suggestions for a specific duration by passing the desired duration as an argument to the command. For example:
    {
    "key": "...",
    "command": "editor.action.inlineSuggest.snooze",
    "args": 10
    }

    Editor Experience
    Windows accent color
    Setting: window.border
    VS Code on Windows now supports using the accent color as the window frame border if that is enabled in Windows settings ("Show accent color on title bars and window borders").
    The new window.border setting enables you to control the color of the window border. Use default to use the Windows accent color, off to disable the border, or provide a specific color value to use a custom color.
    Note: the border is only visible when the related Windows setting is enabled. It can not yet be set per workspace, but we are working on that support.

    Settings search suggestions (Preview)
    Setting: workbench.settings.showAISearchToggle
    This milestone, we modified the sparkle toggle in the Settings editor, so that it acts as a toggle between the AI and non-AI search results. The AI settings search results are semantically similar results instead of results that are based on string matching. For example, editor.fontSize appears as an AI settings search result when you search for "increase text size".
    The toggle is enabled only when there are AI results available. We welcome feedback on when the AI settings search did not find an expected setting, and we plan to enable the setting by default over the next iteration.

    Tasks
    Rerun all running tasks
    You can now quickly rerun all currently running tasks with the new Tasks: Rerun All Running Tasks command. This is useful for workflows that involve multiple concurrent tasks, allowing you to restart them all at once without stopping and rerunning each individually.

    Restart task reloads updated tasks.json
    The Restart Task command now reloads your tasks.json before restarting, ensuring that any recent changes are respected. Previously, task configuration changes were not picked up when restarting a task, which could lead to confusion or outdated task behavior.

    Terminal
    Terminal Suggest (Preview)
    We've made significant improvements to the terminal suggest feature.

    Selection mode
    A new setting, terminal.integrated.suggest.selectionMode, helps you understand that by default, Tab (not Enter) accepts suggestions. You can choose between partial, always, and never modes to control how suggestions are selected and accepted.
    The default value is partial, which means that Tab accepts the suggestion until navigation has occurred.

    Learn more
    The Learn More action (kb(workbench.action.terminal.suggestLearnMore)) in the terminal suggest control's status bar is now highlighted for the first 10 times or if the control is shown for 10 seconds. This helps you discover how to configure, disable, and read about the suggest control.

    Multi-command support
    Terminal suggest now supports multi-command lines. You can link commands with ;, &&, and other shell operators, and receive suggestions for all commands on the line.

    Symlink information
    We now display a symlink's realpath in the suggest details control and have unique icons for symlink files and folders to help distinguish them from other suggestions.

    Improved sorting
    We've improved sorting in many ways to give you the most relevant suggestions first. For example, giving main and master priority over other branches.

    Git bash improvements
    We now properly support Git Bash path completions for folders and files. Additionally, we source the built-in commands and present them as suggestions.

    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.
    Deeper integration has been made between the GitHub Pull Requests extension and Copilot coding agent, allowing you to begin, view, and manage coding agent sessions directly from VS Code.
    These features require that your workspace is open to a repository that has the Copilot coding agent enabled.
    Review the changelog for the 0.114.0 release of the extension to learn about everything in the release.

    Start a coding agent session (Preview)
    Ask Copilot to continue a local change in the background by invoking the #copilotCodingAgent tool in chat.
    This tool automatically pushes pending changes to a remote branch and initiates a coding agent session from that branch along with the user's instruction.
    Experimental: Deeper UI integration can be enabled with the githubPullRequests.codingAgent.uiIntegration setting. Once enabled, a new Delegate to coding agent button appears in the Chat view for repositories that have the agent enabled.

    Status tracking
    We have made improvements to notify and prominently display the status of coding agent pull requests in the Copilot on my behalf query. A numeric badge now indicates new changes.

    Session log
    You can now view the session log of a coding agent session directly in VS Code. This enables you to see the history of actions taken by the coding agent, including code changes and tool usage.

    Enhancements on #activePullRequest tool
    The #activePullRequest tool returns information about the pull request, such as its title, description, and status for use in chat, and now you can also use it to get the coding agent session information.
    This tool is automatically attached to chat when opening a pull request created through the coding agent experience, so you can maintain the context and keep working on the pull request if needed to.

    Python
    Python Environments extension improvements
    The Python Environments extension received several improvements this release:
    • We've polished terminal activation support for Poetry versions greater than 2.0.0
    • You can now use the Quick Create environment creation option to set up multiple virtual environments which are uniquely named within the same workspace
    • The generated .venv folders are now git-ignored by default
    • We've improved the environment deletion process

    Python Environments included as part of the Python extension
    We're starting to roll-out the Python Environments extension as an optional dependency with the Python extension. What this means is that you might now begin to see the Python Environments extension automatically installed alongside the Python extension, similar to the Python Debugger and Pylance extensions. This controlled roll-out allows us to gather early feedback and ensure reliability before general availability.
    The Python Environments extension includes all the core capabilities we've introduced so far including: one-click environment setup using Quick Create, automatic terminal activation (via "python-envs.terminal.autoActivationType" setting), and all supported UI for environment and package management.
    To use the Python Environments extension during the roll-out, make sure the extension is installed and add the following to your VS Code settings.json file:
    "python.useEnvironmentsExtension": true

    Disabled PyREPL for Python 3.13
    We have disabled PyREPL for Python 3.13 and above to address indentation and cursor issues in the interactive terminal. For more details, see Disable PyREPL for >= 3.13.

    Pylance MCP tools (Experimental)
    The Pylance extension now includes several experimental MCP tools, which offer access to Pylance's documentation, import analysis, environment management, and more. These tools are currently available in the Pylance prerelease version and are still early in development. While they offer new capabilities, we know it can be challenging to call them directly today. We are actively working to make these tools easier to use and more valuable in future updates. Your feedback in the pylance-release repository is welcome as we continue to improve the experience.

    GitHub authentication
    Revamped GitHub sign-in flow
    This iteration, we have revamped the GitHub sign-in flow by defaulting to a loopback URL flow, rather than a flow that uses a vscode:// protocol URL. This change is to improve the reliability of the sign-in flow and to ensure that it works across all platforms, including those that do not support custom URL schemes.
    When you sign in with GitHub, you are now redirected to a loopback URL that looks like http://localhost:PORT/. This allows the sign-in flow to complete successfully without relying on custom URL schemes. That said, once you land on the loopback URL, you are still redirected to a vscode:// URL to return to VS Code, however this doesn't need to resolve for the sign-in flow to complete successfully.
    In other words, we get the best of both worlds: a reliable sign-in flow that works across all platforms and a return to VS Code that uses the vscode:// URL scheme.
    While we were at it, we also gave this landing page a fresh coat of paint. In future iterations, we'll apply this new design to other sign-in experiences.

    Extension Authoring
    Allow opening files when using vscode.openFolder command
    Extensions that call the vscode.openFolder command can now pass filesToOpen?: UriComponents[] as options to select files to open in the workspace window that opens.
    Example:
    vscode.commands.executeCommand('vscode.openFolder', , { filesToOpen: [ /* files to open */ ]});

    Proposed APIs

    Engineering
    CSS minification using esbuild
    VS Code has been using esbuild for bundling and minifying the JavaScript sources for a long time. We now also use esbuild to bundle and minify our CSS files.

    Strict layer checks using tsconfig.json
    We now use multiple tsconfig.json files to ensure our source code adheres to our target environment rules. Our CI runs npm run valid-layers-check and will fail the build if for example a type was added into a browser layer that only exists in the node runtime.

    vscode-bisect for sanity testing
    The vscode-bisect project has been around for a long time allowing to find regressions in VS Code builds (what git bisect does for git). We added a new --sanity option that allows us to quickly go through our sanity check that is mandatory before we release a new build.

    Notable fixes
    • vscode-copilot-release#6073 - Agent should not suggest && in Windows PowerShell

    Thank you
    Last but certainly not least, a big Thank You to the contributors of VS Code.

    Issue tracking
    Contributions to our issue tracking:
    • @albertosantini (Alberto Santini)
    • @gjsjohnmurray (John Murray)
    • @RedCMD (RedCMD)
    • @IllusionMH (Andrii Dieiev)
    • @tamuratak (Takashi Tamura)

    Pull requests
    Contributions to vscode:
    • @a-stewart (Anthony Stewart): Fix typing in asyncDataTree.test.ts PR #209394
    • @charles7668 (charles): Fix #215925 PR #219321
    • @chengluyu (Luyu Cheng): Apply font-variation-settings to the suggestion widget (fix #199954) PR #200000
    • @DrSergei: Improve debug adapter capabilities checking PR #250779
    • @emmanuel-ferdman (Emmanuel Ferdman): Fix launch.json reference PR #250187
    • @Enzo-Nunes (Enzo Nunes): Fix line comment action for makefiles (Fixes #234464) PR #243283
    • @Gallaecio (Adrián Chaves): Fix typo (an language model call → a language model call) PR #252202
    • @ghLcd9dG (Liu): Update copyFiles.ts PR #250773
    • @heoh (HeoHeo): Fix markdown preview scroll crawls at EOF (fix #249278) PR #251228
    • @hyrious (hyrious): fix: missing translations of remote built-in extensions PR #249430
    • @jeanp413 (Jean Pierre):
    ◦ Do not check for navigator to detect web environment in built-in extensions PR #251688
    ◦ Fix "Assertion Failed: Argument is undefined or null" when renaming custom editor PR #252071
    • @JJJJJJ-git: Fixing ChatService undo bug PR #253478
    • @liuxingbaoyu: fix: PowerShell not working with username having Unicode PR #251534
    • @matthew-godin: fix patternIndices typo PR #250085
    • @mohiuddin-khan-shiam (S. M. Mohiuddin Khan Shiam): Fix incorrect SHA-1 commit regex in version_manager.rs PR #251329
    • @notoriousmango (Seong Min Park):
    ◦ feat: add font ligatures to webview theme PR #250998
    ◦ feat: add rerun and debug actions for failed tests from last run PR #251679
    • @raffaeu (Raffaele Garofalo): Refactoring editor sticky scroll PR #248131
    • @RedCMD (RedCMD):
    ◦ Disable installation folder banner warning when debugging extensions PR #244305
    ◦ TypeScript restrict Comment onEnterRules inside comment body PR #251692
    • @ssigwart (Stephen Sigwart): Update indentation for PHP, JS, and TS PR #251465
    • @Sublimeful (Jian Qiang Wu): Implements Terminal: Run Recent Command when there are no terminals PR #250799
    • @tmm1 (Aman Karmani): [engineering] remove dead references to Swc transpile PR #252375
    • @UziTech (Tony Brix): feat: add middle mouse button scrolling PR #245882
    • @yiliang114 (易良): Fix #250737, Match count result overflow in Notebook findWidget PR #250738

    Contributions to vscode-copilot-chat:
    • @caohy1988 (Hai-Yuan Cao): update the summary prompt for agent mode PR #13
    • @CharlesCNorton: Update README.md PR #54
    • @gmacario (Gianpaolo Macario): docs(CONTRIBUTING): sync Table of Contents PR #79
    • @moonboxing (ASSEMAR MOHAMED): update devcontainer-lock after pylint removal PR #76

    Contributions to vscode-json-languageservice:
    • @aedenmurray (Aeden Murray): feat: Notify Invalid RegExp Patterns PR #261

    Contributions to vscode-pull-request-github:
    • @dyhagho (Dyhagho Briceño): fix: Allow Github.com auth when github-enterprise.uri is set PR #7002

    Contributions to vscode-ripgrep:
    • @benz0li (Olivier Benz): Add linux riscv64 target PR #73
    • @Vector341: Fix invalid download crash install PR #66

    Contributions to vscode-test:
    • @coliff (Christian Oliff): Update .npmignore PR #312

    Contributions to language-server-protocol:
    • @billybonks (Sebastien Stettler): fix: improve readability of comment, PR #2155
    • @rcjsuen (Remy Suen): Add the Docker Language Server to the list PR #2153
    • @yangdanny97 (Danny Yang): Add Pyrefly to language servers list PR #2160

    Contributions to monaco-editor:
    • @Ho1yShif (Shifra Williams): Add snowflake sql keywords PR #4915

    Contributions to ripgrep-prebuilt:
    • @kxxt (Levi Zim):
    ◦ Build binaries for riscv64 PR #41
    ◦ Publish binary for riscv64 linux PR #51

    Original source Report a problem
  • Jun 12, 2025
    • Parsed from source:
      Jun 12, 2025
    • Detected by Releasebot:
      Jan 7, 2026

    Visual Studio Code by Microsoft

    May 2025 (version 1.101)

    May 2025 VS Code release brings a wave of updates including security fixes for ms-python.python, expanded MCP and chat tool sets, source control enhancements and broader extension authoring support. Installers across Windows, Mac, Linux available now.

    May 2025 (version 1.101)

    Release date: June 12, 2025

    Security update: The following extension has security updates: ms-python.python.

    Update 1.101.1: The update addresses these issues.
    Update 1.101.2: The update addresses these issues.

    Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap

    Welcome to the May 2025 release of Visual Studio Code. There are many updates in this version that we hope you'll like, some of the key highlights include:

    • MCP

      • Expand your agent coding flow with support for prompts, resources, and sampling (Show more).
      • Access MCP servers that require authentication (Show more).
      • Debug MCP servers with development mode (Show more).
      • Publish MCP servers from an extension (Show more).
    • Chat

      • Group and manage related tools by combining them in a tool set (Show more).
    • Source Control

      • View files in Source Control Graph view (Show more).
      • Assign and track work for GitHub Copilot Coding Agent from within VS Code (Show more).

    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.

    [Sections and detailed features follow, including Chat tool sets, MCP support for prompts, resources, sampling (Experimental), auth, development mode, Chat UX improvements, Apply edits more efficiently, Implicit context, Fix task configuration errors, Custom chat modes (Preview), Task diagnostic awareness, Terminal cwd context, Floating window improvements, Fetch tool confirmation, Customize more built-in tools, Send elements to chat (Experimental), Accessibility improvements, Editor Experience, NES import suggestions and acceptance flow, Notebooks features, Source Control enhancements, Tasks instance policy, Terminal language server based terminal suggest, Remote Development updates, Contributions to extensions, Extension Authoring, Proposed APIs, Engineering updates including Electron 35 update, Notable fixes, and Thank You to contributors.]

    This release includes numerous improvements and new features across many areas of Visual Studio Code, focusing on enhancing the coding experience, agent workflows, chat capabilities, source control integration, and extension development.

    Original source Report a problem

Related products