GitHub Says the C++ Language Server in Copilot CLI Now Configures MSBuild Projects Automatically, but the Repository Guide, Last Changed Oct. 21, Still Describes It as a Feature-Flagged Experiment on Windows That Is Off by Default and Runs Only at Startup
On November 10, 2026, GitHub said the Microsoft C++ Language Server for Copilot CLI now bundles its MSBuild compile commands extractor and invokes it automatically when the server starts on project open, so an agent no longer has to find and run a setup skill; GitHub says generation is deterministic and reduces setup token use, but gives no figures. The repository's guide, last changed October 21, says automatic MSBuild configuration is disabled by default, feature-flagged, described for Windows and runs only at startup, and the README still tells MSBuild users to run the skill. The sources do not say which is current. Per-user state.json settings can turn it off or set a timeout. CMake and other builds still need their own compile_commands.json or a skill. The server is in preview, needs a Copilot subscription, and does not support rename, formatting or text document sync.
On November 10, 2026, GitHub's changelog announced that the Microsoft C++ Language Server for GitHub Copilot CLI now bundles its MSBuild compile commands extractor and invokes it automatically. According to the post, an agent no longer needs to discover and run a separate configuration skill before it can get precise code intelligence for an MSBuild-based C++ project. This report uses that changelog post and three pages in the microsoft/cpp-language-server repository: the README, the guide to generating compile commands, and the table of supported LSP features. It did not install the plugin, open a project or run the extractor. It also did not read the image in the post, the earlier July 2 changelog post that it links to, or the other linked documentation pages.
The post describes the old setup and what changed. Before, go-to-definition, find references and other language server features for an MSBuild-based C++ project needed one of two things: your own compile_commands.json file, or Copilot finding and running a configuration skill to generate a compilation database. GitHub says that extra discovery step added setup time and consumed tokens before Copilot could start working with your code. The post lists three changes. The compile commands extractor is bundled with the language server, so it is always available. Copilot invokes the extractor when it starts the language server on project open, with no manual or agent-driven setup skill. And compilation database generation for MSBuild projects is deterministic, which GitHub says reduces setup token usage. The post gives no figures for time or tokens saved, so those benefits are GitHub's own description, not a measured result.
The repository's guide explains why the file matters. The language server uses a compile_commands.json file to understand how each translation unit in a project is built. Compiler options, include paths and preprocessor definitions all affect how the server interprets source files, and the guide says this compilation database supplies the build context needed for accurate Go to Definition, Find References and other semantic code intelligence. Its example: when you ask Copilot to find a function's definition or identify its callers, the language server uses that build context to resolve symbol relationships.
The guide describes the automatic path with conditions that the changelog post does not mention. In its MSBuild section, a note says automatic MSBuild configuration is disabled by default and is available only when the experiment is enabled for you through feature flagging. The same section describes it for Windows: when the experiment is enabled, the language server runs its bundled extractor during startup when compile_commands.json needs to be generated. The README's quick start also still tells users of CMake or MSBuild (vcxproj) projects to run the generate-compile-commands skill. The repository page shows the guide's latest commit on October 21, 2026 and the README's on November 3, 2026, both before the November 10 post. The sources do not say whether the post means the experiment is now on for everyone or whether the guide is out of date, and this report does not decide it. They also do not say how a user can check whether the experiment is enabled for them.
The guide also sets out what the automatic path does not do. It runs at startup, not in response to project changes during a CLI session. If the project changes during a session, the guide says to use the Copilot CLI skill to regenerate compile_commands.json. It says file-system watching to detect such changes is planned for a future update, and it gives no date for that.
Two settings control the automatic extraction, according to the guide. They live in a per-user state.json file on Windows, at %LOCALAPPDATA%\mscppls\state.json. They apply to all repositories for that user and do not belong in a project's cpp-lsp.json or in Copilot CLI's lsp.json. The steps are to close running Copilot CLI sessions that use the C++ language server, add or update the properties in the file while keeping all other properties, and restart Copilot CLI. Setting auto_generate_compile_commands_for_msbuild to false disables automatic extraction. Setting it to true re-enables it, but it does not bypass feature flagging: the experiment must also be enabled. msbuild_extractor_timeout_seconds sets a timeout in seconds and applies only when automatic extraction is enabled; the guide's example uses 120. Changes take effect on the next language-server startup. The guide warns that the state file can also contain authentication data and other user settings, so it should not be replaced with only the example, committed to a repository or attached to a public issue.
Other build systems still need your own compile_commands.json or a skill that generates one, the post says. For CMake, the post points to the generate compile commands skill from the earlier release, invoked by asking Copilot CLI to "load project". The guide adds that CMake projects using the Ninja or Makefile generators can create the file by adding -DCMAKE_EXPORT_COMPILE_COMMANDS=ON to the configuration command, and that projects that use other generators should first check whether a one-off configuration with Ninja or Makefile is possible. For MSBuild users without the experiment, or who turn it off, the guide points to the skill or to a sample application, and it says the sample may need adaptation for complex projects. For custom builds, the guide recommends saving the steps in a project-specific skill so that the process is reproducible, with the setup-cpp-language-server skill as a starting template.
The README describes how to start. It says the language server is in preview and may change in future releases, and that it brings the same C++ code intelligence used in Visual Studio and VS Code to GitHub Copilot CLI on Windows, macOS and Linux. The prerequisites are an active GitHub Copilot subscription, GitHub Copilot CLI with session-directory support (tested with prerelease 1.0.106-5), and npm. The quick start has six steps: install the plugin from within Copilot CLI with /plugin install cpp-language-server@copilot-plugins, which bundles the server and auto-updates it; run npx @microsoft/cpp-language-server --accept-eula --login to accept the license terms and log in to GitHub; create the compile_commands.json file; launch Copilot CLI from the project directory; run /lsp show, which should list a "cpp" server; and then use Copilot CLI as usual. The README suggests adding phrases like "use LSP tools" to a prompt to nudge the agent to use the tools.
The repository's feature table shows which requests the server answers. Supported: hover, completion, signature help, Go to Definition, Go to Declaration, Go to Type Definition, Find References, document symbols, workspace symbols, call hierarchy, folding ranges, pull diagnostics and workspace folders. Not supported: rename, code actions, code lens, document highlight, and document, range and on-type formatting. Text document sync is also not supported. The table's note says the AI agent is expected to update files on disk before it invokes LSP operations. This report reads the table to mean that the server does not rename symbols and does not see edits that are not yet on disk.
On data and scope, the README says the software may collect information about you and your use of it and send it to Microsoft, and that telemetry can be turned off as described in the repository; it links to a command line options page that this report did not read. The post says an active GitHub Copilot subscription is required. The sources support a narrow claim. On November 10, GitHub described automatic MSBuild setup for the C++ language server in Copilot CLI. The repository's own guide, last changed before that date, describes the same feature as an experiment on Windows that is off by default. No source gives measurements of setup time or token use.
Sources
FAQ
Does the C++ language server now set up MSBuild projects automatically?
GitHub's November 10 post says the bundled extractor runs automatically on project open. The repository's guide, last changed October 21, says automatic MSBuild configuration is an experiment on Windows, off by default and enabled for you through feature flagging. The sources do not say which is current or how to check whether it is on.
How do I turn off automatic MSBuild extraction or change its timeout?
Per the repository guide, on Windows edit the per-user state.json and keep its other properties. Setting auto_generate_compile_commands_for_msbuild to false disables extraction; msbuild_extractor_timeout_seconds sets a timeout that applies only while extraction is enabled. Restart Copilot CLI afterwards. The file can hold authentication data, so never commit or share it.
Which LSP features does the server not support?
The repository's feature table lists rename, code actions, code lens, document highlight, and document, range and on-type formatting as unsupported. Text document sync is also unsupported, and the table says the agent is expected to update files on disk before calling LSP operations. Hover, completion, Go to Definition, Find References and call hierarchy are supported.