Extensions let you implement capabilities that go beyond prompting the agent. For example, in GitHub Copilot CLI, an extension can add tools and slash commands backed by code running alongside your session.
These extensions are distinct from the retired GitHub App-based Copilot Extensions integration. They are also distinct from IDE extensions, such as the Copilot extension you install in an editor.
Where you can use extensions
You can use extensions in:
- The GitHub Copilot app.
- GitHub Copilot CLI.
For customization options in the GitHub Copilot app, see Customizing the GitHub Copilot app.
Note
GitHub Copilot CLI extensions are currently an experimental feature and are subject to change.
Choosing an extension scope
Choose an extension's scope based on who needs it:
- Repository extensions keep project-specific capabilities with the project so you can share them with collaborators.
- Personal extensions provide capabilities for your own workflows.
- Plugin extensions are supplied as part of an installed plugin, alongside other customizations.
To create an extension for Copilot CLI, see Creating extensions for GitHub Copilot CLI.
Extensions in Copilot CLI
An extension for Copilot CLI is a JavaScript module that runs as a separate Node.js process alongside an interactive session. It connects to the session through the extension SDK bundled with Copilot CLI.
An extension can add:
- Tools that the agent can call while working on your request.
- Slash commands that you invoke yourself.
- Session-aware behavior, such as observing events and keeping state across tool calls.
Use an extension when a capability needs code that stays active during the session. For example, an extension can track tool-call timings across a session and expose the totals through a tool.
Copilot CLI also lets you control whether extensions run and whether the agent can manage them. For the extension modes and their effects, see Extension modes.
Choosing between extensions and other customizations
The distinction is the capability you need, not just where you install it:
| Need | Start with |
|---|---|
| A repeatable workflow expressed as instructions and resources | An agent skill |
| Access to tools exposed by an external service | An MCP server |
| A command at a defined agent lifecycle event | A hook |
| Session-aware tools or slash commands implemented in JavaScript | An extension for Copilot CLI |
| A distributable bundle of related capabilities | A plugin |
A plugin can distribute extensions, but the surface determines how those extensions are used.
Warning
Extensions for Copilot CLI execute on your computer with your privileges. Only load extension code that you trust, just as you would for any other script you did not write yourself.
Next steps
To compare extensions with the other customization options, see Comparing Copilot customization features.