Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
We're excited to announce the availability of the Visual Studio 2026 August update. This release marks the beginning of a new era for Visual Studio with deep platform integration of AI, stronger fundamentals, and improved performance.
Download Visual Studio 2026 to enjoy these new features and improvements.
Version 18.9.1
Released on August 18, 2026
| Top bug fixes | From the community |
|---|---|
| Copilot Command preview dialog is not scrollable, blocking allow or deny actions | Feedback Ticket |
| Fix to Test Agent in 18.9.0 |
August Update 18.9.0
Released on August 11, 2026
GitHub Copilot
Adjust model thinking effort to match your task
Choose low, medium, or high thinking effort for supported models to balance response quality and token usage.
You can now control how much a model reasons through a problem. Visual Studio 18.9 adds thinking effort controls for supported models, so you can choose low, medium, or high effort based on your task and token budget.
How thinking effort works
Some Copilot models now support adjustable thinking levels:
- Low - Gives quick responses with minimal reasoning. Best for straightforward questions and code suggestions. Uses fewer tokens.
- Medium - Balances reasoning depth and response speed. Best for everyday coding tasks.
- High - Uses deeper reasoning for complex problems. Best for tricky algorithms, architecture decisions, and hard-to-debug issues. Uses more tokens.
You can adjust thinking effort from the Model picker or the expanded Model management view. Lower levels help you stay within your token budget while still getting useful support for each task.
![]()
Review changes and commits with the Git agent
Catch issues before the pull request.
You don't have to wait for a pull request to get a second set of eyes on your code. Ask the Git agent to review your changes or commits as you work.
Review uncommitted changes
Switch to the Git agent in Copilot Chat and ask it to review your changes. The agent looks at your uncommitted work and surfaces comments inline in the editor. The Git Changes view gives you a navigable list so you can jump to each comment quickly.
You can also select the Copilot review icon in the Git Changes window to start a review.
Review a commit
Attach a commit as context in Copilot Chat and ask the Git agent to review it. Review comments appear inline on the changed files in a commit-specific view, separate from your working files.
You can also kick off a commit review directly from the Git Changes infobar after committing, or from any commit in the Git Repository window.
When you start a review through Copilot Chat, keep the conversation going to dig into findings, get explanations, or work on suggested fixes. Reviews work with both GitHub and Azure DevOps repositories and use the GitHub Copilot code review service.
Organization-level custom agents
GitHub organization owners can now add custom agents across their organization.
Note: This feature requires a GitHub organization.
You can now share custom agents across repositories in your organization. GitHub organization and enterprise owners can add custom agents that everyone in the organization can use. This helps your team stay consistent and keeps Copilot aligned with your organization's workflow.
If you're an administrator, see Preparing to use custom agents in your organization or Preparing to use custom agents in your enterprise.
When you work in repositories in your organization, Visual Studio automatically detects org-level custom agents and shows them in the agent picker. Hover over an agent to see its description and organization source. Click the definition button to open the agent definition file.
Set up org-level custom agents to support your team's workflow.
Access your Copilot usage
Jump to your Copilot plan usage from the context window or the badge menu, whichever works best for you.
Track your Copilot plan usage without leaving your workflow. In Visual Studio 18.9, you can check your plan usage directly from the context window.
Click the donut chart in the upper-right corner of the prompt box to view your context window usage, then click the button to open your full plan usage details.
We've also refined the usage window and notifications so they're clearer and easier to act on. You'll know when you're approaching your limit and what options you have to continue.
Better model control
Pin your favorite models, collapse the rest, and access a comprehensive management view with full model details and customization options.
Finding and managing models is easier in Visual Studio 18.9. The redesigned model picker and new management view give you clearer control over your Copilot models.
Improved model picker - The picker is faster to scan and easier to use. Pin your favorite models to keep them at the top, and collapse models you rarely use to reduce clutter. You can focus on the models that matter most.
Model management view - Select Manage models in the picker to open an expanded view with full details and controls.
- View cost information, capabilities, and context window sizes for each model.
- Manage your custom models and Copilot models in one place.
![]()
Git tooling
Multi-file summary diff 📣
View file changes in a unified diff for fast comprehension.
The multi-file summary diff shows all changed lines from several files in one unified view, so you can quickly understand the scope of a commit or pull request without jumping between files.
You'll find the Open changes summary button in several places:
- Git Changes
- Commit details in Git → View Branch History
- Pull requests in the View → Git Repository window
The pull requests list is currently available only in Visual Studio Insiders with the preview feature View pull requests for a Git repository.
📣 See feature ticket to share your feedback and continue the conversation.
Git submodule support 📣
Manage Git submodules directly in Visual Studio with integrated add, update, delete, and navigation support.
One of the most requested Git features, first-class submodule support is now available in Visual Studio 18.9, so you can manage submodules without leaving the IDE.
Submodules are fully integrated into the Git experience. You now get:
- A dedicated Submodules section in the Git Repository window.
- Better visibility in Git Changes.
- A branch and repository picker that shows the parent-child repository hierarchy.
From the Submodules section, you can add, update, and remove submodules. Visual Studio also discovers and activates submodules automatically when you open a solution or folder, and keeps them out of the general local repositories list to reduce clutter.
Submodules are read-only by default. If you want to work inside a submodule instead of only consuming it, go to Tools → Options → Source Control → Git, find Automatically activate multiple repositories, and select Yes, include submodules.
This is the first milestone in an evolving experience, and more improvements are planned for future releases.
📣 See feature ticket to share your feedback and continue the conversation.
Worktrees: work on multiple branches at once 📣
Create, open, and manage Git worktrees to work on multiple branches simultaneously without stashing or re-cloning.
If you've ever stashed half-finished work just to check another branch, worktrees let you skip that step. Each worktree is a separate working directory for the same repo, so your in-progress work stays untouched while you work elsewhere.
In the Git Repository window, right-click any branch and select New Worktree from to create a worktree. You can start from a new branch or use the selected branch. You can also create a worktree from any commit in the history graph. Open it in your current window or in a new Visual Studio instance to work on both branches side by side.
Worktrees appear inline with your branches. You can switch between them from the branch list, branch picker, or repo picker. When you're done, right-click the worktree and select Delete Worktree to clean up.
📣 See feature ticket to share your feedback and continue the conversation.
Review commits with Copilot
Get a private Copilot code review on your commits.
Copilot code review already gives you feedback on uncommitted changes. Now you can run the same review on committed changes.
Right-click any commit in the Git Repository window and select Review Commit to review that commit. Select two commits to review everything that changed between them.
You can also reference a commit in Copilot Chat and ask the Git agent to review it.
Copilot's review comments appear inline in the changed files. A single commit opens in the Commit Details window. A two-commit range opens in the Compare Commits view. Select any comment to jump directly to that code.
Reviews stay local to your Visual Studio session and work with both GitHub and Azure DevOps repositories.
To enable this feature, go to Tools → Options → GitHub → Copilot → Source Control Integration and turn on Review Git changes locally and provide suggestions from comments.
Compare a file to your working tree 📣
Compare an earlier version of a file with your current local changes.
Want to see how a file changed since an earlier commit? You can now compare any file version with your current working tree.
In Solution Explorer, right-click the file and select Git → View History. Then, in the file history, right-click a commit and select Compare with Working Tree.
Visual Studio opens a diff with the commit version on the left and your working tree version on the right. You can review all changes since that commit, including committed and uncommitted edits.
📣 See feature ticket to share your feedback and continue the conversation.
PR review updates - autocomplete and timeline 📣
Set a pull request to complete automatically and see its update history in Visual Studio.
We're continuing to improve the pull request experience in Visual Studio.
- Autocomplete / Auto-merge: Set a pull request to complete automatically after it meets required approvals and policy checks.
- Update timeline: View a pull request history of pushes, votes, and other events on the Overview tab.
These updates work with GitHub and Azure DevOps repositories.
📣 See feature ticket to share your feedback and continue the conversation.
| Top bug fixes | From the community |
|---|---|
| TypeScript 7.0 fixes in VS. This update resolves previously reported issues with IntelliSense and auto imports, Quick Fix availability, navigation and code search, hover tooltips, Task List results, Vue diagnostics, and Expand Selection. Compile on Save remains a known issue when the Native Language Service is enabled. | |
| Solution Explorer right-click on selected item in a C++ solution does not open context menu | Feedback ticket |
Version 18.8.3
Released on August 11, 2026.
| Security advisories addressed | CVE | Description |
|---|---|---|
| .NET Information Disclosure Vulnerability | CVE-2026-62898 | Use after free in Microsoft QUIC allows an unauthorized attacker to disclose information over a network. |
| .NET Security Feature Bypass Vulnerability | CVE-2026-62899 | Inconsistent interpretation of HTTP requests ('HTTP request/response smuggling') in .NET allows an unauthorized attacker to bypass a security feature over a network. |
| .NET Information Disclosure Vulnerability | CVE-2026-62900 | Improper removal of sensitive information before storage or transfer in .NET allows an unauthorized attacker to disclose information over a network. |
| .NET Denial of Service Vulnerability | CVE-2026-62901 | Uncontrolled resource consumption in .NET allows an unauthorized attacker to deny service over a network. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-62886 | Integer overflow or wraparound in .NET allows an unauthorized attacker to elevate privileges locally. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-62871 | Out-of-bounds write in .NET allows an unauthorized attacker to elevate privileges locally. |
| .NET Core Remote Code Execution Vulnerability | CVE-2026-70354 | An out-of-bounds heap write exists in WindowsDesktop.App DirectWriteForwarder.dll when XpsDocumentWriter.Write(String) encounters a 16-bit iterator wrap. |
| .NET Information Disclosure Vulnerability | CVE-2026-62902 | Inclusion of functionality from an untrusted control sphere in .NET allows an unauthorized attacker to disclose information over a network. |
| .NET Remote Code Execution Vulnerability | CVE-2026-62897 | Integer overflow or wraparound in .NET Framework allows an unauthorized attacker to execute code locally. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-62909 | Improper handling of exceptional conditions in .NET allows an authorized attacker to elevate privileges locally. |
| Git for Windows Vulnerability | CVE-2026-62960 | This security update updates Git for Windows and MinGit to address CVE-2026-62960. |
Future removal of Git for Windows Individual Component on Windows 8.1
Git for Windows is ending support for Windows 8.1, so the Git for Windows Individual Component will no longer be available through the Visual Studio Installer on Windows 8.1.
This change affects only the optional, system-wide Git installation. Git functionality built into Visual Studio is not affected. If you rely on this component, upgrade to a supported version of Windows to continue receiving current Git updates and security fixes.
Version 18.8.2
Released on July 28, 2026.
| Top bug fixes | From the community |
|---|---|
| Extension update is failing to uninstall the old version, leading to VS loading both copies | Feedback ticket |
Version 18.8.1
Released on July 22, 2026.
| Top bug fixes | From the community |
|---|---|
| ASP.NET .NET Framework 4.8 scaffolding no longer offers views/controllers | Feedback ticket |
July Update 18.8.0
Released on July 14, 2026.
GitHub Copilot
Built-in .NET and Azure skills
Discover built-in .NET and Azure skills in Visual Studio to customize your agentic workflow.
Visual Studio now includes built-in skills, created by experts from the .NET and Azure teams, to help you better customize your agentic workflow and complete development tasks more efficiently. These skills are available when the corresponding .NET and Azure workloads are installed.
You can find the skills in the Built-in category in the tool picker. Hover over each skill to see its description and path, and use the three-dot menu to open the full skill or open its folder location.
Built-in skills are currently off by default, so you can review and enable only the ones that suit your tasks. This gives you a controlled way to bring in guided, domain-specific help directly where you work. You can also learn more about the .NET skills and Azure skills via the links.
Copilot usage tracking and alerts
Stay informed about your Copilot usage with real-time tracking and alerts when approaching limits.
GitHub Copilot recently transitioned to usage-based billing, so your Copilot usage is now calculated based on token consumption rather than by request (learn more from GitHub's blog).
To help you make the most of your usage in Visual Studio, we're continuously improving the product to help you optimize and track your Copilot usage. As part of this ongoing work, we've refreshed the Copilot Usage window and added proactive alerts as you approach your limits.
What's new
The updated Copilot Usage window in Visual Studio gives you a clearer view of your current usage based on the new billing model, making it easier to track how much you're using Copilot throughout your development workflow. You'll see real-time updates on your usage metrics, helping you understand your patterns and plan accordingly.
Access the usage window anytime from the Copilot badge menu → Copilot Usage.
Visual Studio also alerts you about your usage proactively, giving you time to adjust your usage before hitting any limits.
You'll see alerts when:
- You're approaching your usage limit
- You've reached your usage limit
- You have additional usage (also called overages) activated after reaching your usage limit
You can customize when the approaching usage alert appears by adjusting your quota warning threshold percentage in your settings, giving you control over how early you want to be notified.
More to come
This is just the start. We're continuously improving Visual Studio to help you optimize your Copilot usage and give you better visibility into how you're using it. Expect more updates across the product in the coming releases.
Share your feedback
We'd love to hear your thoughts on how we can help you better navigate your Copilot usage. Share your feedback and suggestions on Developer Community.
Try the new Agent (Preview)
Switch to a smarter, less chatty Copilot agent.
Copilot Chat in Visual Studio has a new Agent (Preview) option in the agent picker, built on the same GitHub Copilot SDK that powers the GitHub Copilot CLI. The agent gets more tasks right the first time, with less back-and-forth to keep it on track. Responses are also shorter and easier to scan.
How to try it
- Open GitHub Copilot Chat
- Click the agent picker at the bottom of the window
- Select Agent (Preview)
Use it on the work you already do in Visual Studio: feature changes, bug fixes, refactors, and all your other day-to-day tasks.
This feature is still in preview, and we'd love your feedback. Send it through Help → Send Feedback → Report a Problem.
Review selected code with Copilot
Get targeted code review feedback from Copilot on any code you select.
Sometimes you don't need a full code review, just a second opinion on a specific block of code. Select code in the editor, right-click, and choose Copilot Actions → Review Selection.
Copilot leaves inline comments on your selection that you can review and act on. Use the sparkle icon on any comment to apply a code suggestion or, if there isn't one, have Copilot generate one for you.
This is powered by GitHub Copilot code review, the same experience you get when reviewing your changes in the Git Changes window before committing.
Organization-level custom instructions
Organization owners can now add custom instructions to tailor Copilot's responses across the entire organization.
Note: This feature requires the repository to belong to a GitHub organization.
GitHub organization owners can now add custom instructions for Copilot to tailor responses to specific needs and preferences across the entire organization. This is especially helpful for teams who want to set up ground rules for using Copilot or have common instructions that everyone in the team can benefit from. For organization administrators who want to set up these instructions, see add organization custom instructions. Note that custom instructions are intended for setting preferences and are not suitable for enforcing policies.
When you're working on repositories that belong to your organization, organization-level custom instructions are automatically applied. You can see these instructions in the reference list during your Copilot interactions and you can click on the link to view the full instructions.
If you prefer not to use organization-level instructions or want to avoid potential conflicts with your user-level instructions, you can disable this feature. Go to Tools → Options → GitHub → Copilot → Copilot Chat and uncheck Enable organization-level custom instructions.
Git tooling
Pull request updates 📣
React to PR comments and open the PR view in its own tab.
Reviewing pull requests is smoother and more comfortable with these updates.
- Emoji reactions on comments: The same reactions available on the web are supported for both GitHub and Azure DevOps.
- Open pull request in new tab: Click Open in New Tab in the PR header to pop the pull request into its own tab. Arrange it alongside your code for a more flexible review layout.
📣 See feature ticket to share your feedback and continue the conversation.
Attach branches to Copilot Chat
Ask Copilot about any branch by attaching it from the Git Repository window.
Branches join commits, changes, and PRs as context you can attach to Copilot Chat. Right-click any branch in the Git Repository window and select Add to Chat to include it in your conversation.
For example, ask Copilot to tell me about this branch to get a quick summary before diving into the code.
C++
MSVC Build Tools auto-discovery across VS installs
Visual Studio now finds pinned toolset versions from other installations instead of stopping at the first matching platform toolset in the current install.
You can now opt in to automatic discovery of MSVC Build Tools across all Visual Studio IDE and Visual Studio Build Tools installations on your machine, ensuring that a pinned
VCToolsVersionis resolved correctly even when it lives in a different install.Previously, Visual Studio only searched other installations for a matching toolset if your current install had no toolset at all for your target platform toolset. For example, if your project targeted
v143and your current Visual Studio already had anyv143toolset installed, the search stopped there, even if you explicitly pinned a specificVCToolsVersionthat only existed in a separate installation.Now, Visual Studio continues searching other installations to find the exact version you pinned, even when a different version of the same platform toolset is already present locally.
How to enable
Set
EnableVCToolsVersionDiscoverytotruein your project orDirectory.Build.props:<PropertyGroup> <EnableVCToolsVersionDiscovery>true</EnableVCToolsVersionDiscovery> <VCToolsVersion>14.43.34604</VCToolsVersion> </PropertyGroup>Why this matters
- Version pins actually work: A specified
VCToolsVersionis honored regardless of which installation contains it, even when your current install already has the same platform toolset at a different version.- Build reproducibility: Pin a known-good toolset version across your team without worrying about individual IDE updates changing compiler behavior.
- No manual path overrides: Cross-install toolset references are resolved automatically instead of requiring you to hand-wire
VCToolsInstallDir.
| Top bug fixes | From the community |
|---|---|
| _statusfp scheduled before floating point operations | Feedback ticket |
| Corrects an issue causing bad codegen when dereferencing a pointer to a based pointer. | |
| Corrects an issue with decltype of variables captured by value in certain non-mutable lambdas. | |
| C++ IntelliSense in v145 flags unresolved includes and false syntax errors | Feedback ticket |
| Visual Studio freezes when stopping debugger at breakpoint hit from Immediate Window | Feedback ticket |
Version 18.7.4
Released on July 14, 2026.
| Top bug fixes | From the community |
|---|---|
| Updated MinGit to version 2.54.0.2 | |
| C++ IntelliSense in v145 flags unresolved includes and false syntax errors | Feedback ticket |
| Security advisories addressed | CVE | Description |
|---|---|---|
| .NET Elevation of Privilege Vulnerability | CVE-2026-47300 | An elevation of privilege vulnerability exists in the ASP.NET Core Negotiate authentication handler where the LdapAdapter does not properly validate LDAP queries, allowing an authenticated attacker to bypass authorization checks. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-47303 | An elevation of privilege vulnerability exists in the ASP.NET Core Negotiate authentication handler where the LdapAdapter confuses CN and sAMAccountName identifiers, allowing an authenticated attacker to impersonate another user. |
| .NET Denial of Service Vulnerability | CVE-2026-47302 | A denial of service vulnerability exists in .NET XML processing where EncryptedXml handling and duplicate-attribute parsing in XmlTextReader cause uncontrolled resource consumption. |
| .NET Security Feature Bypass Vulnerability | CVE-2026-47304 | A security feature bypass vulnerability exists in the .NET XML encryption implementation (System.Security.Cryptography.Xml), allowing an attacker to forge XML signatures via an empty HMAC and bypass signature protections. |
| .NET Denial of Service Vulnerability | CVE-2026-50524 | A denial of service vulnerability exists in .NET where malformed TLS packets during the System.Net.Security SslStream handshake cause the application to crash or become unresponsive. |
| .NET Security Feature Bypass Vulnerability | CVE-2026-50528 | A security feature bypass vulnerability exists in .NET where the System.Net.Security SslStream implementation ignores channel binding, allowing an attacker to bypass authorization checks during secure communication. |
| .NET Denial of Service Vulnerability | CVE-2026-50525 | A denial of service vulnerability exists in the .NET XML encryption implementation (System.Security.Cryptography.Xml) where a crafted XML transform chain causes uncontrolled resource consumption. |
| .NET Denial of Service Vulnerability | CVE-2026-50648 | A denial of service vulnerability exists in the .NET XML encryption implementation (System.Security.Cryptography.Xml) where crafted encrypted XML causes uncontrolled resource consumption. |
| .NET Denial of Service Vulnerability | CVE-2026-50527 | A denial of service vulnerability exists in the .NET XML encryption implementation (System.Security.Cryptography.Xml) where improperly validated input leads to a stack-based buffer overflow. |
| .NET Tampering Vulnerability | CVE-2026-50526 | A tampering vulnerability exists in the .NET SDK container image build process where a predictable, world-writable cache location allows a local attacker to inject malicious blobs into container images built by other users on the same machine. |
| .NET Denial of Service Vulnerability | CVE-2026-50651 | A denial of service vulnerability exists in .NET where an attacker can flood SocketsHttpHandler HTTP/2 connections with SETTINGS and PING ACK frames, causing an out-of-memory condition in Http2Connection. |
| .NET Spoofing Vulnerability | CVE-2026-50659 | A spoofing vulnerability exists in the .NET SMTP client (System.Net.Mail) where SMTP command smuggling via CRLF sequences split across buffers allows injection of arbitrary email commands. |
| .NET Remote Code Execution Vulnerability | CVE-2026-50646 | A remote code execution vulnerability exists in Windows Presentation Foundation (WPF) when parsing specially crafted XAML input, allowing an attacker to execute arbitrary code in the context of the current user. |
| .NET Remote Code Execution Vulnerability | CVE-2026-50649 | A remote code execution vulnerability exists in Windows Presentation Foundation (WPF) when parsing specially crafted XAML input, allowing an attacker to execute arbitrary code in the context of the current user. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-50650 | An elevation of privilege vulnerability exists in Windows Presentation Foundation (WPF) when parsing specially crafted XAML input, allowing an attacker to elevate privileges on the affected system. |
| Visual Studio Remote Code Execution Vulnerability | CVE-2026-47305 | A remote code execution vulnerability exists in Visual Studio where a Mark-of-the-Web (MOTW) bypass allows a crafted .vcxproj InitialTargets or PreBuildEvent to execute project commands when a solution is opened. |
Version 18.7.3
Released on June 30, 2026.
| Top bug fixes | From the community |
|---|---|
| VSCopilot ChatError: Cannot find an instance of the Microsoft.VisualStudio.Copilot.ICopilotInteractionService service. | Feedback ticket |
| Copilot Chat window fails to initialize with NullReferenceException in ThreadsViewModel.AddThreadInternalAsync | Feedback ticket |
Version 18.7.2
Released on June 23, 2026.
| Top bug fixes | From the community |
|---|---|
| Fixed an issue where Copilot chat fails to open due to a RemoteInvocationException | Feedback ticket |
| Fixed a std::regex regression where a repeated pattern with a lookahead assertion would throw an exception instead of being properly handled. | Feedback ticket |
Version 18.7.1
Released on June 16, 2026.
| Top bug fixes | From the community |
|---|---|
| Fix poor contrast of datatip text in light theme | Feedback ticket |
| Fix an issue with certain ambiguous qualified-ids not being diagnosed |
June Update 18.7.0
Released on June 9, 2026.
IDE
Edit theme colors 📣
You can now easily edit the theme colors to personalize your Visual Studio experience. Change the colors of the editor, tool windows, and more to match your preferences.
Visual Studio now includes a new Theme colors options page that lets you customize any Fluent color token directly in the IDE - no extension required. Your customizations are saved per theme, so each theme keeps its own set of tweaks.
What you can do
- Tweak any Fluent token on the fly - accent colors, hover states, shell chrome, and more. Search for the token you want and pick a new color.
- Per-color reset - revert an individual token without wiping all your other customizations.
- Customize on top of any theme - your overrides layer on top of the theme you've selected.
- New tokens for shell and tab/window header separation - lets you give the shell and tab headers different colors (handy if you want a more retro look).
How to get there
Use the new Edit theme colors menu command, or open the Environment → Visual Experience → Theme colors page in settings.
📣 See feature ticket to share your feedback and continue the conversation.
Productivity
Color emojis
Visual Studio now displays emojis in full color throughout the IDE, making your code comments, markdown files, and chat conversations more expressive.
Visual Studio now renders emojis in full color across the entire IDE. Whether you're documenting code with helpful visual cues or collaborating in chat, emojis now appear with their full color and detail instead of monochrome outlines.
Where you'll see color emojis
You can use color emojis in:
- Code comments - Add visual markers to TODO items, warnings, or section headers
- Markdown files - Preview and edit markdown documents with rich emoji support
- GitHub Copilot Chat - See colorful emojis in chat responses and your questions
- Output windows - Build output and logs now display emojis in color
- Solution Explorer - Emojis in file names and project items are now rendered in color
Why it matters
Color emojis make it easier to scan code and quickly identify important sections. A red ❌ in a comment stands out more than a gray outline, and a green ✅ provides clearer visual feedback. This small change improves readability, especially in large codebases where visual markers help you navigate quickly.
The rendering uses modern font technologies to display emojis consistently across different Windows versions, so what you see matches what your teammates see.
GitHub Copilot
Copilot usage tracking and alerts
Stay informed about your Copilot usage with real-time tracking and alerts when approaching limits.
GitHub Copilot recently transitioned to usage-based billing, so your Copilot usage is now calculated based on token consumption rather than by request (learn more from GitHub's blog).
To help you make the most of your usage in Visual Studio, we're continuously improving the product to help you optimize and track your Copilot usage. As part of this ongoing work, we've refreshed the Copilot Usage window and added proactive alerts as you approach your limits.
What's new
The updated Copilot Usage window in Visual Studio gives you a clearer view of your current usage based on the new billing model, making it easier to track how much you're using Copilot throughout your development workflow. You'll see real-time updates on your usage metrics, helping you understand your patterns and plan accordingly.
Access the usage window anytime from the Copilot badge menu → Copilot Usage.
Visual Studio also alerts you about your usage proactively, giving you time to adjust your usage before hitting any limits.
You'll see alerts when:
- You're approaching your usage limit
- You've reached your usage limit
- You have additional usage (also called overages) activated after reaching your usage limit
You can customize when the approaching usage alert appears by adjusting your quota warning threshold percentage in your settings, giving you control over how early you want to be notified.
More to come
This is just the start. We're continuously improving Visual Studio to help you optimize your Copilot usage and give you better visibility into how you're using it. Expect more updates across the product in the coming releases.
Share your feedback
We'd love to hear your thoughts on how we can help you better navigate your Copilot usage. Share your feedback and suggestions on Developer Community.
Long-distance next edit suggestions
GitHub Copilot can now suggest edits anywhere in your file, not just near your cursor.
Next edit suggestions (NES) in GitHub Copilot extend Copilot completions by not just inserting code at your cursor, but suggesting edits nearby, anticipating what you'd change next. This is a great addition to completions, but it was limited to a narrow range around your current position. In practice, the edits you need to make are frequently located much further away in the file.
Now, Copilot can suggest edits anywhere in your file with long-distance next edit suggestions. Instead of being limited to changes near your cursor, Copilot can predict and suggest edits throughout your entire file, helping you maintain consistency and make related changes even when they're far apart.
If you want to learn more about the behind-the-scenes of long-distance suggestions, check out this blog post, which includes a deep dive into the model training and evaluation. This experience is currently off by default. To try it out, go to Tools → Options → Text Editor → Inline Suggestions and check Enable extended range suggestions. Please give it a try and share your feedback with us!
Trust validation for MCP servers
Detects any changes to MCP server configurations and assets, and prompts for re-approval before running.
MCP servers extend Copilot's capabilities, but keeping them secure matters. Visual Studio now includes trust validation for MCP servers, a security layer that detects when a server's configuration or assets have changed since you last approved them and prompts you to re-approve before proceeding.
How it works
Trust is validated at two points during server startup:
- Configuration trust - Before the server process starts, the current server configuration is compared against a previously trusted baseline. If the configuration has changed, you are prompted via a trust dialog.
- Asset trust - After the server starts and its assets (tools, prompts, resources, instructions) are loaded, their fingerprint is compared to the last-trusted fingerprint. If assets have changed, the trust dialog shows what diverged between the old and new versions.
Trust decisions
When prompted, you can:
- Accept the changes - trusts once and updates the baseline for future comparisons.
- Always trust - you will never be prompted again for this server.
- Reject the changes - aborts the server startup and leaves it in a trust-rejected state. Trust is re-validated on the next activation attempt.
Servers you are connecting to for the first time are implicitly trusted on first activation, no dialog is shown. The current configuration and asset fingerprints are saved as the initial baseline for future change detection.
Trust validation is also automatically skipped when the server is built-in, the MCP registry policy is set to RegistryOnly (meaning it's pre-approved by organizational policy), you previously chose "always trust" for that server, or you turn off this feature.
This feature is enabled by default. You can manage it at Tools → Options → GitHub → Copilot → Copilot Chat → Show trust dialog before running tools from an updated MCP server.
Git tooling
Review and approve pull requests in the IDE 📣
Browse pull request changes, leave comments, and approve without leaving Visual Studio.
Got a pull request to review, or feedback to address on your own? Whether your repo is on GitHub or Azure DevOps, you can handle it without leaving Visual Studio.
Browse and open pull requests
Select any pull request to open an embedded review view without checking out the branch. Find PRs from the Git Repository window (View → Git Repository), Git Changes, or Git → GitHub (or Azure DevOps) > View Pull Requests.
- PR description, changed files, commits, related items, and reviewers in one view
- Switch between active PRs without disrupting your working branch
- View commit details and changes for individual commits in the PR
Comment and discuss
Leave feedback directly in the diff view, and keep the conversation going without switching to the browser.
- Inline comments on specific lines, replies, and thread resolution
- Comments per file shown in the Changes list
- Comments render inline images and formatted text, similar to the web
Approve, complete, and merge
When you're ready, approve and complete the PR from Visual Studio. Vote and completion actions are available from any view, so you can approve while reviewing changes.
- Approve the pull request, with more vote options available in the dropdown for Azure DevOps
- View status checks, merge conflicts, and required approvals on the Overview tab
- Complete or merge the pull request, with options to convert to draft and abandon or close
You can manage this experience in Tools → Options → Preview Features:
- Pull Request Comments
- View pull requests for a Git repository
📣 See feature ticket to share your feedback and continue the conversation.
Add PRs to Copilot Chat
Attach pull request context directly to Copilot Chat.
Copilot Chat already knows about your commits and changes, and now you can bring pull requests into the conversation as well.
Right-click a pull request in the Git Repository window and select Add to Copilot Chat to attach its context, including the PR description, changed files, and comments. You can also reference a pull request directly in the chat input by typing
#and a pull request ID.For example, ask Copilot to "summarize this pull request" to get a quick overview without reading through every file.
Make sure Tools → Options → Preview Features → View pull requests for a Git repository is enabled.
C++
GitHub Copilot modernization agent for C++
The MSVC upgrade scenarios for GitHub Copilot modernization have completed their public preview and are now generally available.
The GitHub Copilot modernization agent is an AI-powered tool in Visual Studio that helps you modernize and upgrade your applications. We are excited to announce that our first C++-specific scenarios that help you upgrade your projects to use the latest version of the Microsoft C++ (MSVC) Build Tools have completed their public preview and are now generally available.
Staying up to date with the latest MSVC version gives you access to new features, performance improvements, and security updates. The modernization agent for C++ simplifies this process by analyzing your project, identifying compatibility issues, and executing a clear upgrade plan to ensure a smooth transition to the latest MSVC version. You can have it run in Automated mode to reduce manual effort, or in Guided mode to review and approve the assessment, plan, and execution steps.
How to get started
- In Visual Studio, open your C++ project that compiles with MSVC.
- Launch the modernization agent using one of the following methods:
- Right-click the solution or project in Solution Explorer and select Modernize, or
- Open the Copilot Chat window and type
@Modernizefollowed by your upgrade request.- Let the
@Modernizeagent know that you'd like to upgrade to the latest version of MSVC.
Thanks to the many users who evaluated GitHub Copilot modernization agent on their C++ projects during the public preview! Your feedback was instrumental in helping us improve the experience, and we are excited to continue building on this foundation to support more C++ modernization scenarios in the future. Let us know what you'd like to see next by sharing your suggestions and feedback at Developer Community.
NuGet PackageReference Support for C++ Projects 📣
C++ .vcxproj projects now have experimental support for NuGet PackageReference, both for in the command-line and the Visual Studio IDE.
NuGet PackageReference is now supported for Visual Studio C++ projects (.vcxproj). This feature is currently experimental and off by default.
To enable this feature in C++ projects, set the
EnableNativePackageReferenceSupportproperty totruein your project's Globals property group or in a Directory.Build.props file. You can then addPackageReferencedependencies as you would for your .NET projects.PackageReference allows you to reference NuGet packages directly in your project file, and have them automatically restored and included in your build. This is a more modern way to manage dependencies compared to the older packages.config approach. To learn more about PackageReference, see the NuGet documentation on PackageReference and Migrate from packages.config to PackageReference.
This feature builds on the existing support we added for C++/CLI projects targeting modern .NET versions.
Scope and compatibility:
- Supported: Native C++ projects (.vcxproj) and C++/CLI projects targeting .NET Core or .NET 5+.
- Not supported: C++/CLI projects targeting .NET Framework. For those projects, you can continue to use the older packages.config approach for NuGet dependencies.
- Not supported: C++ projects that reference C++/CLI projects or C# projects. We are investigating support for this scenario in a future update. In the meantime, you can use one of these workarounds to get PackageReference working:
- Setting
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>and<SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>on the<ProjectReference>item will allow NuGet to ignore it and not cause restore and build issues.- Set
AssetTargetFallbackto include frameworks compatible with the referenced C# project. For example:<PropertyGroup> <AssetTargetFallback>net472;net10.0</AssetTargetFallback> </PropertyGroup>.📣 See feature ticket to share your feedback and continue the conversation.
| Top bug fixes | From the community |
|---|---|
| MSVC v14.51 Linker Crash in IncrCalcPtrs | Feedback ticket |
| MSVC CL.exe Release build hits internal compiler error in plutovg-font.c | Feedback ticket |
| CHPE /d2hybrid:emit_guest_references causes ICE | Feedback ticket |
| Fixed an issue causing the VC Redistributable branding to revert to an older version. | |
| Correcting order of contents in Copilot Chat window after upgrading VS |
Version 18.6.3
Released on June 9, 2026.
| Security advisories addressed | CVE | Description |
|---|---|---|
| SQLite Memory Corruption Vulnerability | CVE-2025-6965 | There exists a vulnerability in SQLite versions before 3.50.2 where the number of aggregate terms could exceed the number of columns available. This could lead to a memory corruption issue. |
| .NET SDK Elevation of Privilege Vulnerability | CVE-2026-45490 | dotnet.exe workload elevate - Arbitrary file creation/truncation via LogFile named pipe allows an unauthorized attacker to elevate privileges locally. |
| .NET Core Tampering Vulnerability | CVE-2026-45491 | Symlink path traversal in System.Formats.Tar enables arbitrary file write when extracting tar entries. |
| ASP.NET Core Denial of Service Vulnerability | CVE-2026-45591 | Stack overflow DoS via deeply-nested MessagePack arrays in SignalR and Blazor Server. |
Version 18.6.2
Released on May 27, 2026.
| Top bug fixes | From the community |
|---|---|
| Web Deploy publish fails in Visual Studio Community 2026 Insiders for legacy ASP.NET project | Feedback ticket |
| Fixing error for Claude Opus 4.5 agent unexpected error: Unhandled exception in AskInConversationAsync: StreamJsonRpc.RemoteInvocationException: Illegal characters in path | Feedback ticket |
| Addressing build failures for compiler - Macros with nested parentheses inside a VA_OPT not correctly materialized when imported from a header unit |
Version 18.6.1
Released on May 20, 2026.
| Top bug fixes | From the community |
|---|---|
| Arm64: Can't set breakpoints vs2026 | Feedback ticket |
May Update 18.6.0
Released on May 12, 2026.
IDE
System dark/light themes 📣
Automatically switch Visual Studio themes when your system moves between Light and Dark mode, keeping your IDE in sync with your environment.
You might prefer a lighter, higher-contrast theme during the day and a darker theme at night. Visual Studio now automatically switches between your selected Light and Dark themes when your system setting changes, keeping your IDE in sync with your environment.
How to use it
- Open Tools → Options → Environment → Visual Experience
- Set Color theme to Use system setting
- Select a System Light theme and a System Dark theme
Visual Studio automatically applies the matching theme when you change your Windows theme.
📣 See feature ticket to share your feedback and continue the conversation.
GitHub Copilot
View and manage Agent Skills
Browse, edit, and locate all your Copilot Agent Skills from the chat window.
You can now view all your Agent Skills in one place. By clicking the tools icon on the bottom right corner of your chat window, you can open a dedicated skills panel that lists every skill discovered from your workspace and user profile, making it easy to see what's available at a glance.
From the panel, you can manage skills directly without leaving Visual Studio:
- Edit a skill - click the three-dot menu (⋯) on any skill to open and edit it directly in VS.
- Open file location - use the same menu to jump straight to the skill file on disk.
- Search a skill - use the search bar at the top to quickly find a specific skill by name or keyword.
This builds on the Agent Skills support introduced earlier, giving you a more user-friendly way to browse and maintain your skills. Try it out and share your feedback!
Multi-file summary diff for Copilot changes
Review all Copilot changes across multiple files in a single summary view with granular accept and undo controls.
When Copilot edits multiple files, you don't need to review each one separately anymore. The new multi-file summary diff view shows all changes in one place.
Click the Open Changes Summary button in the Copilot Chat working set after Copilot finishes editing. You'll see a single tab with all changed files and their diffs together.
You can accept or undo changes at different levels:
- Across all files at once
- On a per-file basis
- Per individual diff chunk
You can also open any file separately to see its full context.
Use the controls in the top-left corner to:
- Collapse all file contents to see only file headers for a quick overview
- Navigate between diff chunks using the next and previous buttons to jump through changes quickly
This view makes it easier to understand what Copilot changed across your codebase and gives you precise control over which edits to keep.
Context window indicator
See how much context Copilot is using and optimize it with one-click summarization.
When you chat with Copilot, it tracks your conversation history, attached files, and other context to give you relevant responses. This is called the context window, and it has a limit. Once it fills up, Copilot may lose track of earlier parts of your conversation.
You can now see exactly how much of that context window you've used with the new context window indicator.
Look for the ring icon in the upper right corner of the Copilot Chat prompt box. This mini donut chart fills up as your conversation grows, showing you at a glance how much context you've consumed.
Click the indicator to see:
- Exact percentage of context used
- Detailed breakdown of what's contributing to the context
- Summarize conversation button to compact your conversation and free up space
When your context is running low, click Summarize to compress earlier parts of your conversation. This lets you keep chatting without losing important context or starting a new conversation.
![]()
Plan before you build with Planning mode
Create and iterate on implementation plans before making any code changes.
Sometimes you want to think through an approach before diving into code. The new Planning chat mode lets you collaborate with Copilot on an implementation plan - without making any changes to your codebase.
How it works
When you select Planning mode, Copilot follows a two-step process:
- Explore and clarify - Copilot uses read-only tools to understand your codebase and asks clarifying questions. For straightforward tasks, it drafts a plan immediately.
- Draft and refine - Copilot creates a detailed implementation plan that you can review, discuss, and refine together.
When you're ready, click Implement plan to hand it off to Agent mode for execution.
Plans are saved as markdown
Copilot saves every plan as a markdown file in your repo at
.copilot/plans/plan-{title}.md. This file is the single source of truth. You can edit it directly in your editor or refine it through chat. Copilot detects your changes and keeps the plan in sync.When to use Planning mode
- Big features - Break down complex work into clear steps before writing code.
- Unfamiliar codebases - Let Copilot explore and explain before proposing changes.
- Team collaboration - Share plans as markdown files for review before implementation
Git tooling
Add commit to Copilot Chat
Attach commit context to Copilot Chat directly from the IDE.
Reviewing a commit and want Copilot's help understanding it, spotting issues, or basing new edits off of it? Instead of hunting down the commit ID and pasting it into Chat, you can now right-click a commit and add it directly as context in Copilot Chat.
You can find this command in the following surfaces:
- Git History (Git > View Branch History)
- File History (Right-click a file in Solution Explorer, then Git > View History)
- Annotate (Blame) (Right-click in the editor, then Git > Annotate (Blame))
You can also multi-select commits to attach several to chat at once.
Copilot receives the commit as context, so you can ask things like explain this change, does this introduce any issues, or write a similar change for this other file.
![]()
Commit message instructions moved
Commit message custom instructions now use the Copilot instructions file instead of the Visual Studio setting.
If you've been using the Commit message custom instructions text input under the GitHub → Copilot → Source Control Integration setting to tailor Copilot-generated commit messages, that setting will no longer apply. Going forward, commit message instructions are managed through the Copilot custom instructions file.
This brings commit message instructions in line with how other Copilot custom instructions work across your repository, keeping everything in one place.
Set up custom instructions
Add your commit message instructions to your repository's Copilot instructions file. For full setup details, see Add repository instructions.
![]()
C++
Improved optimizations for iterative C++ builds
Improved optimization scenarios for C++ builds when GitHub Copilot build performance for Windows finds potential improvements that may only be visible in iterative builds.
When using GitHub Copilot build performance for Windows, Copilot may detect a regression in full rebuild analysis. In these cases, Copilot now reruns a comparable incremental build to better reflect real-world gains from optimizations such as precompiled headers and header refactoring, which can appear slower in rebuilds but improve your day-to-day workflows.
@BuildPerfCpp in GitHub Copilot chat to optimize your build time" />
GitHub Copilot build performance for Windows
GitHub Copilot build performance for Windows uses Build Insights to identify and fix build performance issues in C++ projects using MSVC. By analyzing your build process, this agent suggests optimizations and implements changes to reduce build times:
- Reduce header parsing time by creating precompiled headers and optimizing include paths, such as removing unused includes.
- Refactor functions to reduce and eliminate function parsing time.
- Modernize C++ code to use newer language features that improve compilation speed.
- Optimize build settings to leverage parallel builds and optimal linker settings.
Getting started
- Make sure GitHub Copilot Agent Mode is enabled in your IDE.
- Open a C++ project.
- Ask @BuildPerfCpp in the GitHub Copilot Chat window to optimize your build time.
Note: Build Insights needs to run and collect build performance data. It also requires ETL trace collection permissions. Accept the UAC prompt once to enable Build Insights to collect ETW events from MSVC.
@BuildPerfCpp in GitHub Copilot chat to optimize your build time" />
Segment Heap support for C++
New MSBuild and CMake C++ projects now use Segment Heap by default, helping applications take advantage of modern Windows memory management and security features.
Visual Studio now enables Segment Heap by default for new C++ projects. Segment Heap is a modern Windows heap implementation that improves performance, scalability, and security compared to the legacy NT heap. This change helps applications adopt these benefits and prepares them for future platform capabilities.
You can configure this behavior in project properties under Manifest Tool → Input and Output. Existing projects are not modified automatically but can opt in using the same settings.
MSVC Build Tools v14.51
Improved C++23 support, performance, and many bug fixes.
Microsoft C++ (MSVC) Build Tools version 14.51 is now available and is installed by default with the C++ desktop and gaming workloads. To check if it's installed simply make sure one or both of these components are checked in the installer:
- MSVC Build Tools for x64/x86 (Latest)
- MSVC Build Tools for ARM64/ARM64EC (Latest)
You can also select one of the components labelled with the v14.51 version number to pin your installation to this version.
The version number printed by cl.exe and link.exe will be at least 14.51.36231.
The stable release of v14.51 will receive 9 months of servicing fixes, as described in New release cadence and support lifecycle for Microsoft C++ Build Tools .
See below for a complete list of what's new.
C++ Standards Conformance
The frontend team continued implementing CPP23 and CPP20 features and fixing conformance issues:
- C++23 Implementations: Please see the CPP23 Support in MSVC Build Tools 14.51 blog post for details.
- Consteval Improvements: Multiple fixes to
constevalfunction handling, constexprnew/deletein modules, initializer list backing arrays,/experimental:constevalVfuncVtablebehavior now enabled by default, and better error diagnostics for failed constant expressions.- Coroutine Improvements: Coroutine-related globals refactoring, and deprecation of experimental coroutine headers.
- Parser Modernization: Recursive descent parser now handles
[[attributes]], with continued improvements to error recovery and removal of legacy token accessors.- C Language Improvements: Added
_Atomicqualifier support, removed incorrect diagnostics for C99 flexible array members, and added__typeof__support for function types.Code Generation
The backend optimizer received significant investment across many areas:
- Sample-based profile guided optimizations: Support for sample-based profile guided optimizations with supporting tools. More details to follow in a future blog post.
- Static Single-Assignment (SSA) optimization improvements: Implemented dozens of new algebraic simplification patterns, including ternary operator patterns, arithmetic patterns, and min/max.
- Common Subexpression Elimination (CSE): Improve CSE of loads of
[x + C]through if/else joins, redundant stores, and has improved multibyte aliasing checks.- Scalar Replacement of Aggregates (SROA): More aggressive unpacking of structures.
- Loop Optimizations: Linear Function Test Replace (LFTR) signedness fixes and counted loop optimizations when the primary induction is used after the loop.
- Inlining: Extended limited call-site inlining, and improved propagation of parameter type information when inlining.
- Copy Propagation: Multiple improvements to copy propagation for integer constants and sequential copies.
- Strength Reduction: Implemented reduction of conversions as a strength-reduction optimization.
- Predicate and Jump Threading: Improvements to predicate-based optimizations for eliminating bound checks, including better use of predicates from min patterns.
- Stack Layout: The compiler now prefers pushing callee-saved registers onto the stack over using shadow slots, reducing function prologue/epilogue overhead.
- PGO: Improved per-function size/speed trade-offs to mitigate unrepresentative profiles and PGO trimming improvements.
- Restrict Pointers: Added support for restrict pointer semantics to enable additional aliasing optimizations.
- Pattern matching optimizations: New patterns for
MSUB/MADDgeneration,ADC/SBBfor conditional add/subtraction, andCMOVE/NEvariants.- Intel APX: Preview support of Intel APX (Advanced Performance Extensions) in the MSVC toolchain. This support is enabled via the
/feature:APXcompiler option to target various APX features like Extended General-Purpose Registers (EGPRs), New Data Destination (NDD), No-Flags Update (NF), new conditional ISA and optimized registers save/restore operations. These are documented at https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-performance-extensions-apx.html.Other code generation changes:
- The
/volatileMetadatacompiler option is no longer enabled by default for x64 and x86; use/volatileMetadataexplicitly to emit volatile metadata.ARM64 & SVE
- SVE (Scalable Vector Extension) Support: Major new feature bringing ARM SVE to MSVC, including frontend type support for SVE scalar and aggregated types, intrinsic lowering, callee-saved register unwinding, variadic function parameter passing, header file installation, and tryblock/funclet support. Multiple ICE and miscompilation fixes were addressed.
- Shrink Wrapping: Fixed multiple issues including epilog-only fragment unwind info, codegen bugs with chkstk killing X15, and multi-entry shrink wrap regions.
- Code Quality: New patterns for
CSEL pow2, 0 + ORR → CSET + ORR_SHIFT, optimizedNEON_DUPR, removed redundantNEON_INSRafterNEON_DUPR, ARM NEON patterns for x264, instruction fusion improvements, register retyping after globregs, and function alignment tuning.- DIA SDK: Full SVE support in the debug interface, including
RtlpGetSveContextPointersandIDiaStackWalkHelper3.SIMD & Vectorization
- SLP Vectorizer: Improvements to Superword Level Parallelism (SLP) vectorization:
- Scalar reduction vectorization
- Generic and oversized vector instruction support
- Permute optimizations and oversized select support
- Vectorizer Improvements: Hoisting of vectorized inner loop pointer overlap checks to parent loops, character-count loop support, non-contiguous memory access support for 2-byte data types, and improved low trip count heuristics on ARM64.
- AVX/SSE: AVX512
memcpy/memset, AVX2memcmpoverride, AVX10.2, and vectorized bitmasking patterns for x264.Linker & PDB
- DIA: COM initialization thread safety, and SVE support.
- PDB Fuzzing: Triggered PDB fuzzing from nightly builds.
- SPGO: Sample-based profile guided optimizations available for use.
Standard Library (STL)
On GitHub, the microsoft/STL repo tracks its status with a high level of detail; see the Changelog for MSVC Build Tools 14.51. Notable library features that are newly available:
- P0429R9 -
<flat_map>- P1222R4 -
<flat_set>- P2255R2 - Type Traits To Detect References Binding To Temporaries
- P2590R2 - Explicit Lifetime Management
- P2674R1 -
is_implicit_lifetimeOther notable changes:
- We've massively overhauled
<regex>to fix long-standing correctness and performance problems that have been present since its initial implementation in VS 2008 SP1. After almost two decades, the stack overflows are finally fixed!- We've continued to add and improve SIMD-vectorized STL algorithms, using SSE4.2 and AVX2 for x64/x86, and (newly shipping in MSVC Build Tools 14.51) using NEON for ARM64/ARM64EC.
- We've implemented 18 LWG issue resolutions.
- We've removed long-deprecated non-Standard features, such as TR1,
<hash_map>,<hash_set>,<experimental/filesystem>,stdext::checked_array_iterator, andstdext::unchecked_array_iterator.All of this has been possible thanks to our amazing GitHub contributors.
AddressSanitizer (ASan)
- ARM64 Support: Improved ASan for ARM64 support with comprehensive library packaging, interception fixes, and false-positive resolutions.
- SanitizerCoverage: Fixed blocklist handling, codegen issues, and forward declarations to ensure sancov initializers are invoked.
- Performance: Cached walked heaps for performance improvements during shadow memory operations.
Modules & IFC
- IFC Version Update: The MSVC frontend generates IFC files according to the 0.44 version of the IFC specification.
- Concurrency Fix: Fixed a use-after-free race in concurrent IFC debug record resolution.
Static Analysis
- EspX Consolidation: Merged EspX and its extensions like CppCoreCheck into a single DLL, simplifying deployment.
- Bug Fixes: Fixed false positives from inexact location dereference, and a number of internal compiler errors (ICE) under /analyze.
ARM64EC & ARM64X
- Coroutine Support: Fixed missing entry thunks for coroutine outlines and ramp functions.
- ICF: Improved identical COMDAT folding (ICF) optimization in ARM64X binaries.
- Volatile XMM: Fixed ARM64EC volatile XMM assignment.
Diagnostics
- Fixed C4319 not being emitted when compiling C code.
- Removed incorrect diagnostics for C99 flexible array members.
- Warning C4789 improved to reduce false positives.
Debug Info
- Enabled debug info pruning to reduce PDB sizes.
Tickets Fixed
The following customer-reported issues were fixed in this release:
- builtin_bit_cast Internal compiler error
- typeof not working with function types
- Must_inspect_result false positive
- statusfp scheduled before floating point operations
- LINK : error LNK2001: unresolved external symbol after upgrading to VS 17.14.5
- REX.B NOP is interpreted as ''XCHG EAX,R8d' by the CPU, but VS 2026 disassembles it as a NOP
- /permissive- and template implies error C3688: invalid literal suffix '_s'
- CPP dynamic debugging initialises static locals incorrectly
- ARM64 - Subtraction and comparison of ULONGLONG's uses W registers
- min/max ternary logic expression broken in combination with integer type promotions
- Error LNK2001 when importing a static class/struct member from a module from a DLL
- Pointer-to-member of base class as template argument
- Deleting of templated class-specific operator new is not detected by constraints
- One can modify a capture in non-mutable lambda via C++ deducing this
- No CopyElision performed when initializing via initializer list
- std::enable_if compile error after updating from 17.13 to 17.14
- Issue in specific conditions with modulo operator in variadic template with '/permissive-' after version 19.32.
- msvc error C1001: Internal compiler error (compiler file 'msc1.cpp', line 1589)
- No ADL in default member initializer due to local free function
- FUNCSIG is empty for an auto lambda assigned to a std::function
- 'warning C5287: operands are different enum types' even with an explicit cast
- C2106 '=': left operand must be l-value Visual Studio 2026 Insiders [11206.111]
- cl: internal compiler error on relatively simple, bit-manipulation code
- Empty compound literal array causes internal compiler error
- error C2593 caused by static operator[] in C++23 mode
- fatal error C1001: Internal compiler error
- Incorrect code generation for &= in 17.14
- Incorrect math result using boost::rational and google test
- Internal compiler error in VS2022 17.10+
- Internal compiler error when trying to compile simple C++ program
- lambda capture nonmovable by reference doesn't work since MSVC17.4
- msdia140.dll ver 14.50.35719.0 CDiaSymbol::get_virtual always returns false
- MSVC 19.44.35207.1 C2352 when calling base class method
- MSVC 19.51 miscompiles ffmpeg for arm64
- MSVC 2026 pointer subtraction of consecutive members of struct with same type leads to unexpected value
- MSVC crashes when there are at least 65536 template parameter in a parameter pack in CTAD
- problems with Visual Stdio 2022 17.14.15 update - LINK : fatal error LNK1000
- v.19.50 x64 optimizer generates incorrect code with /O2 and /EHs
- Visual Studio compiler falsely optimize branch in code under v143 and v145 toolsets
- VS2026 generates incorrect FP code
- Lambda with deducing this parameter of unrelated type is wrongly permitted
- InitAll in VS2026 in initializing a pointer in a vector
- Forward type declaration doesn't work during type specialization if the forward-declared type name is ambiguous
- ICE on CTAD for alias template with std::array
- Internal compiler error when using conditionally-copyable types
- Rejects valid qualified type name involving lambda in decltype
- Silent Bad CodeGen: Regression in Lambda Capture Constant Folding (v143, v145)
- INTERNAL COMPILER ERROR: MSVC V19.50.35615 for x64
- Arm64 optimization bug for expf
- Internal Compiler Error when defining C++17 static data member of template and its constructor takes certain arguments
- CL.exe exited with code -529706956.
- rejects valid operator call
- alias template deduction guide doesn't work in c++20
- An inline friend function template cannot access the template arguments of the class template (C2065)
- Binary left fold expression in return type leads to compilation error
- explicit variable template instantiation causes internal compiler error when using precompiled header
- CLI - inline namespace does not work
- CLI: ::typeid cannot be used on builtin types
- requires requires clause with non-type template parameter inconsistently generates strange compiler error
- consteval fails to compile
- C7602 false positive, constant template parameter constraint bug
- Can't allocate heap memory at compile time
- Cannot forward declare class in internal module partition (C++20)
- Cannot pass one consteval function as an argument to another consteval function
- Cannot use a pointer on immediate function within constant expression
- Class template argument deduction for alias template fails
- Compiler-generated code for certain C++ coroutines give unexpected warnings and refer to negative line numbers
- constant expression is not considered constant in immediate function
- Consteval code does not compile in MSVC
- Error C2100 is incorrect for non-generic lambda expressions
- Error C2514: class template cannot be constructed
- error C7535 due to rvalue reference when a constructor delegates to another constructor
- ICE when indexing into an NTTP multidimensional c-array on MSVC 14.44.35207
- If constexpr and require do not check for the existence of members correctly
- Including a header with #pragma system_header from an external include directory treats the whole translation unit as an external header
- Internal compiler error (ICE) on manipulating with pointer to immediate function
- Internal Compiler Error when specializing on floats
- Making a call on consteval lambda's returned function leads to error C7595
- MSVC fails to compile C++20 template lambda with consteval specifier
- MSVC incorrectly deduplicates two different member pointers (&Case01::a, &Case02::num) passed as auto non-type template parameters
- MSVC rejects valid program involving inheriting conversion function from a closure type with no capture
- No warning C4706 for assignment to std::unqiue_ptr used as a condition
- Removal of placemarker tokens incorrectly removes surrounding whitespace with /Zc:preprocessor
- requires requires constraint on a member function treats a base call like a static call
- Runtime stack corruption reported with std::visit
- source_location() returns wrong value.
- std::is_constructible gives incorrect answer for arrays in C++20
- std::source_information::current() outputs different location in consteval context
- std::source_location::current().function_name() produces empty string when used as default argument value
- Unable to call a consteval function from another one
- Using a dependent qualified name as a default argument for a constraint template type parameter breaks the MSVC compiler
- When ASSERTE is given an expression with '"', it results in internal compiler error
- Wrong error C3640 in getting a pointer on a pure virtual function
- Wrong overload called due to rvalue reference leading to a recursion
- Deduction of class template arguments picks up wrong constructor
- Regression, array access on result on ternary incorrectly returns a prvalue
- 20 modules C1001: Internal compiler error
- Array reference is incorrectly calculated leading to access violation or wrong memory address being accessed
- Cannot partially specialize template across C++20 module
- Failed to specialize function template for abstract type after SFINAE call on type
- Internal Compiler Error Found in MSVC 14.44.35207
- Internal compiler error when when using a bad return type in a template user defined conversion function
- Internal Compiler Error while compiling C++20 coroutine code
- Invalid Operation: FP optimization bug
- Spurious C2102 error initializing static inline constexpr member with partial designated initializer list
- STL hardening checks (_MSVC_STL_HARDENING) are not optimised away (2)
- template function specialization and decltype compiler discrepancies
- VS 17.12 regression, ICE with structured bindings and lambda in constexpr variable template instantiation
- When a throwing expression appears somewhere in a lambda capture list,
noexcept(<lambda expression>)gives incorrect result- VS2026 regression: lambda cannot access local constant
- Spurious compiler error C2872 when building with C++23preview
- CLI & C++23 - multidimensional managed arrays don't work
- #pragma warning(disable) not working in nested headers used with header units
- Anonymous unions in unnamed namespaces are incorrectly required to use static
- Buggy declspec(selectany) constant initialisation across C++ modules
- modules compile error when using a using declaration from a different module
- C2355 is wrongly triggered when local class is defined in a static member function
- C4389 is triggered when comparing a bitfield member of one bit with a bool
- Can not initialize array with consteval constructed elements
- Compiler crashes with C1001 error when using CTAD in a nested type with template dependent noexcept
- Compiler error with constexpr user-defined literals in a requires expression
- CTAD with designated initializer doesn't compile
- Deleted function disables ADL in immediate context
- Enum names publicly imported into class declaration with using-enum-declaration (using enum) are lost across module boundaries
- error C3535: you can't deduce the type for 'auto' from 'overloaded-function'
- error C7595: call to immediate function is not a constant expression
- Error parsing function declaration taking a function pointer and having an empty init list as a default argument
- Extra blank line output with /E and #warning
- False positive warning C4305 when using a defaulted non-type template parameter
- Fold expression fails to expand full pack in nested template after C7515 fix
- Function Specialisation and Concepts Causes an Ambiguous Call to Overloaded Function
- ICE using Boost.PFR with CPP modules (vs-17.14.0-preview1)
- ICE while compiling mp-units
- ICE with modules and if consteval
- ICE with template deduction guide
- ICE: writer.cpp:542 the impossible happened when using folly + modules
- identifier not found in nested fold expression
- In msvc V145, the BUG triggered when using intra-class members in constraints in templates within classes
- Interaction between no_unique_address and has_unique_object_representations is incorrect
- Internal compiler error when linking c++20 module
- Internal compiler error when using CPP modules
- Internal compiler error. (compiler file 'D:\a_work\1\s\src\vctools\Compiler\CxxFE\sl\p1\c\trees.c', line 19104)
- Mixins pack fold expressions error
- MSVC : Nested struct depending on outer class template parameters fails as NTTP within the class scope (C2993)
- MSVC fails to compile (working) code involving template metaprogramming
- Nested lambdas errors out in msvc with labeled structured binding
- Note that follows warning C4477 is inaccurate for size_t, redux
- Overload resolution fails for enum non-type template parameters
- Parameter pack with reference to C array issue
- Unable to deduce argument type to std::optional
- Unions are not layout-compatible despite containing layout-compatible data members
- Universal CL.exe Crash (Exit Code -1073741819) with Nested std::filesystem::path in C++17+
- The destructor is private, but compiler allows create an object on stack.
- Apparent C++ parser bug - emits C2143 + C2451 (+ optional C2530 + C3531) if range-for expression inside a template function contains a lambda
- C3520 when expanding template parameter pack in a member function template of a class template
- Can't use templated alias instance if the parser first sees the instantiation of the alias in a template class
- Internal Compiler Error in latest versions of MSVC when compiling specific fold expression
- Internal compiler error involving member function pointer, multiple inheritance and constexpr passthrough function.
- Internal Compiler Error with Lambda and Constexpr Reference in Visual Studio 2026 ( CL.exe Version 19.50.35722 for x64 )
- Lambda cannot access local constant
- MSVC 14.50.35503 Internal Compiler Error [Visual Studio 2026 Insiders]
- Overload resolution failing with a class template specialization
- Regression (Compile Error) when using modules and fmtlib
- Incorrect result when struct contains a [[no_unique_address]] member
- Using an initializer list as a template argument when an incompatible overload exists results in error C2440
- Warning C4864 incorrectly raised when calling overridden non-template member functions of the template base class
- IntelliSense and the compiler complain about the wrong variable being const
- Ternary operator does not propagate temporary operand to the resulting rvalue reference.
- Using an elaborated-type-specifier to refer to an enum whose underlying type is not int results in errors C3432 and C3433
- MSVC incorrectly warns that C99 flexible array members are a nonstandard extension (zero-sized arrays)
- ARM64 /EHa incorrect code motion
- ARM64 issue with static initializers and destructors and /OPT:ICF
- ARM64EC: Crash when calling C++ function in DLL containing OpenMP pragmas, from C# app through DllImport
- arm64x forwarding dll does not support DATA
- ASAN_VCASAN_DEBUGGING is broken in 17.14.3 Preview 1.0
- Bitfields with a bool type at the beginning are broken in C mode
- Compiler crash with fabsf in loop with optimization (/O2 /Ob /Ot) and /fp:precise
- constexpr pointer subtruction incorrect result
- Dynamic Debugging Null String Literals
- CLI C2668 Ambiguous Call in .NET 9 and later
- CLI rethrowing .NET exception crashes with .NET Framework 4.8 in x64
- C1001: Internal compiler error with 64-bit optimized builds of recent VIM using VS 17.14
- C1090: PDB API call failed, error code '3'
- C2034 (about overwide bit-fields) shouldn't be an error in C++ modes
- C4319 not emitted when compiling C code
- C4756 related issues in VS 2022
- colocated locals/parameters with overlapping lifetime 14.40.33814 and newer
- CTime throws error in timezones behind GMT. Changes in VS 15.8 produced a regression
- CTime::CTime fails with year 1900
- Dangling pointer in cpp file atlmfc Visual Studio occsite.cpp
- Default member initializers for bit-fields doesn't work when importing struct (or class) from a module
- Erroneous warning C5061: the use of a comma operator as a subscript expression has been deprecated
- EXE compiled with ASAN (and ASAN libs and DLLs sometimes hangs during exit
- Failure to optimize redundant DUP, SMOV sequence (ARM64)
- Fatal error C1001: Internal compiler error
- GC collects during method call on c++/cli ref class
- Guarded_by_ on a static local variable reports an annotation syntax error
- Illegal code is accepted due to rvalue reference leading to a recursion
- Improper concatenation of Unicode string literals
- Incorrect Code writing bitfield
- Incorrect initialization of nested aggregate member with unrelated member's value
- Incorrect instructions generated in AVX2
- Incorrect switch-case generation on arm64 target
- Incorrect template argument deduction for function called with argument this from out-of-line, ref qualified member function.
- Internal compiler error for ternary expression with non copyable type and throw
- internal compiler error in msvc 14.50.35717
- Internal compiler error in type_traits and operator bool in derived class
- Internal Compiler Error targeting ARM64 with VS 2026 18.0 Insiders
- Internal compiler error when enabling Code Analysis (/analyze) with variadic templates + SAL
- Internal compiler error when using OpenMP and try/catch in same function with /clr enabled
- Internal Compiler Error with C/C++ Optimizing Compiler Version 19.50.35710 for ARM64
- Internal Compiler Error with C/C++ Optimizing Compiler Version 19.50.35722 for ARM64
- Internal Compiler Error with C++ template template parameters and missing template keyword
- KASAN drivers fail to link referencing wide string functions (wcscat, wcscpy, wcsncpy)
- Keywords MUST NOT be translated in errors, warnings or suggestions.
- lambda-nested decltype of lambda triggers C2011
- Linker shouldn't warn for differing Arm64EC 'icall push thunks' that are equivalent
- Long octal formatted strings DoS the user's machine and cause C1060
- MFC static lib reports memory leak
- Microsoft.VCToolsVersion.v143.default.txt in 17.2 is not updated from 17.1
- Miscompilation of
svset_neonq(arm_neon_sve_bridge.h) with 19.50.35722 for ARM64- Miscompilation of AArch64 SVE loop (Version 19.50.35722 for ARM64)
- Missing destructor call when /Zc:nrvo is enabled (/O2 and /std:c++20)
- Misuse of _BitScanForward result can crash the compiler
- Modules: using-declarations leak from exported functions
- MSDIS is incorrectly decoding some xchg instructions as nop
- MSVC fails to bind a noexcept function to template instantiated with a noexcept signature
- MSVC fails to generate INCP (and friends) - Version 19.50.35722 for ARM64
- MSVC fails to generate MLA/MAD (Version 19.50.35722 for ARM64)
- MSVC fails to optimize LASTA idiom (Version 19.50.35722 for ARM64)
- MSVC generates an incorrect C6001 warning
- MSVC x64: _mm_shuffle_ps incorrectly optimized away after vcvtpd2ps at /O1 or /O2
- New CPP Dynamic Debugging feature occasionally causes link error 1136
- noexcept deduction is not working (CWG 2355)
- Not implemented mandatory copy elision in ternary operator
- Observing non-deterministic output when building UCRT for CHPE builds
- Optimisation is missed during UB-safe negation
- Performance regression on hash calculation with custom hash function when switching to msvc 17.14.7
- PGO instrumentation runtime crash on ARM64
- Placement operator new[] in <vcruntime.h> should be marked _MSVC_CONSTEXPR
- Poor x64 code generation for range for loop on member array
- Raw string literals have a limit of ~16380 characters
- SAL2 analyzer fails to handle shared_locks for Guarded_by annotation
- Sanitizer Coverage Blocklist Broken
- Sanitizer Coverage Produces Bad Codegen for C++ binaries
- SIMD Code optimization bug
- specialization of static template function requires static to be specified; clang warns it should not
- SSA CSE conflates different pointers
- Standard Library Modules: Random number machinery emits bogus error C2512
- Static local thread epoch has incorrect TLS offset when using /dynamicdeopt, resulting in crash
- std:c17 and unsized arrays != LOVE
- string literal concatenation with different encoding prefixes fails
- template function not found
- Ternary operator unnecessarily requires copy constructor
- Unexpected error C7595 reported
- Unexpected result while compiling consteval function
- Unused compile-time constant in x64 release build causes access violation in compiler during linking stage
- Using 17.14 toolset one of our projects generates a LNK1120 link error
- VCPP 17.6 preview 1 ARM64EC compiler ICEs when it encounters __vectorcall keyword
- VisualCppTools.14.50.35724 PdbCopy.Exe Arm64 Pdb Copy Crashes
- Volatile local variable is assumed to not change on x64
- Volatile variable not read after write
- VS 17.14.13 Bad codegen for x64 SIMD register not set up correctly
- VS18.0 Insiders MSVC ICE in MFC message map of a class with virtual base
- vs2022 optimization error
- VS2026 MSVC Warning C4865 lies about underlying type change with /Zc:enumTypes
- Windows SDK is missing #include
<utility>in atlcom.h- x64 compiler crash while compiling Mesa source file with optimizations
- x64 Emulator crash when an ARM64EC thread calls an x64 coroutine that calls another ARM64EC coroutine
- Copilot usage shows incorrect license and is missing data about premium requests
| Top bug fixes | From the community |
|---|---|
| ARM64 /EHa incorrect code motion | Feedback ticket |
| [Regression] arm64 specific crash in MSVC 19.50.35728 for ARM64 | Feedback ticket |
| Fix decltype of a parenthesized, mutable member inside a const-qualified member function. | |
| Correct an issue causing error C2106 when certain ternary expressions are used on the LHS of an assignment | |
| Fix a false C2106 error in certain initializations involving array-type members. | Feedback ticket |
| Updating the installer to include the latest servicing release of the 10.0.26100 Windows SDK (10.0.26100.8249) and the 10.0.28000 Windows SDK (10.0.28000.1839) |
Version 18.5.3
Released on May 12, 2026.
| Security advisories addressed | CVE | Description |
|---|---|---|
| SQLite Memory Corruption Vulnerability | CVE-2025-6965 | There exists a vulnerability in SQLite versions before 3.50.2 where the number of aggregate terms could exceed the number of columns available. This could lead to a memory corruption issue. |
| .NET Core Tampering Vulnerability | CVE-2026-32175 | A tampering vulnerability exists when .NET Core improperly handles specially crafted files. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-32177 | Heap-based buffer overflow in .NET allows an unauthorized attacker to elevate privileges locally. |
| .NET Elevation of Privilege Vulnerability | CVE-2026-35433 | Improper input validation in .NET allows an unauthorized attacker to elevate privileges locally. |
| ASP.NET Core Denial of Service Vulnerability | CVE-2026-42899 | Loop with unreachable exit condition ('infinite loop') in ASP.NET Core allows an unauthorized attacker to deny service over a network. |
Version 18.5.2
Released on April 28, 2026.
| Top bug fixes | From the community |
|---|---|
| [After upgrading to 18.5] Keyboard input may stop responding after using Find in Files | Feedback ticket |
| Latest install of VS 2026 Insiders (11709.129) is removing 14.50 build tools | Feedback ticket |
| Claude Opus 4.7 stopped working after the last update | Feedback ticket |
| [C++] Bad codegen for switch(*optional) in 64 bit in Visual Studio 2026 | Feedback ticket |
| Security advisories addressed | CVE | Description |
|---|---|---|
| ASP.NET Core Elevation of Privilege Vulnerability | CVE-2026-40372 | Improper verification of cryptographic signature in ASP.NET Core allows an authorized attacker to elevate privileges over a network. |
Version 18.5.1
Released on April 21, 2026.
| Top bug fixes | From the community |
|---|---|
| F# Empty string matching in code quotations causes FS045 | Feedback ticket |
| Adding UI to show model thinking process | Feedback ticket |
April Update 18.5.0
Released on April 14, 2026.
IDE
JSON editor schema updates
JSON editor updated to support more JSON schema features.
The JSON editor now supports newer JSON Schema specifications, giving you access to modern schema features like
$defs,$anchor, and improved vocabulary support.Previously, the editor only supported JSON Schema Draft 4 and Draft 7. You can now use:
This means better IntelliSense and validation when working with schemas that use the latest specifications.
GitHub Copilot
Use agent skills 📣
Copilot agents in Visual Studio now automatically discover and use skills defined in your repository or user profile.
Copilot agents in Visual Studio can now automatically discover skills. Agent skills are reusable instruction sets that teach agents how to handle specific tasks, like running a build pipeline, generating boilerplate, or following your team's coding standards. Define a skill once to save time and keep behavior consistent across your workflow. See awesome-copilot for community examples.
Skills are discovered from these locations:
- Workspace or project skills (stored in your repository):
.github/skills/,.claude/skills/,.agents/skills/.- Personal skills (stored in your user profile):
~/.copilot/skills/,~/.claude/skills/,~/.agents/skills/.To create a skill:
- Create a
.github/skills/directory for a workspace skill or a~/.copilot/skills/directory for a personal skill.- Create a subdirectory for your skill. Give each skill its own directory (for example,
.github/skills/github-issues/).- Create a
SKILL.mdfile in that directory. Follow the agentskills.io/specification format.- Optionally, add scripts, examples, or other resources to the skill directory.
After you create a skill in one of these directories, the agent decides when to use it. When a skill is active, it appears in chat so you know it's being applied.
More user-friendly flows for browsing and creating skills in Visual Studio are coming in upcoming releases. Try Agent Skills and share your feedback.
📣 See feature ticket to share your feedback and continue the conversation.
Cloud agent integration
Start new cloud agent sessions directly from Visual Studio.
Cloud agents, including Copilot coding agent, run on remote infrastructure for scalable, isolated execution. You can now start new cloud agent sessions directly from Visual Studio.
To try it, select Cloud from the agent picker in the Chat window, then share the work you want help with. The cloud agent first asks for permission to open an issue in your repository, then creates a pull request to address it. While it prepares the PR, you can keep working on other tasks in Visual Studio, or close Visual Studio and come back later. When the PR is ready, you'll get a notification and can review it in Visual Studio or in your browser.
Cloud agent in Visual Studio is currently powered by Copilot coding agent. To use it, make sure you're in a GitHub repository and that Copilot has permission to create issues in that repository. Try it out and let us know what you think.
Build your own custom agents 📣
Define custom agents tailored to your team's workflow using .agent.md files in your repository or user profile.
Custom agents help you build specialized Copilot agents for your team's workflow. They can use workspace awareness, code understanding, tools, your selected model, and MCP connections to external knowledge sources such as internal documentation, design systems, APIs, and databases.
Custom agents are defined as
.agent.mdfiles in your repository or user profile. Workspace or project-specific agents are stored under.github/agents/in your repository. For example:your-repo/ └── .github/ └── agents/ └── code-reviewer.agent.mdUser-level agents are stored in
%USERPROFILE%/.github/agents/by default. You can change this location in Tools → Options → Copilot Chat → Custom agents user directory.To create a custom agent, either create a
.agent.mdfile directly in one of the locations above, or click the + button in the agent picker and follow the prompts.
After you create a custom agent, it appears in the agent picker so you can use it anytime.
A few things to note:
- If you don't specify a model, the agent uses the model currently selected in the model picker.
- Tool names vary across GitHub Copilot platforms - check the tools available in Visual Studio to make sure your agent works as expected.
- The awesome-copilot repo has community-contributed agent configurations you can use as starting points. Verify tool names before you use them in Visual Studio.
📣 See feature ticket to share your feedback and continue the conversation.
Customizable Copilot keyboard shortcuts 📣
Customize the keyboard shortcuts for accepting Copilot inline suggestions.
You can now customize the keyboard shortcuts for accepting Copilot inline suggestions. You can change the key for accepting a full suggestion, the next word, or the next line in standard keyboard settings.
To set your preferred shortcuts:
- Go to Tools → Options → Environment → Keyboard.
- Search for the command you want to customize:
Edit.AcceptSuggestionEdit.AcceptNextWordInSuggestionEdit.AcceptNextLineInSuggestion- Remove the existing key binding.
- Assign a new shortcut under the Inline Suggestion Active scope.
For example, the image below changes the default accept shortcut from Tab to Ctrl+Tab. The new shortcut appears throughout the hint bar.
📣 See feature ticket to share your feedback and continue the conversation.
IntelliSense takes priority over Copilot 📣
IntelliSense now takes priority over Copilot completions so you only see one suggestion at a time.
We heard your feedback: seeing IntelliSense and Copilot completions at the same time can be distracting. The editor now prioritizes the IntelliSense list and shows only one suggestion at a time.
When IntelliSense is active, Visual Studio temporarily suppresses Copilot completions so you can focus on your current selection. After you dismiss or commit the IntelliSense selection, Copilot completions resume. This behavior is now enabled by default. Update your VS to the latest version and code as you normally do. Please let us know any feedback you have!
📣 See feature ticket to share your feedback and continue the conversation.
New chat history panel 📣
Browse and navigate your Copilot chat sessions with the new chat history panel.
The chat history experience has moved from a simple dropdown to a dedicated panel. You now see each chat title, a preview of the latest message, and when the session was last updated, so you can quickly find and reopen past conversations.
More chat history management capabilities are on the roadmap. We'd love your feedback, so please file a ticket on Developer Community and tell us what you want to see next.
📣 See feature ticket to share your feedback and continue the conversation.
Debugging & diagnostics
Auto-Decoding in Text Visualizer
Easily decode text with Copilot.
We are introducing the Auto-detect and format feature within the Text Visualizer. This enhancement is designed to streamline your debugging workflow by automatically identifying the encoding or compression format of a string and applying the necessary transformations in a single click.
Simply click the Auto-detect and format button in the top-right of the Text Visualizer. Powered by Copilot, this feature instantly identifies and converts complex data (like GZip-compressed Base64) into readable text removing the need for manual decoding or external tools.
Agentic Issue to Resolution
Agentic Bug Resolution helps you find and fix bugs with runtime-proofed, interactive AI guidance.
We are introducing a new Debugger Agent workflow in Visual Studio that validates bugs against real runtime behavior instead of relying on static analysis guesses. The experience walks you through a complete agentic loop from understanding and reproducing the issue, to instrumenting the application, isolating the root cause, and validating the fix through live execution.
You can start from an issue in GitHub or Azure DevOps, or simply describe the bug or code behavior in natural language. The Debugger Agent uses this input to map the problem directly to your local source and guide you through resolution. Unlike static approaches, you can interact with the agent during the debugging process to provide more input, discuss your theory, or refine the fix in real time.
How the agentic loop works:
- Context Injection – Provide an issue link or describe the bug in Debugger Mode in Copilot Chat (you can switch modes using the dropdown in the lower-left corner of the chat). The agent connects the report to your local code.
- Autonomous Reproducer – The agent analyzes the bug description and, if reproduction steps are missing, creates a minimal scenario to trigger the failure automatically.
- Hypothesis & Instrumentation – It generates failure hypotheses and instruments your app with tracepoints and conditional breakpoints to capture runtime state.
- Runtime Validation – The agent runs the debug session and analyzes live telemetry to isolate the root cause.
- Targeted Correction – It suggests a precise fix at the exact failure point rather than broad refactoring.
- Final Human Validation – You rerun the scenario and confirm the fix in the live environment alongside the agent.
C++
C++ code editing tools for agent mode
C++ Code Editing Tools for GitHub Copilot Agent Mode are now available by default.











































@BuildPerfCpp in GitHub Copilot chat to optimize your build time" />









