VS Code February events – Agent Sessions Day on Feb 19th
Dismiss this update
Refactoring and making updates in C++ code often requires tracking down edits across multiple files and having knowledge of your build configuration.
GitHub Copilot Chat can use the C++ tools built into VS Code to provide context-aware assistance for your C++ projects. By using code understanding and CMake tools, Copilot can understand your codebase structure, dependencies, and build configurations to give you more accurate, helpful, and fast responses.
This guide covers the available tools and how to use them effectively with AI agents to accomplish tasks such as:
These extensions are available as part of the C/C++ Extension Pack.
You can enable/disable any of these tools at any point by navigating to the Tools option in chat and selecting the respective tool you'd like to enable/disable.

Only enable relevant tools to your development workflow to avoid context bloat. You can disable other tools, such as tools installed through MCP, via the same dialog.
The C++ extension provides tools that use language services to give Copilot Chat deep understanding of your code structure, symbols, and relationships. Ensure you have configured with IntelliSense to take advantage of these tools.
To enable these tools, select the Enable Cpp Code Editing Tools setting in your VS Code user settings.

GetSymbolInfo_CppTools)What it does: Retrieves detailed information about symbols (functions, classes, variables, etc.) in your codebase, including their definitions, types, and documentation.
Example Use Case: Optimize memory performance and ensure non-breaking changes

GetSymbolReferences_CppTools)What it does: Finds all references to a specific symbol throughout your codebase, showing where functions, classes, or variables are used.
Example Use Case: Add additional functionality to existing functions

You can control the maximum number of symbol references returned by the tool by adjusting the symbol references limit setting in VS Code.

GetSymbolCallHierarchy_CppTools)What it does: Shows the call hierarchy for functions, revealing both incoming calls (who calls this function) and outgoing calls (what this function calls).
Example Use Case: Dependency analysis for module migration

CMake tools allow Copilot Chat to understand your build configuration, targets, and dependencies, enabling build-aware assistance.
Build_CMakeTools)What it does: Builds your CMake project using the current configuration and selected target.
Example Use Case: Resolving build errors

RunCTest_CMakeTools)What it does: Runs test suite defined by CTest in your project
Example Use Case: Fix code according to unit tests

getConfig() function" rather than "make this faster")/init to generate instructions for your project.Symbol Information: Use when you need to understand the structure of existing code or verify properties before making changes.
Symbol References: Use when refactoring to identify all usages and ensure changes don't break existing code.
Call Hierarchy: Use when analyzing dependencies, understanding call chains, or planning module migrations.
CMake Build: Use when troubleshooting build issues or verifying that changes compile successfully.
CTest: Use when validating changes against your test suite or debugging test failures.