1
0
mirror of synced 2025-12-19 09:57:42 -05:00

[2025-11-10] Remove Copilot Extensions from the docs (#58331)

This commit is contained in:
Sunbrye Ly
2025-11-10 13:16:19 -08:00
committed by GitHub
parent a5db857ebe
commit 8dbf0f9bf2
58 changed files with 64 additions and 2293 deletions

View File

@@ -41,7 +41,7 @@ All listings should meet the following requirements, regardless of whether they
* Listings must provide a method to receive support through a valid support link and/or a support email address.
* All additional links in a listing, such as Terms of Service or a Status Page, must work and resolve to a relevant page.
* Apps must provide value to customers and integrate with the platform in some way beyond authentication.
* Apps must be publicly available in {% data variables.product.prodname_marketplace %} and cannot be in {% data variables.release-phases.public_preview %} or available by invite only, with the exception of {% data variables.copilot.copilot_extensions_short %}.
* Apps must be publicly available in {% data variables.product.prodname_marketplace %} and cannot be in {% data variables.release-phases.public_preview %} or available by invite only.
* Apps must have webhook events set up to notify the publisher of any plan changes or cancellations using the {% data variables.product.prodname_marketplace %} API. For more information, see [AUTOTITLE](/apps/github-marketplace/using-the-github-marketplace-api-in-your-app).
For more information on providing a good customer experience, see [AUTOTITLE](/apps/github-marketplace/creating-apps-for-github-marketplace/customer-experience-best-practices-for-apps).
@@ -58,23 +58,6 @@ To protect your customers, we recommend that you also follow security best pract
{% data reusables.marketplace.free-apps-encouraged %}
## Requirements for {% data variables.copilot.copilot_extensions %}
{% data variables.copilot.copilot_extensions_short %} are essentially {% data variables.product.prodname_github_apps %} with additional read access to {% data variables.copilot.copilot_chat_short %}, integration with the {% data variables.product.prodname_copilot_short %} API, and optional integration into other LLMs.
To publish an extension, it must be owned by an organization account with Verified Creator status. For more information about the verification process or transferring ownership of your app, see [AUTOTITLE](/apps/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization).
The requirements to publish a {% data variables.copilot.copilot_extension_short %} are the same as the requirements for free apps, with the following exceptions:
* Your extension must provide a clear and descriptive response to a prompt like "What can you do?" or "List your capabilities".
* Your extension can be in {% data variables.release-phases.public_preview %} as long as that is clearly communicated in the listing description. If you are using a waitlist, you must also include a link to sign up at the top of the description. Someone from the {% data variables.product.github %} review team will join the waitlist and email your technical lead requesting access for testing.
* You must include links to two videos that demonstrate the following:
* A few example prompts and responses from your extension
* A net new user installing, authenticating, and sending their first prompt to your extension
These videos are private to {% data variables.product.github %} and are used solely for reviewing your listing submission. The videos can be brief, and you don't need to edit them.
* Your extension must provide a stable and reliable user experience, and be able to perform the capabilities listed in the description.
* You must provide a pathway for new users to install, set up, and authorize your extension with minimal friction. If the {% data variables.product.github %} review team is not able to successfully test your extension, it will not be approved for publishing.
## Requirements for paid apps
To publish a paid plan for your app on the {% data variables.product.prodname_marketplace %}, your app must be owned by an organization that is a verified publisher. For more information about the verification process or transferring ownership of your app, see [AUTOTITLE](/apps/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization).

View File

@@ -44,12 +44,6 @@ If you're interested in creating an app for {% data variables.product.prodname_m
{% data reusables.marketplace.github_apps_preferred %}, although you can list both OAuth and {% data variables.product.prodname_github_apps %} in {% data variables.product.prodname_marketplace %}. For more information, see [AUTOTITLE](/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps) and [AUTOTITLE](/apps/creating-github-apps/about-creating-github-apps/migrating-oauth-apps-to-github-apps).
### {% data variables.copilot.copilot_extensions %}
{% data reusables.copilot.copilot-extensions.copilot-extensions-intro %}
To learn more about {% data variables.copilot.copilot_extensions_short %}, see [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/using-github-copilot-extensions).
## Publishing an app to {% data variables.product.prodname_marketplace %} overview
When you have finished creating your app, you can share it with other users by publishing it to {% data variables.product.prodname_marketplace %}. In summary, the process is:

View File

@@ -44,7 +44,6 @@ The following {% data variables.product.prodname_copilot_short %} features can u
| [{% data variables.copilot.copilot_cli_short %}](/copilot/concepts/agents/about-copilot-cli) | Each prompt to {% data variables.copilot.copilot_cli_short %} uses **one premium request** with the default model. For other models, this is multiplied by the model's rate. | {% data variables.product.prodname_copilot_short %} premium requests |
| [{% data variables.product.prodname_copilot_short %} code review](/copilot/using-github-copilot/code-review/using-copilot-code-review) | When you assign {% data variables.product.prodname_copilot_short %} as a reviewer for a pull request, **one premium request** is used each time {% data variables.product.prodname_copilot_short %} posts comments to the pull request. | {% data variables.product.prodname_copilot_short %} premium requests |
| [{% data variables.copilot.copilot_coding_agent %}](/copilot/concepts/about-copilot-coding-agent) | {% data variables.copilot.copilot_coding_agent %} uses **one premium request** per session, plus **one premium request** for each real-time steering comment made during an active session. A session begins when you ask {% data variables.product.prodname_copilot_short %} to create a pull request or make one or more changes to an existing pull request. | {% data variables.copilot.copilot_coding_agent %} premium requests |
| [{% data variables.copilot.copilot_extensions_short %}](/copilot/concepts/copilot-extensions/about-copilot-extensions) | {% data variables.copilot.copilot_extensions_short %} uses **one premium request** per user prompt, multiplied by the model's rate. | {% data variables.product.prodname_copilot_short %} premium requests |
| [{% data variables.copilot.copilot_spaces %}](/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces) | {% data variables.copilot.copilot_spaces %} uses **one premium request** per user prompt, multiplied by the model's rate. | {% data variables.product.prodname_copilot_short %} premium requests |
| [{% data variables.product.prodname_spark_short %}](/copilot/tutorials/building-ai-app-prototypes) | Each prompt to {% data variables.product.prodname_spark_short %} uses a fixed rate of **four premium requests**. | {% data variables.product.prodname_spark_short %} premium requests |
| [{% data variables.product.prodname_openai_codex %} integration](/copilot/concepts/agents/openai-codex) | While in preview, each prompt to {% data variables.product.prodname_openai_codex %} uses **one premium request** multiplied by the model multiplier rates. | {% data variables.product.prodname_copilot_short %} premium requests |

View File

@@ -58,10 +58,6 @@ MCP is an open standard that defines how applications share context with large l
You can configure MCP servers to provide context to {% data variables.copilot.copilot_chat_short %} in various IDEs, such as {% data variables.product.prodname_vscode %} and JetBrains IDEs. For {% data variables.copilot.copilot_chat_dotcom_short %}, the {% data variables.product.github %} MCP server is automatically configured, enabling {% data variables.copilot.copilot_chat_short %} to perform a limited set of tasks, at your request, such as creating branches or merging pull requests. For more information, see [AUTOTITLE](/copilot/how-tos/context/model-context-protocol/extending-copilot-chat-with-mcp) and [AUTOTITLE](/copilot/how-tos/context/model-context-protocol/using-the-github-mcp-server).
### Extending {% data variables.copilot.copilot_chat_short %} with external tools
{% data reusables.copilot.copilot-extensions.extending-copilot-chat %}
### Further reading
* [AUTOTITLE](/copilot/how-tos/chat-with-copilot) how-to guides

View File

@@ -1,93 +0,0 @@
---
title: About GitHub Copilot Extensions
shortTitle: Copilot extensions
intro: 'Learn about {% data variables.copilot.copilot_extensions_short %}.'
allowTitleToDifferFromFilename: true
product: '{% data reusables.gated-features.copilot-extensions %}'
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/reference/copilot-extensions/copilot-extensions-faq
- /copilot/reference/copilot-extensions
- /copilot/concepts/copilot-extensions/about-copilot-extensions
- /copilot/concepts/copilot-extensions/about-extensions
contentType: concepts
category:
- Learn about Copilot
---
<!-- expires 2025-11-19 -->
<!-- When this expires, check with the stakeholder for release #6165 if the knowledge bases content can be deleted -->
{% data reusables.copilot.copilot-extensions.extensions-retirement %}
<!-- end expires 2025-11-19 -->
## About {% data variables.copilot.copilot_extensions_short %}
{% data reusables.copilot.copilot-extensions.about-copilot-extensions %}
## Supported clients and IDEs
{% data reusables.copilot.copilot-extensions.supported-clients-and-ides-table %}
## Visibility of {% data variables.copilot.copilot_extensions %}
{% data variables.copilot.copilot_extensions %} can be private, public and shareable, or public and listed on the {% data variables.product.prodname_marketplace %}. Which visibility option you choose will depend on your use case and the audience you are targeting.
* Private extensions are often preferred by large enterprises or companies that:
* Want more customization and controls over data access
* Need to integrate with a large volume of internal documents and databases
* Have strict security policies making it difficult to authorize permissions for third-parties
* Public extensions are suitable for:
* Open-source projects
* Collaborative development and use across organizations within an enterprise
* Sharing your tool and getting feedback before publishing to the {% data variables.product.prodname_marketplace %}
* {% data variables.product.prodname_marketplace %} extensions are ideal for third-parties that want to:
* Offer their service to a broader audience
* Integrate their tool into the developer workflow on {% data variables.product.company_short %} and the IDE
* Leverage the {% data variables.product.company_short %} ecosystem to raise awareness for their product
## {% data variables.copilot.copilot_extensions %} permissions
Permissions vary by extension, depending on the level of authorization that the extension requires in order to respond to your query. You can view the required permissions on the extensions installation page, located after the billing information step and before the install and authorize step.
**For extension users**: At a minimum, the **{% data variables.copilot.copilot_chat_short %}** permissions must be set to "Read-only". Additional permissions may include executing write actions on other surfaces and authorizing read access to repository and organization level data in {% data variables.product.github %}.
**For extension creators**: In addition to the above, you may also request local context from a users editor to further tailor responses. To do so, the **{% data variables.product.prodname_copilot_short %} Editor Context** permissions must be set to "Read-only". Users will be notified to provide the required authorization.
For more information on {% data variables.product.prodname_github_app %} permissions, see [AUTOTITLE](/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app).
### Granting permissions to access organization resources
Users with an individual {% data variables.product.prodname_copilot_short %} subscription can install and use {% data variables.copilot.copilot_extensions_short %}. Users with a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} subscription need an organization administrator to enable this feature.
Only organization administrators can grant permissions for {% data variables.copilot.copilot_extensions_short %} to access organization resources.
To grant organization members access, the organization administrator must:
* Install the extension
* Grant the extension permission to access specific repositories
* Authorize access for all, or specific repositories
### Controlling access at the enterprise level
If you are an enterprise administrator, you can disable {% data variables.copilot.copilot_extensions_short %} across your enterprise by setting the **{% data variables.copilot.copilot_extensions_short %}** policy to "Disabled". The "No Policy" setting allows organization administrators to set their own policy.
No, there is no allowlist or blocklist at the enterprise level.
## Sharing data with {% data variables.copilot.copilot_extensions_short %}
The following data is shared when you interact with {% data variables.copilot.copilot_extensions_short %}:
* Data attached to your account and {% data variables.copilot.copilot_chat_short %} usage, such as {% data variables.product.github %} user ID, and timestamps of messages.
* Past messages within the chat thread where you are invoking an extension. Only one extension can be used per thread, preventing data sharing across extensions. The data retention period for thread context is 30 days.
* Any additional organization and repository data that is authorized for the extension by your organization administrator. Administrators installing extensions must approve access to the required permissions prior to completing installation.
* For {% data variables.copilot.copilot_chat_dotcom_short %}, if your administrator has approved the extension to access repository or organization metadata, that data will be shared as well.
## Further reading
* [AUTOTITLE](/copilot/concepts/extensions/build-extensions)

View File

@@ -13,7 +13,6 @@ children:
- /repository-indexing
- /content-exclusion
- /knowledge-bases
- /copilot-extensions
contentType: concepts
---

View File

@@ -10,6 +10,23 @@ topics:
contentType: concepts
redirect_from:
- /copilot/concepts/about-mcp
- /copilot/concepts/extensions/agents
- /copilot/concepts/extensions/build-extensions
- /copilot/concepts/extensions/skillsets
- /copilot/concepts/extensions/openid-connect
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-agent/use-copilots-llm
- /copilot/how-tos/use-copilot-extensions/create-a-copilot-extension/create-github-app
- /copilot/how-tos/use-copilot-extensions/build-copilot-skillsets
- /copilot/how-tos/use-copilot-extensions/debug-copilot-extension
- /copilot/how-tos/use-copilot-extensions/manage-extension-availability
- /copilot/how-tos/use-copilot-extensions/set-up-oidc
- /copilot/how-tos/provide-context/install-copilot-extensions
- /copilot/concepts/extensions
- /copilot/how-tos/use-copilot-extensions/create-a-copilot-extension
- /copilot/how-tos/use-copilot-extensions
- /copilot/concepts/context/copilot-extensions
- /copilot/reference/extensions-glossary
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-agent
category:
- Learn about Copilot
---

View File

@@ -1,29 +0,0 @@
---
title: About agents for GitHub Copilot Extensions
shortTitle: Agents
intro: 'Learn what {% data variables.copilot.copilot_agents %} are and how they can enhance your {% data variables.copilot.copilot_chat %} experience.'
allowTitleToDifferFromFilename: true
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents
- /copilot/concepts/build-copilot-extensions/agents-for-copilot-extensions
- /copilot/concepts/copilot-extensions/agents-for-copilot-extensions
- /copilot/concepts/copilot-extensions/agents
contentType: concepts
category:
- Learn about Copilot
---
{% data variables.copilot.copilot_agents_short %} are custom tools embedded in {% data variables.copilot.copilot_extensions_short %}. They integrate with {% data variables.copilot.copilot_chat_short %} to provide additional functionalities tailored to specific needs. {% data variables.copilot.copilot_agents_short %} can perform various tasks such as querying documentation, retrieving data, executing specific actions, or providing AI-assisted coding suggestions. They enhance the capabilities of {% data variables.product.prodname_copilot %} by allowing developers to build and integrate custom features directly into the {% data variables.copilot.copilot_chat_short %} interface.
To use a {% data variables.copilot.copilot_agent_short %} in {% data variables.copilot.copilot_chat_short %}, it must be associated with a {% data variables.product.prodname_github_app %}. This combination of a {% data variables.product.prodname_github_app %} and a {% data variables.copilot.copilot_agent_short %} is what we refer to as a {% data variables.copilot.copilot_extension %}. For more information on {% data variables.copilot.copilot_extensions_short %}, see [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
Any {% data variables.product.company_short %} user can create a {% data variables.copilot.copilot_extension_short %} by building a {% data variables.copilot.copilot_agent_short %} and associating it with a {% data variables.product.prodname_github_app %}. For more information on creating a {% data variables.copilot.copilot_extension_short %}, see [AUTOTITLE](/copilot/building-copilot-extensions/setting-up-copilot-extensions).
## Further reading
* [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-the-copilot-platform)
* [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github)

View File

@@ -1,105 +0,0 @@
---
title: About building GitHub Copilot Extensions
shortTitle: Build extensions
intro: Learn about developing {% data variables.copilot.copilot_extensions_short %}.
allowTitleToDifferFromFilename: true
product: '{% data reusables.gated-features.copilot-extensions %}'
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/building-copilot-extensions/about-building-copilot-extensions
- /copilot/concepts/build-copilot-extensions/about-building-copilot-extensions
- /copilot/concepts/copilot-extensions/about-building-copilot-extensions
- /copilot/concepts/extensions/about-extensions
contentType: concepts
category:
- Integrate Copilot with your tools
---
<!-- expires 2025-11-19 -->
<!-- When this expires, check with the stakeholder for release #6165 if the knowledge bases content can be deleted -->
{% data reusables.copilot.copilot-extensions.extensions-retirement %}
<!-- end expires 2025-11-19 -->
## About building {% data variables.copilot.copilot_extensions_short %}
{% data reusables.copilot.copilot-extensions.about-copilot-extensions %}
## About skillsets and agents
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
For more information about skillsets, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets).
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
## About context passing
You can allow your {% data variables.copilot.copilot_extension_short %} to receive context from the editor, such as the currently opened file, by enabling the **Read-only** access level for the "{% data variables.product.prodname_copilot_short %} Editor Context" permission in your {% data variables.product.prodname_github_app %} settings. See step 10 of [Configuring your {% data variables.product.prodname_github_app %}](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-extension#configuring-your-github-app).
The {% data variables.copilot.copilot_extensibility_platform %} automatically handles messaging when implicit and explicit context is unavailable or unauthorized. To enable context passing, you are required to request permissions from users. To enable context passing, you are required to:
* Update your APIs to handle new reference types.
* Request permissions from users. When requesting permissions, follow these best practices:
* Clearly communicate what context you need and what you need it for.
* Implement appropriate error handling for unavailable context that your own application logic and API calls.
* If context is unavailable, provide value where possible without this data.
* Request only the minimum required permissions for your extension.
Context passing respects content exclusions, which refers to any files listed in your context exclusion settings, including files that begin with `.`.
For more information about context passing, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/context-passing-for-your-agent).
## Using APIs in {% data variables.copilot.copilot_extensions %}
Building {% data variables.copilot.copilot_extensions %} requires using the {% data variables.product.github %} API. Optionally, the {% data variables.product.prodname_copilot_short %} API can be used for additional capabilities. For details on request and response formatting, see the [OpenAI API documentation](https://platform.openai.com/docs/api-reference/chat).
> [!NOTE] The {% data variables.product.prodname_copilot_short %} API is available for {% data variables.copilot.copilot_extension_short %} builders, but only {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_vscode_shortname %} Chat extensions can be used to access these endpoints.
## Resources for building {% data variables.copilot.copilot_extensions %}
{% data variables.product.company_short %} provides a comprehensive toolkit for extension builders, with code samples, a CLI debugging tool, quickstart SDKs, and a user feedback repository. For more information, see the [copilot-extensions](https://github.com/orgs/copilot-extensions/) organization on {% data variables.product.company_short %}.
Before creating your own {% data variables.copilot.copilot_extension %} from scratch, you may want to explore an existing {% data variables.copilot.copilot_agent_short %}, then integrate it with a {% data variables.product.prodname_github_app %} to see how it works. {% data variables.product.company_short %} provides a few example {% data variables.copilot.copilot_agents_short %} that you can clone and use as the basis for your own {% data variables.copilot.copilot_extension %}:
* **Blackbeard:** A simple {% data variables.copilot.copilot_agent_short %} that responds to requests like a pirate, using {% data variables.product.prodname_copilot_short %}'s LLM API and special system prompts. It is a good starting point for learning how to build a {% data variables.copilot.copilot_extension %}. For more information, see the [Blackbeard {% data variables.copilot.copilot_extension_short %}](https://github.com/copilot-extensions/blackbeard-extension).
* **{% data variables.product.prodname_github_models %}:** A more complex {% data variables.copilot.copilot_agent_short %} that lets you ask about and interact with various LLMs listed on the {% data variables.product.prodname_marketplace %} from within {% data variables.copilot.copilot_chat_short %}. For more information, see the [{% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %}](https://github.com/copilot-extensions/github-models-extension).
> [!NOTE] {% data variables.product.prodname_github_models %} are in {% data variables.release-phases.public_preview %} and subject to change.
* **Function calling:** an example agent written in Go that demonstrates function calling and confirmation dialogues. For more information, see the [Function calling extension](https://github.com/copilot-extensions/function-calling-extension).
* **RAG extension:** an example agent written in Go that demonstrates a simple implementation of retrieval augmented generation. For more information, see the [RAG extension](https://github.com/copilot-extensions/rag-extension).
* **Preview SDK:** An SDK that simplifies the process of building {% data variables.copilot.copilot_extensions %} by handling request verification, response formatting, and API interactions. It allows builders to focus on their extension's core functionality rather than boilerplate, by streamlining the integration of tools, APIs, and data sources into {% data variables.copilot.copilot_chat_short %}. For more information, see the [Preview SDK](https://github.com/copilot-extensions/preview-sdk.js).
## About building {% data variables.copilot.copilot_vsc_chat_participants %}
> [!NOTE] The {% data variables.product.github %} documentation focuses on building {% data variables.copilot.copilot_extensions %}, not {% data variables.copilot.copilot_vsc_chat_participants %}.
You can build a {% data variables.copilot.copilot_extension_short %} that is exclusive and native to {% data variables.product.prodname_vscode %}, called a {% data variables.copilot.copilot_vsc_chat_participant %}.
{% data variables.copilot.copilot_extensions %} and {% data variables.copilot.copilot_vsc_chat_participants %} use the same backend platform to route requests to extensions. Both provide similar end-user experiences, integrate with {% data variables.copilot.copilot_chat_short %}, and can leverage the {% data variables.product.prodname_copilot_short %} API or other LLMs.
While they share similarities, below are several key differences:
* {% data variables.copilot.copilot_extensions %} can be used in any editor where extensions are supported, while {% data variables.copilot.copilot_vsc_chat_participants %} are only available in {% data variables.product.prodname_vscode %}.
* {% data variables.copilot.copilot_extensions %} are server-side extensions, requiring server infrastructure to build. These extensions provide a built-in connection to your {% data variables.product.github %} workspaces, as set by your organization administrator.
* {% data variables.copilot.copilot_vsc_chat_participants %} are client-side extensions that have more access to {% data variables.product.prodname_vscode_shortname %}'s features and APIs, allowing more editor-specific interactions like accessing local workspace data, manipulating {% data variables.product.prodname_vscode %}'s interface, and read/write access to local files. They do not require server infrastructure.
* Because {% data variables.copilot.copilot_vsc_chat_participants %} are local to the user's machine, they cannot be controlled by the {% data variables.product.prodname_copilot_short %} policies of an organization or enterprise on {% data variables.product.prodname_dotcom_the_website %}.
* {% data variables.copilot.copilot_vsc_chat_participants %} are published to the {% data variables.product.prodname_vs_marketplace_shortname %}, not the {% data variables.product.prodname_marketplace %}.
{% data variables.copilot.copilot_vsc_chat_participants %} are best suited for developers who want to build extensions that use {% data variables.product.prodname_vscode_shortname %}-specific APIs and functionality, or extend existing {% data variables.product.prodname_vscode_shortname %} extensions.
For more information on {% data variables.copilot.copilot_vsc_chat_participants %}, see [Chat extensions](https://code.visualstudio.com/api/extension-guides/chat) in the {% data variables.product.prodname_vscode %} documentation.
## Indemnity for {% data variables.copilot.copilot_extensions_short %}
{% data variables.copilot.copilot_extensions_short %} are not covered by {% data variables.product.prodname_copilot %}s indemnity policy. However, this exclusion applies only to issues that arise within extension chat threads.
Installing and using extensions does not affect indemnity coverage for any issues that occur while using other {% data variables.product.prodname_copilot_short %} features such as code completion and chat.
## Further reading
* [AUTOTITLE](/copilot/building-copilot-extensions/copilot-extensions-glossary)

View File

@@ -1,19 +0,0 @@
---
title: GitHub Copilot Extensions
shortTitle: Extensions
intro: Understand components for building {% data variables.copilot.copilot_extensions_short %}.
versions:
feature: copilot
topics:
- Copilot
redirect_from:
- /copilot/concepts/build-copilot-extensions
- /copilot/concepts/copilot-extensions
children:
- /build-extensions
- /agents
- /skillsets
- /openid-connect
contentType: concepts
---

View File

@@ -1,95 +0,0 @@
---
title: OpenID Connect (OIDC) for GitHub Copilot Extensions
shortTitle: OpenID Connect
allowTitleToDifferFromFilename: true
intro: 'Learn how OpenID Connect (OIDC) enables {% data variables.copilot.copilot_extensions_short %} to securely authenticate users and access cloud resources without storing long-lived credentials.'
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/concepts/build-copilot-extensions/openid-connect
- /copilot/concepts/copilot-extensions/openid-connect
contentType: concepts
category:
- Integrate Copilot with your tools
---
## About OpenID Connect (OIDC) for {% data variables.copilot.copilot_extensions_short %}
OpenID Connect (OIDC) allows {% data variables.copilot.copilot_extensions_short %} to exchange short-lived tokens directly from their cloud provider instead of storing long-lived {% data variables.product.github %} credentials. This feature enables both Copilot agents and skillsets to more securely authenticate users and access cloud resources.
### Overview of OIDC
{% data variables.copilot.copilot_extensions_short %} often need to access third-party resources or APIs on behalf of users. Traditionally, this required storing {% data variables.product.github %} tokens as secrets and making additional API calls to map these tokens to user identities in your system. With OIDC, your extension can request short-lived access tokens directly from your authentication service by exchanging {% data variables.product.github %} identity information.
When enabled, {% data variables.product.github %}'s OIDC provider automatically generates a token containing claims about the user and the request context. Your authentication service can validate these claims and exchange them for an access token scoped specifically for your service.
Using OIDC is especially valuable for {% data variables.product.prodname_copilot_short %} skillsets development because it allows you to leverage your existing API endpoints without maintaining separate {% data variables.product.github %}-specific endpoints. Instead of duplicating endpoints to accept {% data variables.product.github %} tokens, you can use OIDC to translate {% data variables.product.github %} identities into your services native authentication tokens.
### Benefits of using OIDC
By implementing OIDC token exchange in your {% data variables.copilot.copilot_extension_short %}, you can:
* Avoid storing long-lived {% data variables.product.github %} tokens or maintain a mapping between {% data variables.product.github %} and your service's identities.
* Use short-lived tokens that automatically expire and can be scoped specifically to your service's needs.
* Avoid making additional calls to {% data variables.product.github %}'s API to validate tokens and fetch user information.
* Enable direct integration for {% data variables.product.prodname_copilot_short %} Skills with your existing APIs without maintaining separate endpoints for {% data variables.product.github %}.
* Reuse existing API endpoints by translating {% data variables.product.github %} authentication into your service's native tokens.
## About token exchange flow
The following outlines how the {% data variables.copilot.copilot_extensibility_platform_short %} exchanges an OIDC token for an access token to authenticate requests to your extension.
### Initial request
1. The user sends a message to your {% data variables.copilot.copilot_extension_short %}.
1. GitHub generates an OIDC token containing user identity information.
1. GitHub calls your token exchange endpoint with the OIDC token.
1. Your service validates the token and returns an access token.
1. GitHub includes your access token in the request to your extension.
```http request
# HTTP header
Authorization: Bearer <your-service-token>
X-GitHub-Token: <github-token>
```
### Subsequent requests
1. {% data variables.product.github %} caches your access token for up to 10 minutes.
1. The cached token is reused for subsequent requests.
1. If the token expires or becomes invalid, {% data variables.product.github %} requests a new one.
## Understanding OIDC tokens
The OIDC token from {% data variables.product.github %} is a JWT containing claims about the user and request context:
```json
{
"jti": "<unique-token-id>",
"sub": "<github-user-id>",
"aud": "<your-client-id>",
"iss": "https://github.com/login/oauth",
"nbf": 1632492967,
"exp": 1632493867,
"iat": 1632493567,
"act": {
"sub": "api.copilotchat.com"
}
}
```
## Best practices
* Scope tokens to the minimum required permissions.
* Implement proper error handling and logging.
* Monitor token exchange patterns for security anomalies.
* Keep tokens short-lived to minimize security risks.
* Validate all claims before issuing access tokens.
* Consider implementing rate limiting on your token exchange endpoint.
* Use HTTPS for all token exchange communications.
## Next steps
* [AUTOTITLE](/copilot/how-tos/build-copilot-extensions/set-up-oidc)

View File

@@ -1,62 +0,0 @@
---
title: About skillsets for GitHub Copilot Extensions
shortTitle: Skillsets
allowTitleToDifferFromFilename: true
intro: 'Learn what {% data variables.copilot.copilot_skillsets %} are and how they simplify integrating third-party tools and functions into your {% data variables.product.prodname_copilot_short %} experience.'
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets
- /copilot/concepts/build-copilot-extensions/skillsets-for-copilot-extensions
- /copilot/concepts/copilot-extensions/skillsets-for-copilot-extensions
- /copilot/concepts/copilot-extensions/skillsets
contentType: concepts
category:
- Integrate Copilot with your tools
---
A skill within {% data variables.product.prodname_copilot %} is a tool that the model calls to perform a specific task in response to a user query. A skillset is a collection of these skills (up to five per skillset). {% data variables.copilot.copilot_skillsets %} provide a streamlined way to extend {% data variables.product.prodname_copilot_short %}s functionality, allowing builders to integrate external services or custom API endpoints into their {% data variables.product.prodname_copilot_short %} workflow. With skillsets, builders can enable {% data variables.product.prodname_copilot_short %} to perform tasks—such as retrieving data or executing actions in third-party services—without needing to manage complex workflows or architecture.
For a quickstart example of a skillset, see the [skillset-example](https://github.com/copilot-extensions/skillset-example) repository. For information on building a skillset, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets).
## How skillsets and agents differ
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
## The extensibility platform
Skillsets and agents both operate on the {% data variables.copilot.copilot_extensibility_platform %}, which manages the flow of user requests and function evaluations. With {% data variables.copilot.copilot_skillsets_short %}, the platform handles routing, prompt crafting, function calls and prompt generation.
### Workflow overview
The extensibility platform follows a structured workflow to process user requests and generate responses:
1. **User request**
A user issues a request in the {% data variables.copilot.copilot_chat_short %} interface, such as asking for data or executing a specific action.
1. **Routing**
The request is routed to the appropriate extension. For skillsets, this means the platform agent identifies and invokes the corresponding skillset based on the users intent. Each skills inference description helps the platform determine which skill to call.
1. **Dynamic Prompt Crafting**
{% data variables.product.prodname_copilot %} generates a prompt using:
* The users query.
* Relevant thread history.
* Available functions within the skillset.
* Results from any prior function calls.
1. **LLM Completion**
The language model (LLM) processes the prompt and determines:
* Whether the users intent matches a skillset function.
* Which function(s) to call and with what arguments.
* If required, the LLM may send additional function calls to gather more context.
1. **Function Evaluation**
The extension invokes the selected function(s), which may involve:
* Gathering relevant context, such as {% data variables.copilot.copilot_skillsets_short %} repository or user metadata.
* Making an API call to an external service to retrieve data or execute an action.
1. **Response generation**
The platform iteratively refines the output, looping through prompt crafting, LLM completion, and function evaluation as needed. Once the process is complete, {% data variables.product.prodname_copilot_short %} streams a final response back to the user in the chat interface.

View File

@@ -20,7 +20,6 @@ children:
- /about-enterprise-accounts-for-copilot-business
- /policies
- /network-settings
- /extensions
- /copilot-metrics
contentType: concepts
---

View File

@@ -51,10 +51,6 @@ AI-generated summaries of the changes that were made in a pull request, which fi
AI-generated text completion to help you write pull request descriptions quickly and accurately. See [AUTOTITLE](/copilot/using-github-copilot/using-copilot-text-completion).
### {% data variables.copilot.copilot_extensions_short %}
{% data reusables.copilot.copilot-extensions.copilot-extensions-intro %} See [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
### {% data variables.copilot.copilot_edits_short %}
{% data variables.copilot.copilot_edits_short %} is available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs. {% data reusables.copilot.copilot-edits.about-copilot-edits %}

View File

@@ -10,11 +10,14 @@ topics:
- Copilot
- Enterprise
shortTitle: Configure MCP server access
redirect_from:
- /copilot/how-tos/administer-copilot/manage-for-organization/set-extension-permissions
contentType: how-tos
category:
- Manage Copilot for a team
---
> [!NOTE]
> The MCP registry URL and allowlist are in {% data variables.release-phases.public_preview %} and subject to change.

View File

@@ -18,7 +18,6 @@ children:
- /manage-policies
- /add-copilot-coding-agent
- /prepare-for-custom-agents
- /set-extension-permissions
- /review-activity
contentType: how-tos
---

View File

@@ -54,5 +54,4 @@ If your organization has a {% data variables.copilot.copilot_business_short %} o
* [{% data variables.product.prodname_copilot %} Trust Center](https://copilot.github.trust.page)
* [AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions)
* [AUTOTITLE](/copilot/how-tos/administer/organizations/set-extension-permissions)
* [AUTOTITLE](/enterprise-cloud@latest/copilot/setting-up-github-copilot/setting-up-github-copilot-for-your-enterprise)

View File

@@ -1,46 +0,0 @@
---
title: Setting permissions for a GitHub Copilot extension in your organization
intro: 'Learn how to control access to {% data variables.copilot.copilot_extensions %}.'
permissions: Organization owners
product: 'Organizations with a {% data variables.copilot.copilot_for_business %} or {% data variables.copilot.copilot_enterprise %} plan'
versions:
feature: copilot-extensions
allowTitleToDifferFromFilename: true
topics:
- Copilot
- Organizations
- Permissions
shortTitle: Set extension permissions
redirect_from:
- /copilot/how-tos/administer/organizations/set-extension-permissions
- /copilot/how-tos/administer/manage-for-organization/set-extension-permissions
contentType: how-tos
category:
- Manage Copilot for a team
---
{% data variables.copilot.copilot_extensions %} integrate external tools with {% data variables.copilot.copilot_chat %}. See [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
## Prerequisites
* Set a usage policy to enable or disable {% data variables.copilot.copilot_extensions_short %} for all users granted a {% data variables.product.prodname_copilot_short %} license by your organization, controlling your security risk. See [AUTOTITLE](/copilot/how-tos/administer/organizations/managing-policies-for-copilot-in-your-organization).
* Install a {% data variables.copilot.copilot_extension_short %} in your organization. See [AUTOTITLE](/copilot/how-tos/context/install-copilot-extensions/extending-the-capabilities-of-github-copilot-in-your-organization).
## Managing permissions for a {% data variables.copilot.copilot_extension %} in your organization
After you have installed a {% data variables.copilot.copilot_extension_short %} in your organization, you can view the permissions the extension has in your organization, and why those permissions are necessary. If you do not want the {% data variables.copilot.copilot_extension_short %} to have the listed permissions, you can suspend or uninstall the extension.
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
{% data reusables.apps.access-org-app-settings %}
1. Optionally, to filter your installed {% data variables.product.prodname_github_apps %} for {% data variables.copilot.copilot_extensions_short %}, select the **Filter:** dropdown menu, then click **{% data variables.copilot.copilot_extensions_short %}**.
1. Next to the {% data variables.copilot.copilot_extension_short %} you want to review or modify, click **Configure**.
1. In the "Permissions" section, review the permissions listed for the {% data variables.copilot.copilot_extension_short %}. Optionally, you can block the {% data variables.copilot.copilot_extension_short %}'s access to your organization in one of two ways:
* To indefinitely suspend the {% data variables.copilot.copilot_extension_short %}'s access to resources in your organization while keeping the extension installed, in the "Danger zone" section, click **Suspend**.
* To uninstall a {% data variables.copilot.copilot_extension_short %} completely, in the "Danger zone" section, click **Uninstall**.
## Further reading
* [{% data variables.product.prodname_copilot %} Trust Center](https://copilot.github.trust.page)
* [AUTOTITLE](/copilot/how-tos/context/install-copilot-extensions/using-extensions-to-integrate-external-tools-with-copilot-chat)
* [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions)

View File

@@ -68,10 +68,6 @@ Alternatively, you can manually specify a chat participant to scope your prompt
For a list of available chat participants, type `@` in the chat prompt box. See also [AUTOTITLE](/copilot/using-github-copilot/github-copilot-chat-cheat-sheet?tool=vscode#chat-participants) or [Chat participants](https://code.visualstudio.com/docs/copilot/copilot-chat#_chat-participants) in the {% data variables.product.prodname_vscode %} documentation.
### {% data variables.copilot.copilot_extensions_short %} chat participants
You can also install {% data variables.copilot.copilot_extensions_short %} that provide chat participants. You can install these extensions from [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true) and from [{% data variables.product.prodname_vscode_marketplace %}](https://marketplace.visualstudio.com/search?target=VSCode&category=Chat&sortBy=Installs). For information about extensions from {% data variables.product.prodname_marketplace %} that provide chat participants, see [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/about-github-copilot-extensions).
### Slash commands
Use slash commands to avoid writing complex prompts for common scenarios. To use a slash command, type `/` in the chat prompt box, followed by a command.
@@ -105,6 +101,10 @@ You can tell {% data variables.product.prodname_copilot_short %} to answer a que
{% endif %}
## Using Model Context Protocol (MCP) servers
{% data reusables.copilot.mcp.mcp-chat-in-ide %}
## AI models for {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.change-the-ai-model %}
@@ -227,10 +227,6 @@ You can ask {% data variables.copilot.copilot_chat_short %} to give you code sug
You can use special keywords to help {% data variables.product.prodname_copilot_short %} understand your prompt.
### Extending {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.copilot-extensions.extending-copilot-chat %}
### Slash commands
Use slash commands to avoid writing complex prompts for common scenarios. To use a slash command, type `/` in the chat prompt box, followed by a command.
@@ -272,6 +268,10 @@ You can tell {% data variables.product.prodname_copilot_short %} to answer a que
{% endif %}
## Using Model Context Protocol (MCP) servers
{% data reusables.copilot.mcp.mcp-chat-in-ide %}
## AI models for {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.change-the-ai-model %}
@@ -375,6 +375,12 @@ You can ask {% data variables.copilot.copilot_chat_short %} to give you code sug
You can use special keywords to help {% data variables.product.prodname_copilot_short %} understand your prompt.
### Chat participants
Chat participants are like domain experts who have a specialty that they can help you with. You can use a chat participant to scope your prompt to a specific domain. To do this, type `@` in the chat prompt box, followed by a chat participant name.
For a list of available chat participants, type `@` in the chat prompt box. See also [AUTOTITLE](/copilot/using-github-copilot/github-copilot-chat-cheat-sheet?tool=jetbrains#chat-participants-1).
### Extending {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.copilot-extensions.extending-copilot-chat %}
@@ -393,6 +399,10 @@ By default, {% data variables.copilot.copilot_chat_short %} will reference the f
{% data reusables.copilot.using-skills %}
## Using Model Context Protocol (MCP) servers
{% data reusables.copilot.mcp.mcp-chat-in-ide %}
## AI models for {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.change-the-ai-model %}
@@ -483,6 +493,10 @@ You can ask {% data variables.copilot.copilot_chat_short %} to give you code sug
To see the files that {% data variables.copilot.copilot_chat_short %} used to generate the response, click the **References** link below the response. The references may include a link to a custom instructions file for your repository. This file contains additional information that is automatically added to all of your chat questions to improve the quality of the responses. For more information, see [AUTOTITLE](/copilot/how-tos/custom-instructions/adding-repository-custom-instructions-for-github-copilot).
## Using Model Context Protocol (MCP) servers
{% data reusables.copilot.mcp.mcp-chat-in-ide %}
## AI models for {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.change-the-ai-model %}
@@ -567,6 +581,10 @@ Use slash commands to avoid writing complex prompts for common scenarios. To use
To see all available slash commands, type `/` in the chat prompt box.
## Using Model Context Protocol (MCP) servers
{% data reusables.copilot.mcp.mcp-chat-in-ide %}
## AI models for {% data variables.copilot.copilot_chat_short %}
{% data reusables.copilot.change-the-ai-model %}

View File

@@ -21,7 +21,6 @@ children:
- /manage-your-account
- /administer-copilot
- /troubleshoot-copilot
- /use-copilot-extensions
redirect_from:
- /copilot/using-github-copilot
contentType: how-tos

View File

@@ -11,7 +11,6 @@ children:
- /use-mcp
- /create-knowledge-bases
- /use-knowledge-bases
- /install-copilot-extensions
redirect_from:
- /copilot/customizing-copilot
- /copilot/how-tos/context

View File

@@ -1,17 +0,0 @@
---
title: Install GitHub Copilot Extensions
shortTitle: Install Copilot Extensions
intro: 'You can interact with external tools and add additional functionality to {% data variables.product.prodname_copilot_short %}.'
versions:
feature: copilot
topics:
- Copilot
children:
- /use-copilot-extensions
- /install-personal-extensions
- /install-extensions
redirect_from:
- /copilot/how-tos/context/install-copilot-extensions
contentType: how-tos
---

View File

@@ -1,55 +0,0 @@
---
title: Extending the capabilities of GitHub Copilot in your organization
shortTitle: Install extensions
intro: 'You can add additional functionality to {% data variables.product.prodname_copilot_short %} in your organization, by installing certain {% data variables.product.prodname_github_apps %} from {% data variables.product.prodname_marketplace %}.'
product: 'Organization owners can install {% data variables.copilot.copilot_extensions %} for an organization.'
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/extending-the-capabilities-of-github-copilot-in-your-organization
- /copilot/github-copilot-chat/github-copilot-extensions/installing-github-copilot-extensions-for-your-organization
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/installing-github-copilot-extensions-for-your-organization
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/enhancing-copilot-for-your-organization/installing-github-copilot-extensions-for-your-organization
- /copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization
- /copilot/how-tos/context/install-copilot-extensions/extending-the-capabilities-of-github-copilot-in-your-organization
- /copilot/how-tos/context/install-copilot-extensions/install-extensions
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## About {% data variables.copilot.copilot_extensions %} for your organization
{% data reusables.copilot.copilot-extensions.copilot-extensions-on-marketplace %}
Any organization owner can install {% data variables.copilot.copilot_extensions_short %} for their organization, but your organization must have an active {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan.
> [!NOTE] Anyone can install a {% data variables.copilot.copilot_extension_short %} on their personal account. However, if they get access to {% data variables.product.prodname_copilot_short %} through a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, they will only be able to use the extension if it is installed at the organization level.
You can also create your own custom {% data variables.copilot.copilot_extensions_short %} for your organization. For more information, see [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
## Prerequisites
Before you install any {% data variables.copilot.copilot_extensions_short %} in your organization, you should set a usage policy for {% data variables.copilot.copilot_extensions_short %} at the {% ifversion ghec %}enterprise or {% endif %}organization level. See [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/managing-github-copilot-extensions).
## Installing {% data variables.copilot.copilot_extensions %} for your organization
1. Open [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true).
1. In the left sidebar, click **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %} {% data variables.product.prodname_copilot_short %}**.
1. In the list of {% data variables.copilot.copilot_extensions_short %}, locate an app you'd like to install.
1. To install the {% data variables.copilot.copilot_extension_short %} on an organization with a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, see [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations).
{% data reusables.copilot.copilot-extensions.extension-specific-onboarding-steps %}
## Next steps
After installing a {% data variables.copilot.copilot_extension_short %} for your organization, developers in your organization can start using the extension. See [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/using-github-copilot-extensions).
You can also manage the permissions of installed {% data variables.copilot.copilot_extensions_short %}. See [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#managing-permissions-for-a-github-copilot-extension-in-your-organization).
## Further reading
* [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-chat-with-mcp)
* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp)

View File

@@ -1,41 +0,0 @@
---
title: Extending the capabilities of GitHub Copilot in your personal account
shortTitle: Install personal extensions
intro: 'You can add additional functionality to {% data variables.product.prodname_copilot_short %} in your personal account, by installing certain {% data variables.product.prodname_github_apps %} from {% data variables.product.prodname_marketplace %}.'
versions:
feature: copilot-extensions
topics:
- Copilot
redirect_from:
- /copilot/github-copilot-chat/github-copilot-extensions/installing-github-copilot-extensions-for-your-personal-account
- /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/installing-github-copilot-extensions-for-your-personal-account
- /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/extending-the-capabilities-of-github-copilot-in-your-personal-account
- /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/extending-the-capabilities-of-github-copilot-in-your-personal-account
- /copilot/how-tos/context/install-copilot-extensions/extending-the-capabilities-of-github-copilot-in-your-personal-account
- /copilot/how-tos/context/install-copilot-extensions/install-personal-extensions
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## About {% data variables.copilot.copilot_extensions %} for your personal account
{% data reusables.copilot.copilot-extensions.copilot-extensions-on-marketplace %}
Anyone can install {% data variables.copilot.copilot_extensions_short %} for their personal account, but you must set up {% data variables.copilot.copilot_free_short %}, or have an active {% data variables.copilot.copilot_pro_short %} or {% data variables.copilot.copilot_pro_plus_short %} plan, to use a {% data variables.copilot.copilot_extension_short %} you install.
> [!NOTE] If you have access to {% data variables.product.prodname_copilot_short %} through a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, {% data variables.copilot.copilot_extensions_short %} are installed by organization owners at the organization level, and you do not need to install the extension on your personal account. To start using {% data variables.copilot.copilot_extensions_short %} installed in your organization, see [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/using-github-copilot-extensions).
You can also create your own custom {% data variables.copilot.copilot_extensions_short %} for your personal account. For more information, see [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
## Installing {% data variables.copilot.copilot_extensions %} for your personal account
1. Open [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true).
1. In the left sidebar, click **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %} {% data variables.product.prodname_copilot_short %}**.
1. In the list of {% data variables.copilot.copilot_extensions_short %}, locate an app you'd like to install.
1. To install the {% data variables.copilot.copilot_extension_short %} on your personal account, see [AUTOTITLE](/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account#installing-a-github-app-in-your-personal-account).
{% data reusables.copilot.copilot-extensions.extension-specific-onboarding-steps %}
## Next steps
After installing a {% data variables.copilot.copilot_extension_short %}, you can start using the extension in {% data variables.copilot.copilot_chat_short %}. See [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/using-github-copilot-extensions).

View File

@@ -1,100 +0,0 @@
---
title: Using extensions to integrate external tools with GitHub Copilot Chat
intro: 'You can use {% data variables.copilot.copilot_extensions_short %} to interact with external tools in {% data variables.copilot.copilot_chat %}.'
product: '{% data reusables.gated-features.copilot-extensions %}'
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Use Copilot Extensions
redirect_from:
- /copilot/github-copilot-chat/github-copilot-extensions/about-github-copilot-extensions
- /copilot/github-copilot-chat/github-copilot-extensions/using-github-copilot-extensions
- /copilot/github-copilot-chat/github-copilot-extensions
- /copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat
- /copilot/how-tos/context/install-copilot-extensions/using-extensions-to-integrate-external-tools-with-copilot-chat
- /copilot/how-tos/context/install-copilot-extensions/use-copilot-extensions
contentType: how-tos
category:
- Integrate Copilot with your tools
---
<!-- expires 2025-11-19 -->
<!-- When this expires, check with the stakeholder for release #6165 if the knowledge bases content can be deleted -->
{% data reusables.copilot.copilot-extensions.extensions-retirement %}
<!-- end expires 2025-11-19 -->
## About {% data variables.copilot.copilot_extensions %}
{% data reusables.copilot.copilot-extensions.copilot-extensions-intro %}
> [!NOTE] {% data variables.copilot.copilot_extensions %} are not the same as _the {% data variables.product.prodname_copilot %} extension_, which you install in your IDE to use default {% data variables.product.prodname_copilot_short %} functionality like code completion and {% data variables.copilot.copilot_chat %}. For more information on _the {% data variables.product.prodname_copilot %} extension_, see [AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/installing-the-github-copilot-extension-in-your-environment).
You can get started with {% data variables.copilot.copilot_extensions_short %} in one of two ways:
* Build your own {% data variables.copilot.copilot_extension_short %}. See [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
* Install a {% data variables.copilot.copilot_extension_short %} from {% data variables.product.prodname_marketplace %}.
You can interact with your custom-built or installed extension in a {% data variables.copilot.copilot_chat_short %} conversation, asking questions and performing actions that combine the capabilities of the external tool and {% data variables.product.prodname_dotcom %}. For example, if you install the Sentry extension for {% data variables.product.prodname_copilot %}, you can use the extension to get information about Sentry issues, then create and assign related tracking issues on {% data variables.product.prodname_dotcom %}.
{% data variables.copilot.copilot_extensions_short %} provide several benefits, including:
* Interaction with external tools using natural language
* Reduced context switching
* Customization of your {% data variables.copilot.copilot_chat_short %} experience for your developer flow
{% data variables.copilot.copilot_extensions_short %} are included in all {% data variables.product.prodname_copilot_short %} subscriptions.
### Supported clients and IDEs
{% data reusables.copilot.copilot-extensions.supported-clients-and-ides-table %}
## Prerequisites
**If you have a {% data variables.copilot.copilot_pro_short %} subscription**, you need to install a {% data variables.copilot.copilot_extension_short %} before you can use the extension in {% data variables.copilot.copilot_chat_short %}. See [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/installing-github-copilot-extensions-for-your-personal-account).
**If you have access to {% data variables.product.prodname_copilot_short %} through a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} subscription:**
1. An organization owner or enterprise owner needs to enable the {% data variables.copilot.copilot_extensions_short %} policy for your organization or enterprise. See [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#setting-a-policy-for-github-copilot-extensions-in-your-organization) and [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise#configuring-policies-for-github-copilot) in the {% data variables.product.prodname_ghe_cloud %} documentation.
1. An organization owner needs to install {% data variables.copilot.copilot_extensions_short %} for your organization. See [AUTOTITLE](/copilot/github-copilot-chat/github-copilot-extensions/installing-github-copilot-extensions-for-your-organization).
## Using {% data variables.copilot.copilot_extensions %}
1. To start using a {% data variables.copilot.copilot_extension_short %}, open a supported {% data variables.copilot.copilot_chat_short %} interface. See [Supported clients and IDEs](#supported-clients-and-ides).
1. To see a list of all {% data variables.copilot.copilot_extensions_short %} available in your {% data variables.copilot.copilot_chat_short %} conversation, in the {% data variables.copilot.copilot_chat_short %} text box, type `@`.
> [!NOTE] If you are using {% data variables.copilot.copilot_chat_short %} in an IDE, and you or your organization owner install a {% data variables.copilot.copilot_extension_short %} while your IDE is open, you need to restart your IDE to begin using the {% data variables.copilot.copilot_extension_short %}.
1. In the list of available {% data variables.copilot.copilot_extensions_short %}, click the one you want to use.
1. To begin interacting with the {% data variables.copilot.copilot_extension_short %}, in the {% data variables.copilot.copilot_chat_short %} text box, ask the extension to answer a question or perform an action, then press <kbd>Enter</kbd>. For each new request, be sure to include `@EXTENSION-NAME` at the beginning of your sentence.
* If you did not install the {% data variables.copilot.copilot_extension_short %} yourself, and it is your first time using the {% data variables.copilot.copilot_extension_short %}, you will be asked to authorize the extension. See [AUTOTITLE](/apps/using-github-apps/authorizing-github-apps).
* If you ask a {% data variables.copilot.copilot_extension_short %} to perform an action, you need to confirm the extension has your permission to act on your behalf before it will complete the task. After carefully reviewing the proposed action, in the confirmation dialog, click **Allow** or **Dismiss**.
## Tips for using {% data variables.copilot.copilot_extensions %}
* When you are using a {% data variables.copilot.copilot_extension_short %}, consider how you would interact with the tool outside of {% data variables.copilot.copilot_chat_short %}, then use natural language to ask questions and assign tasks that integrate the capabilities of the tool with {% data variables.product.prodname_dotcom %}. For example, [Sentry](https://sentry.io/welcome/) is an application monitoring software with a {% data variables.copilot.copilot_extension_short %}. The following are some example prompts for the Sentry extension for {% data variables.product.prodname_copilot %}:
* `@sentry list my most recent issues`
* `@sentry tell me more about issue ISSUE-ID-OR-ISSUE-LINK`
* `@sentry create a {% data variables.product.prodname_dotcom %} issue for the most recent Sentry issue and assign it to @DEVELOPER`
For information on the best ways to use a specific {% data variables.copilot.copilot_extension_short %}, read the description of the extension on [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=apps&copilot_app=true).
* Interactions with one {% data variables.copilot.copilot_extension_short %} will never be shared with another {% data variables.copilot.copilot_extension_short %}. To interact with different {% data variables.copilot.copilot_extensions_short %} in an IDE, change the `@EXTENSION-NAME` at the beginning of each sentence. Interactions with different extensions will appear in the same {% data variables.copilot.copilot_chat_short %} window, but the conversations themselves are automatically separated.
{% ifversion ghec %} To interact with different {% data variables.copilot.copilot_extensions_short %} on {% data variables.product.prodname_dotcom_the_website %}, you need to start a new conversation for each extension by clicking {% octicon "plus" aria-label="New conversation" %} at the top of the {% data variables.copilot.copilot_chat_short %} window.{% endif %}
## Additional resources
For questions and issues related to {% data variables.copilot.copilot_extensions %}, please use the following resources:
* **General issues for users and builders:** Visit the [{% data variables.product.github %} Support Portal](https://support.github.com/).
* **Requests or feedback for {% data variables.product.github %}:** Use the [{% data variables.product.github %} Community Discussion Thread](https://gh.io/community-feedback).
* **Requests or feedback for third-party extension publishers:** File an issue in the [User Feedback Repo](https://github.com/copilot-extensions/user-feedback) and add a label with the extension's slug name.
* **{% data variables.product.github %} Technology Partners:** Email the partnerships team directly for assistance.
* **{% data variables.copilot.copilot_vsc_chat_participants %}:** For more information on this type of {% data variables.copilot.copilot_extension_short %}, see [Chat extensions](https://code.visualstudio.com/api/extension-guides/chat) in the {% data variables.product.prodname_vscode %} documentation.
> [!NOTE] {% data variables.contact.github_support %} is not able to answer questions regarding {% data variables.copilot.copilot_vsc_chat_participants %}, as this implementation path is owned and maintained by the {% data variables.product.prodname_vscode_shortname %} team.
## Further reading
* [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions)

View File

@@ -7,6 +7,14 @@ versions:
defaultTool: vscode
topics:
- Copilot
redirect_from:
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-agent/communicate-with-copilot-platform
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-agent/communicate-with-github
- /copilot/how-tos/use-copilot-extensions/create-a-copilot-extension/configure-app-for-extension
- /copilot/how-tos/use-copilot-extensions/create-a-copilot-extension/host-your-extension
- /copilot/how-tos/use-copilot-extensions/set-up-copilot-extensions
- /copilot/how-tos/provide-context/install-copilot-extensions/install-extensions
- /copilot/how-tos/provide-context/install-copilot-extensions/install-personal-extensions
contentType: how-tos
category:
- Integrate Copilot with your tools

View File

@@ -12,6 +12,7 @@ redirect_from:
- /copilot/how-tos/context/model-context-protocol/using-the-github-mcp-server
- /copilot/how-tos/context/model-context-protocol/use-the-github-mcp-server
- /copilot/how-tos/context/use-mcp/use-the-github-mcp-server
- /copilot/how-tos/provide-context/install-copilot-extensions/use-copilot-extensions
contentType: how-tos
category:
- Integrate Copilot with your tools

View File

@@ -55,7 +55,7 @@ All users can configure {% data variables.product.prodname_copilot_short %} sett
If you have your own {% data variables.product.prodname_copilot_short %} plan (instead of using your organization or enterprise's plan), you can:
* **Install {% data variables.copilot.copilot_extensions_short %}** to integrate other tools with {% data variables.copilot.copilot_chat_short %}. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/installing-github-copilot-extensions-for-your-personal-account).
* **Install Model Context Protocol (MCP) servers to integrate with {% data variables.copilot.copilot_chat_short %}. See [AUTOTITLE](/copilot/how-tos/context/model-context-protocol/extending-copilot-chat-with-mcp).
* **Manage policies**. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber).
## 7. Start using {% data variables.product.prodname_copilot_short %}

View File

@@ -40,8 +40,6 @@ These instructions are for {% data variables.product.prodname_copilot_short %} o
{% data reusables.copilot.model-picker-enable-alternative-models %}
> [!NOTE] If you use {% data variables.copilot.copilot_extensions_short %}, they may override the model you select.
1. In the top right of any page on {% data variables.product.github %}, click the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %}** icon.
![Screenshot of the 'Copilot' button, highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-icon-top-right.png)

View File

@@ -10,6 +10,7 @@ redirect_from:
- /copilot/using-github-copilot/ai-models/configuring-access-to-ai-models-in-copilot
- /copilot/how-tos/ai-models/configuring-access-to-ai-models-in-copilot
- /copilot/how-tos/ai-models/configure-access-to-ai-models
- /github-models/use-github-models/integrating-ai-models-into-your-development-workflow
contentType: how-tos
category:
- Configure Copilot

View File

@@ -1,159 +0,0 @@
---
title: Configuring your GitHub Copilot agent to communicate with the GitHub Copilot platform
intro: Learn how to interact with the {% data variables.product.prodname_copilot_short %} platform by sending and receiving server-sent events with your {% data variables.copilot.copilot_agent_short %}.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Communicate with Copilot platform
layout: inline
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-the-copilot-platform
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-the-copilot-platform
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/communicate-with-copilot-platform
- /copilot/how-tos/build-copilot-extensions/build-a-copilot-agent/communicate-with-copilot-platform
contentType: how-tos
category:
- Integrate Copilot with your tools
---
{% data variables.copilot.copilot_agents_short %} communicate with the {% data variables.product.prodname_copilot_short %} platform in the form of server-sent events (SSEs). Rather than waiting for the {% data variables.product.prodname_copilot_short %} platform to request an update from your agent, or vice versa, you can use SSEs to send and receive updates to and from the platform in real time.
To learn more about SSEs, see [Server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) in the mdn documentation.
## Sending server-sent events
Your agent should only send one SSE for each interaction with the {% data variables.product.prodname_copilot_short %} platform. There are four predefined SSEs your agent can send:
* [`copilot_confirmation`](#copilot_confirmation)
* [`copilot_errors`](#copilot_errors)
* [`copilot_references`](#copilot_references)
* [Default SSE](#default-sse)
### `copilot_confirmation`
The `copilot_confirmation` SSE sends the user a prompt to confirm an action. This SSE is sent through an event type and data field. See the following code for an example of a `copilot_confirmation` SSE:
```typescript annotate
//
event: copilot_confirmation
data: {
// Currently, `action` is the only supported value for `type` in `copilot_confirmation`.
"type": "action",
// Title of the confirmation dialog shown to the user.
"title": "Turn off feature flag",
// Confirmation message shown to the user.
"message": "Are you sure you wish to turn off the `copilot` feature flag?",
// Optional field for the agent to include any data needed to uniquely identify this confirmation and take action once the decision is received from the client.
"confirmation": {
"id": "id-123",
"other": "identifier-as-needed",
}
}
```
After the user accepts or dismisses the confirmation, the agent receives a message similar to the following example:
```typescript annotate
//
{
"copilot_confirmations": [
{
// A string containing the state of the confirmation. This value is either `accepted` or `dismissed`.
"state": "accepted",
// An array of strings containing data identifying the relevant action.
"confirmation": {
"id": "id-123",
"other": "identifier-as-needed",
}
}
]
}
```
Based on the values in this message, the agent can then complete or cancel the appropriate action.
### `copilot_errors`
The `copilot_errors` SSE sends the {% data variables.product.prodname_copilot_short %} platform a list of encountered errors. This SSE is sent through an event type and data field. See the following code for an example of a `copilot_errors` SSE:
```typescript annotate
//
event: copilot_errors
data: [{
// A string that specifies the error's type. `type` can have a value of `reference`, `function` or `agent`.
"type": "function",
// A string controlled by the agent describing the nature of an error.
"code": "recentchanges",
// A string that specifies the error message shown to the user.
"message": "The repository does not exist",
// A string that serves as a unique identifier to link the error with other resources such as references or function calls.
"identifier": "github/hello-world"
}]
```
### `copilot_references`
> [!NOTE] Rendering references is currently unsupported for {% data variables.copilot.copilot_mobile_short %}. Extensions that depend on reference memory to generate responses will still work, but the references will not be displayed to the user.
The `copilot_references` SSE sends the user a list of references used to generate a response. This SSE is sent through an event type and data field. See the following code for an example of a `copilot_references` SSE:
```typescript annotate
//
event: copilot_references
data: [{
// A string that specifies the type of the reference.
"type": "blackbeard.story",
// A string that specifies the ID of the reference.
"id": "snippet",
// An optional field where the agent can include any data needed to uniquely identify this reference.
"data": {
"file": "story.go",
"start": "0",
"end": "13",
"content": "func main()...writeStory()..."
},
// An optional boolean that indicates if the reference was passed implicitly or explicitly.
"is_implicit": false,
// An optional field for the agent to include any metadata to display in the user's environment. If any of the below required fields are missing, then the reference will not be rendered in the UI.
"metadata": {
"display_name": "Lines 1-13 from story.go",
"display_icon": "icon",
"display_url": "http://blackbeard.com/story/1",
}
}]
```
### Default SSE
The default SSE sends the user a general chat message. This SSE is unnamed and sent solely through a data field. See the following code for an example of a default SSE:
```text
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
```
## Receiving server-sent events
Just as your agent sends SSEs to the {% data variables.product.prodname_copilot_short %} platform, it also receives the `resp_message` SSE from the platform. This SSE contains a list of messages from the user, as well as optional data related to each of the SSE events the agent can send. See the following code sample for an example curl request to your agent containing a message:
```bash
curl --request POST \
--url $AGENT_URL \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-GitHub-Token: $RUNTIME_GENERATED_TOKEN" \
--data '{
"messages": [
{
"role": "user",
"content": "What is a closure in javascript?",
"copilot_references": []
}
]
}'
```
## Next steps
Now that you understand how your {% data variables.copilot.copilot_agent_short %} communicates with the {% data variables.product.prodname_copilot_short %} platform, you can learn how to integrate your agent with the {% data variables.product.github %} API. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github).

View File

@@ -1,54 +0,0 @@
---
title: Configuring your GitHub Copilot agent to communicate with GitHub
intro: Learn how to verify payloads and get resources from {% data variables.product.github %} with your {% data variables.copilot.copilot_agent_short %}.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Communicate with GitHub
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/communicate-with-github
- /copilot/how-tos/build-copilot-extensions/build-a-copilot-agent/communicate-with-github
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## Prerequisites
{% data reusables.copilot.copilot-extensions.agents-copilot-platform-prerequisites %}
## Verifying that payloads are coming from {% data variables.product.github %}
Before your {% data variables.copilot.copilot_agent_short %} begins processing a request, you should verify that the request came from {% data variables.product.github %}, and that it is intended for your agent. All agent requests contain the `X-GitHub-Public-Key-Identifier` and `X-GitHub-Public-Key-Signature` headers. To verify the signature for a particular request, compare the signature in the `X-GitHub-Public-Key-Signature` header with a signed copy of the request body using the current public key listed at https://api.github.com/meta/public_keys/copilot_api.
For more details and examples of signature verification in specific languages, see the [`github-technology-partners/signature-verification`](https://github.com/github-technology-partners/signature-verification) repository.
> ⚠️ **Note:** We currently send duplicate pairs of these headers. One set has the prefix `Github-Public-...`; the other has `X-GitHub-Public...`. The former will be {% data variables.release-phases.closing_down %} **by March 31st**. Please update your relevant checks to the correct prefix (`X-GitHub-Public...`) by then.
## Fetching resources from the {% data variables.product.github %} API
Requests to your {% data variables.copilot.copilot_agent_short %} will receive an `X-GitHub-Token` header. This header contains an API token that can be used to fetch resources from the {% data variables.product.github %} API on behalf of the user interacting with your agent. The permissions of this token are the overlap of the user's own permissions and the permissions granted to your {% data variables.product.prodname_github_app %} installation.
For an example of how you might use `X-GitHub-Token`, see the following code sample:
```typescript
async function whoami(req) {
const response = await fetch(
// The {% data variables.product.github %} API endpoint for the authenticated user
"https://api.github.com/user",
{
headers: {
"Authorization": `Bearer ${req.headers.get("x-github-token")}`
}
}
)
const user = await response.json()
return user
}
```
To learn more about working with {% data variables.product.github %}'s API and explore official software development kits (SDKs), see the [`octokit`](https://github.com/octokit) organization.

View File

@@ -1,20 +0,0 @@
---
title: Building a GitHub Copilot agent for your GitHub Copilot Extension
shortTitle: Build a Copilot agent
intro: Learn how to build a custom {% data variables.copilot.copilot_agent_short %} that determines the functionality of your {% data variables.copilot.copilot_extension_short %}.
versions:
feature: copilot
topics:
- Copilot
children:
- /communicate-with-copilot-platform
- /communicate-with-github
- /use-context-passing
- /use-copilots-llm
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/build-a-copilot-agent
contentType: how-tos
---

View File

@@ -1,246 +0,0 @@
---
title: Context passing for your agent
intro: Learn how to use context passing with your {% data variables.copilot.copilot_agent_short %}.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Use context passing
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/context-passing-for-your-agent
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/context-passing-for-your-agent
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/use-context-passing
- /copilot/how-tos/build-copilot-extensions/build-a-copilot-agent/use-context-passing
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## About context passing
{% data variables.copilot.copilot_extensions %} can access certain contextual information using context passing.
Context passing allows agents to receive relevant details about a users current file, selected text, and repository.
It happens automatically when you interact with an extension, but requires your explicit authorization through {% data variables.product.prodname_github_app %} permissions for use in any organization-owned repositories.
Different clients, such as {% data variables.copilot.copilot_chat %} in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and {% data variables.product.github %}, provide context through different reference types.
For example, IDEs send information such as file contents and selections, while {% data variables.copilot.copilot_chat_dotcom_short %} includes the current URL for the page being viewed.
## Prerequisites
{% data reusables.copilot.copilot-extensions.agents-copilot-platform-prerequisites %}
## Understanding context passing
Context passing enables agents to receive information about the users active workspace.
Your agent receives server-sent events (SSEs) that contain a list of messages from the user as well as references to the users current environment.
Depending on the client, different types of context are provided.
The following table shows the reference types that are passed to {% data variables.copilot.copilot_extensions %} based on the client or IDE you are using.
{% rowheaders %}
| Client or IDE | client.file | client.selection | github.repository | github.current-url | Additional contexts |
| ------------------ | ----------- | ---------------- | ----------------- | ------------------ | ------------------------------------------------- |
| {% data variables.product.prodname_vscode %} | Yes | Yes | Yes | No | Repository owner and branch |
| {% data variables.product.prodname_vs %} | Yes | Yes | Yes | No | Repository owner and branch |
| {% data variables.product.prodname_dotcom_the_website %} | No | No | Yes | Yes | Repository information and other {% data variables.product.github %} resources |
| {% data variables.product.prodname_mobile %} | No | No | No | Yes | Not applicable
{% endrowheaders %}
### Reference types for {% data variables.copilot.copilot_chat_short %} in IDEs
The following reference types can be passed to your agent from an IDE:
* `client.file`: Represents the full content of the currently active file in the IDE.
* `client.selection`: Represents the selected portion of text the user highlighted in the active file.
* `github.repository`: Provides information about the active repository.
### Reference types for {% data variables.copilot.copilot_chat_dotcom_short %}
The following reference types can be passed to your agent from {% data variables.product.github %}:
* `github.current-url`: Represents the URL of the current {% data variables.product.github %} page the user is viewing.
* `github.repository`: Provides information about the active repository.
## Example references
The following code shows an example object for `client.file`:
```json
{
// The reference type.
"type": "client.file",
"data": {
// The full content of the active file.
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
"language": "plaintext"
},
"id": "relative-path/to/file",
// `is_implicit` indicates whether the reference was automatically provided by the client (true) or manually attached by the user (false).
"is_implicit": true,
"metadata": {
"display_name": "https://github.com/example-user/example-repository",
"display_icon": "",
"display_url": ""
}
}
```
The following code shows an example object for `client.selection`:
```json
{
// The reference type.
"type": "client.selection",
"data": {
// The currently selected portion of text.
"content": "<current selection>",
"end": {
"col": 80,
"line": 10
},
"start": {
"col": 0,
"line": 0
}
},
"id": "relative-path/to/file",
// `is_implicit` indicates whether the reference was automatically provided by the client (true) or manually attached by the user (false).
"is_implicit": true,
"metadata": {
"display_name": "https://github.com/example-user/example-repository",
"display_icon": "",
"display_url": ""
}
}
```
The following code shows an example object for `github.repository`:
```json
{
// The reference type.
"type": "github.repository",
"data": {
"type": "repository",
"id": "abc-123",
"name": "example-repository",
"ownerLogin": "example-user",
"ownerType": "",
"readmePath": "",
"description": "",
"commitOID": "",
"ref": "",
"refInfo": {
"name": "",
"type": ""
},
"visibility": "",
"languages": null
},
"id": "example-user/example-repository",
// `is_implicit` is always false for github.repository.
"is_implicit": false,
"metadata": {
"display_name": "https://github.com/example-user/example-repository",
"display_icon": "",
"display_url": ""
}
}
```
The following code shows an example object for `github.current-url`:
```json
{
// The reference type.
"type": "github.current-url",
"data": {
// The GitHub URL the user was on while chatting with the agent.
"url": "https://github.com/example-user/example-repository"
},
"id": "https://github.com/example-user/example-repository",
// `is_implicit` is always true for github.current-url.
"is_implicit": true,
"metadata": {
"display_name": "https://github.com/example-user/example-repository",
"display_icon": "",
"display_url": ""
}
}
```
## Setting up context passing
To enable context passing through an IDE client, the **{% data variables.product.prodname_copilot_short %} Editor Context** permission must be configured for your agent.
This permission only controls access for the `client.file` and `client.selection` reference types.
Users that install and use the agent will be clearly informed that the agent has read access to {% data variables.product.prodname_copilot_short %} Editor Context which includes content such as active file and current selection.
`github.current-url` and `github.repository` are unaffected by the {% data variables.product.prodname_copilot_short %} Editor Context. These reference types rely on authorization filtering to ensure third party agents only receive references they have access to. For information on managing the privacy of `github.current-url` and `github.repository`, see [Privacy controls](#privacy-controls).
Follow these steps to set the necessary permissions for context passing from IDEs to your agent:
{% data reusables.apps.settings-step-personal-orgs %}
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.github_apps %}
1. In the list of {% data variables.product.prodname_github_apps %}, click the {% data variables.product.prodname_github_app %} you want to configure for context passing.
1. In the navigation menu on the left, select **Permissions & events**.
1. Under **Account Permissions**, select **Read-only** access for **{% data variables.product.prodname_copilot_short %} Editor Context**.
## Privacy controls
In cases where you don't want to share certain context details with the agent, you can redact and remove reference types in multiple ways.
### Chat in IDEs
* If an agent doesn't have the {% data variables.product.prodname_copilot_short %} Editor Context read-access permission, all `client.*` references are removed.
* If an agent doesn't have read access to a repository, all `client.*` references are removed and the `github.repository` reference is redacted.
> [!NOTE] {% data variables.product.prodname_vs %} and {% data variables.product.prodname_vscode %} provides an option to exclude content from the current file. The `client.*` reference types are removed if the user has excluded content from the current file.
### Chat in {% data variables.product.github %}
* If an agent doesn't have read access to the repository associated with the current {% data variables.product.github %} URL, the `github.current-url` and `github.repository` references are redacted.
* If repository information cannot be extracted from the current {% data variables.product.github %} URL, `github.current-url` is redacted.
### Redacted references
When a reference is redacted due to insufficient permissions, it is replaced with a placeholder indicating the type of information that was excluded.
In the following example, the `type` field indicates that the reference has been redacted and the `data.type` field reveals the original reference type.
```json
{
"role": "user",
"content": "Current Date and Time (UTC): 2024-10-22 00:43:14\nCurrent User's Login: monalisa\n",
"name": "_session",
"copilot_references": [
{
"type": "github.redacted",
"data": {
"type": "github.current-url"
},
"id": "example-id",
"is_implicit": true,
"metadata": {
"display_name": "",
"display_icon": "",
"display_url": ""
}
}
],
"copilot_confirmations": null
}
```
### Context Exclusions
To safeguard sensitive information, certain scenarios automatically prevent the passing of context to agents.
If an organization has set content exclusion rules for {% data variables.product.prodname_copilot_short %}, files that fall under these rules will not be included in the context passed to agents.
For more information on content exclusion rules, see [AUTOTITLE](/copilot/managing-copilot/configuring-and-auditing-content-exclusion/excluding-content-from-github-copilot).
#### Large Files
Files exceeding the size limit set by the client will not be sent. The reference will include metadata indicating that the file was too large to process.
#### Hidden Files
Files beginning with a dot, such as `.env` and `.config`, are excluded by default to prevent unintentional sharing of sensitive configurations. In {% data variables.product.prodname_vscode_shortname %}, you can specify files or directories in a `.copilotignore` file to prevent them from being sent to {% data variables.product.prodname_copilot_short %} agents. This client-side mechanism offers granular control over which files are excluded.

View File

@@ -1,55 +0,0 @@
---
title: Using GitHub Copilot's LLM for your agent
intro: Learn how to use {% data variables.product.prodname_copilot_short %}'s LLM for your agent.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Use Copilot's LLM
allowTitleToDifferFromFilename: true
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-copilots-llm-for-your-agent
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-copilots-llm-for-your-agent
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/use-copilots-llm
- /copilot/how-tos/build-copilot-extensions/build-a-copilot-agent/use-copilots-llm
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## About {% data variables.product.prodname_copilot_short %}'s Large Language Model (LLM)
{% data variables.product.prodname_copilot_short %}'s Large Language Model (LLM) is a powerful, large-scale language model that is trained on a diverse range of data sources, including code, documentation, and other text. {% data variables.product.prodname_copilot_short %}'s LLM underpins the functionality for {% data variables.product.prodname_copilot %}, and is used to power all of {% data variables.product.prodname_copilot_short %}'s features, including code generation, documentation generation, and code completion.
You have the option to use {% data variables.product.prodname_copilot_short %}'s LLM to power your agent, which can be useful if you want your agent to be able to generate completions for user messages, but you don't want to manage your own LLM.
> [!NOTE] Third-party agents have strict rate limits for using {% data variables.product.prodname_copilot_short %}'s LLM. If your third-party agent will need to generate a large number of completions, you should consider using your own LLM or an API like OpenAI.
## Using {% data variables.product.prodname_copilot_short %}'s LLM for your agent
You can call {% data variables.product.prodname_copilot_short %}'s LLM deployment at `{% data variables.copilot.chat_completions_api %}` with a POST request. Requests and responses should follow the format as the [OpenAI API](https://platform.openai.com/docs/api-reference/chat/create).
To authenticate, use the same `X-Github-Token` header sent to your agent. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github#fetching-resources-from-the-github-api).
Here is an example of how {% data variables.product.prodname_copilot_short %}'s LLM deployment is used by the Blackbeard extension to generate completions for a user message:
```javascript
// Use Copilot's LLM to generate a response to the user's
// messages, with our extra system messages attached.
const copilotLLMResponse = await fetch(
"https://api.githubcopilot.com/chat/completions",
{
method: "POST",
headers: {
authorization: `Bearer ${tokenForUser}`,
"content-type": "application/json",
},
body: JSON.stringify({
messages,
stream: true,
}),
}
);
```
To see this example in its full context, see the [Blackbeard extension](https://github.com/copilot-extensions/blackbeard-extension).

View File

@@ -1,91 +0,0 @@
---
title: Building GitHub Copilot skillsets
intro: Learn the steps to build {% data variables.copilot.copilot_skillsets %} and integrate custom tools and functions into your Copilot environment.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Build Copilot skillsets
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension
- /copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets
- /copilot/how-tos/build-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/build-copilot-skillsets
- /copilot/how-tos/build-copilot-extensions/build-a-copilot-skillset/build-copilot-skillsets
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-skillset/build-copilot-skillsets
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-skillset
- /copilot/how-tos/build-copilot-extensions/build-copilot-skillsets
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## Introduction
{% data variables.copilot.copilot_skillsets %} are a streamlined way to extend {% data variables.product.prodname_copilot %}'s functionality by defining API endpoints that {% data variables.product.prodname_copilot_short %} can call. When you create a skillset, {% data variables.product.prodname_copilot_short %} handles all the AI interactions while your endpoints provide the data or functionality. This guide walks you through configuring and deploying a skillset within your {% data variables.product.prodname_github_app %}.
## Prerequisites
Before you begin, make sure you have the following:
1. **A configured {% data variables.product.prodname_github_app %}:** Youll need a {% data variables.product.prodname_github_app %} to act as the container for your skillset. If you havent already set one up, refer to [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension) and [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-extension).
1. **API endpoints:** You need one endpoint per skill. Each endpoint must:
* Accept POST requests with the `application/json` MIME type
* Be able to verify the signature of requests from {% data variables.product.github %} to authenticate their origin and prevent unauthorized access
* Be publicly accessible via HTTPS
For more information about signature verification, see [Verifying that payloads are coming from {% data variables.product.github %}](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github#verifying-that-payloads-are-coming-from-github).
## Configuration requirements
Each skillset is defined within a {% data variables.product.prodname_github_app %}. A single {% data variables.product.prodname_github_app %} can contain up to five skills. Each individual skill needs:
* **Name:** A clear and descriptive name (for example, "Get Issues").
* **Inference description:** A detailed explanation of what the skill does and when to use it (for example, "Searches for external issues matching specific criteria like status and labels").
* **API endpoint:** A POST endpoint that accepts JSON requests.
* **JSON schema:** The structure of data your endpoint expects.
### Example JSON schema
This example demonstrates a skill that requires two parameters: a status string and a label string. If no parameters are provided, an empty object with the type 'object' must be passed in as the request body.
```json
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "filter issues by status (open, closed)",
"enum": ["open", "closed"]
},
"label": {
"type": "string",
"description": "filter issues by label"
}
}
}
```
This format lets users make natural-language requests like `find open security issues` and {% data variables.product.prodname_copilot_short %} will structure the appropriate API call.
## Using your skillset
To use your skillset:
1. Type `@` followed by your extension's name.
1. Type your prompt in natural language.
For example:
* `@skillset-example generate a lorem ipsum`
* `@skillset-example give me sample data with 100 words`
Copilot interprets your request and calls the appropriate skill with the right parameters. There's no need to specify which skill to use—{% data variables.product.prodname_copilot_short %} determines this from your natural-language request and the inference descriptions provided.
## Setting up a skillset
{% data reusables.apps.settings-step-personal-orgs %}
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.github_apps %}
1. In the list of {% data variables.product.prodname_github_apps %}, click the {% data variables.product.prodname_github_app %} you want to configure for your skillset.
1. In the navigation menu on the left, select **{% data variables.product.prodname_copilot_short %}**.
1. Under **App Type**, select **Skillset** from the dropdown menu.
1. Optionally, in the **Pre-authorization URL** field, enter the URL where users will be redirected to start the authentication process. This step is necessary if your API requires users to connect their GitHub account to access certain features or data.
{% data reusables.copilot.copilot-extensions.skillsets-configuration-steps %}

View File

@@ -1,88 +0,0 @@
---
title: Configuring your GitHub App for your GitHub Copilot extension
intro: Learn how to configure your {% data variables.product.prodname_github_app %} so that it is associated with your {% data variables.copilot.copilot_extension_short %}.
defaultTool: agents
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Configure App for extension
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension/configure-app-for-extension
- /copilot/how-tos/build-copilot-extensions/create-a-copilot-extension/configure-app-for-extension
contentType: how-tos
category:
- Integrate Copilot with your tools
---
Once you have configured your server and created your {% data variables.product.prodname_github_app %}, you need to configure your {% data variables.product.prodname_github_app %} for use with your {% data variables.product.prodname_copilot_short %} extension.
## Prerequisites
* You have configured your server to deploy your {% data variables.copilot.copilot_extension_short %}, and you have your hostname (aka forwarding endpoint). For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
* You have created a {% data variables.product.prodname_github_app %} for your {% data variables.product.prodname_copilot_short %} extension. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension).
## Configuring your {% data variables.product.prodname_github_app %}
{% agents %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.copilot.copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your callback endpoint URL, then click **Save changes**.
> [!NOTE] Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. See [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
{% data reusables.copilot.copilot-extensions.account-permissions %}
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.copilot.copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Agent**.
1. Under "URL," enter your server's hostname (aka forwarding endpoint) that you copied from your terminal.
> [!NOTE] If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. Under "Inference description", type a brief description of your agent, then click **Save**. This will be the description users see when they hover over your extension's slug in the chat window.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save**.
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.
{% endagents %}
{% skillsets %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.copilot.copilot_extension_short %}, click **Edit**.
1. In the "Identifying and authorizing users" section, under "Callback URL", enter your callback endpoint URL, then click **Save changes**.
> [!NOTE] Your server's hostname is the forwarding endpoint that you copied from your terminal when you configured your server. See [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
>
> If you are using an ephemeral domain in ngrok, you will need to update this URL every time you restart your ngrok server.
1. In the left sidebar, click **Permissions & events**.
1. To expand the "Account permissions" section, click anywhere in the section.
{% data reusables.copilot.copilot-extensions.account-permissions %}
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Read the {% data variables.product.prodname_marketplace %} Developer Agreement and the {% data variables.product.github %} Pre-release License Terms, then accept the terms for creating a {% data variables.copilot.copilot_extension_short %}.
1. In the "App type" section, select the dropdown menu, then click **Skillset**.
1. Your pre-authorization URL is a link on your website that starts the authorization process for your extension. Users will be redirected to this URL when they decide to authorize your extension. If you are using a pre-authorization URL, under "Pre-authorization URL," enter the URL, then click **Save**.
{% data reusables.copilot.copilot-extensions.skillsets-configuration-steps %}
1. In your {% data variables.product.prodname_github_app %} settings, in the left sidebar, click **Install App**, then, next to the account you want to install your app on, click **Install**.
{% data reusables.copilot.go-to-copilot-page %}
1. Invoke your extension by typing `@EXTENSION-NAME`, replacing any spaces in the extension name with `-`, then press `Enter`.
1. If this is your first time using the extension, you will be prompted to authenticate. Follow the steps on screen to authenticate your extension.
1. Ask your extension a question in the chat window. For example, `What is the software development lifecycle?`.
{% endskillsets %}

View File

@@ -1,49 +0,0 @@
---
title: Creating a GitHub App for your GitHub Copilot Extension
intro: Learn how to create a {% data variables.product.prodname_github_app %} for your {% data variables.copilot.copilot_extension_short %}.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Create GitHub App
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension/create-github-app
- /copilot/how-tos/build-copilot-extensions/create-a-copilot-extension/create-github-app
contentType: how-tos
category:
- Integrate Copilot with your tools
---
A {% data variables.copilot.copilot_extension_short %} is a {% data variables.product.prodname_github_app %} that is associated with a {% data variables.copilot.copilot_agent_short %}. The {% data variables.product.prodname_github_app %} you associate your {% data variables.copilot.copilot_agent_short %} with is used to authenticate the {% data variables.copilot.copilot_agent_short %} with {% data variables.product.prodname_dotcom %} and to authorize the {% data variables.copilot.copilot_agent_short %} to access the {% data variables.copilot.copilot_chat_short %} API. Each {% data variables.copilot.copilot_agent_short %} must be associated with a unique {% data variables.product.prodname_github_app %}.
## Prerequisites
* You have created a {% data variables.copilot.copilot_agent_short %}. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension).
* You have configured your server to deploy your {% data variables.copilot.copilot_agent_short %}, and you have your hostname (aka forwarding endpoint). For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
## Creating a {% data variables.product.prodname_github_app %}
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. Click **New {% data variables.product.prodname_github_app %}**.
1. Under "{% data variables.product.prodname_github_app %} name," enter a name for your app.
> [!NOTE] The name cannot be longer than 34 characters.
>
>Your app's name will be shown in the user interface when your app takes an action. Uppercase letters will be converted to lowercase, with spaces replaced by `-`, and accents ignored. For example, `My APp Näme` would display as `my-app-name`.
>
> The name must be unique across {% data variables.product.company_short %}. You cannot use the same name as an existing {% data variables.product.company_short %} account, unless it is your own user or organization name.
1. Optionally, under "Description," type a description of your app. Users and organizations will see this description when they install your app.
1. Under "Homepage URL," enter a URL for your app. You can use:
* Your app's website URL.
* The URL of the organization or user that owns the app.
* The URL of the repository where your app's code is stored, if it is a public repository.
1. Under "Webhook," deselect **Active**.
1. Click **Create {% data variables.product.prodname_github_app %}**.
## Next steps
* [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent)

View File

@@ -1,58 +0,0 @@
---
title: Configuring your server to host your GitHub Copilot extension
intro: Learn how to make your {% data variables.product.prodname_copilot_short %} extension accessible to the internet.
versions:
feature: copilot-extensions
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-host-your-copilot-agent
- /copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-host-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-host-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension/host-your-extension
- /copilot/how-tos/build-copilot-extensions/create-a-copilot-extension/host-your-extension
topics:
- Copilot
shortTitle: Host your extension
contentType: how-tos
category:
- Integrate Copilot with your tools
---
Your {% data variables.copilot.copilot_extension_short %} must be hosted on a server that is accessible to the internet. In this guide, we will use [ngrok](https://ngrok.com/) to create a tunnel to your local server, but you could also use a service like [localtunnel](https://localtunnel.github.io/www/).
Alternatively, if you are a {% data variables.product.prodname_codespaces %} user, you can use the built-in {% data variables.product.prodname_codespaces %} port forwarding. For more information, see [AUTOTITLE](/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace).
## Prerequisites
* You have created a {% data variables.copilot.copilot_extension_short %}. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension) or [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension).
## Configuring your server
1. Visit the [ngrok setup & installation page](https://dashboard.ngrok.com/get-started/setup/).
1. If you do not yet have an account, follow the instructions on screen to sign up.
1. Under "Agents," ensure the correct operating system is selected.
1. Under "Installation," follow the instructions for your operating system to download and install ngrok.
1. Under "Deploy your app online," select **Ephemeral domain** or **Static domain**.
1. Run the command provided in your terminal, replacing the port number with the port your extension is configured to run on. For example:
* For an ephemeral domain:
```shell copy
ngrok http http://localhost:EXTENSION-PORT-NUMBER
```
* For a static domain:
```shell copy
ngrok http --domain=YOUR-STATIC-DOMAIN.ngrok-free.app EXTENSION-PORT-NUMBER
```
1. In your terminal, next to "Forwarding," copy the URL that ngrok has assigned to your server. You will need this forwarding endpoint when you are configuring your {% data variables.product.prodname_github_app %}.
> [!NOTE] Do not copy the `-> http://localhost:XXXX` part of the URL.
>
> Keep the terminal window open while you are using your extension.
## Next steps
* [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension)

View File

@@ -1,19 +0,0 @@
---
title: Creating a GitHub Copilot Extension
shortTitle: Create a Copilot Extension
intro: Learn how to integrate your {% data variables.copilot.copilot_agent_short %} with a {% data variables.product.prodname_github_app %} to create your {% data variables.copilot.copilot_extension_short %}.
versions:
feature: copilot
topics:
- Copilot
children:
- /host-your-extension
- /create-github-app
- /configure-app-for-extension
redirect_from:
- /copilot/building-copilot-extensions/creating-a-copilot-extension
- /copilot/how-tos/build-copilot-extensions/creating-a-copilot-extension
- /copilot/how-tos/build-copilot-extensions/create-a-copilot-extension
contentType: how-tos
---

View File

@@ -1,79 +0,0 @@
---
title: Debugging your GitHub Copilot Extension
intro: Learn how to debug your {% data variables.copilot.copilot_extension %} from the command line before you publish it.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Debug Copilot Extension
redirect_from:
- /copilot/building-copilot-extensions/debugging-your-github-copilot-extension
- /copilot/how-tos/build-copilot-extensions/debugging-your-github-copilot-extension
- /copilot/how-tos/build-copilot-extensions/debug-copilot-extension
contentType: how-tos
category:
- Integrate Copilot with your tools
---
With the debug tool for {% data variables.copilot.copilot_extensions_short %}, you can chat with your {% data variables.copilot.copilot_agent_short %} from the command line, then view detailed logs as your agent generates a response. You can pass several flags to the tool, with the most important flags being:
* The `url` flag, which contains the URL to access your {% data variables.copilot.copilot_agent_short %}. This is the only required flag to start the tool.
* The `log-level` flag, which determines the level of visibility you have into your {% data variables.copilot.copilot_agent_short %}'s process for generating a response. The available log levels are `DEBUG`, `NONE`, and `TRACE`, and the tool uses `DEBUG` by default.
* The `token` flag, which must contain a {% data variables.product.pat_v2 %} with read access to {% data variables.copilot.copilot_chat_short %} if your {% data variables.copilot.copilot_agent_short %} calls the {% data variables.product.prodname_copilot_short %} LLM. If your agent calls a different LLM, you don't need to use this flag.
## Prerequisites
To use the debug tool, you need to have the {% data variables.product.prodname_cli %} installed on your machine. You can install the {% data variables.product.prodname_cli %} in one of two ways:
* From the command line using a package manager. For example, to install the {% data variables.product.prodname_cli %} with Homebrew, paste the following command to the command line, then follow the prompts:
```bash copy
brew install gh
```
* From the [{% data variables.product.prodname_cli %} releases page](https://github.com/cli/cli/releases/tag/v2.56.0)
## Debugging your {% data variables.copilot.copilot_extension_short %} with the CLI
1. Optionally, to prepare to debug a specific server-sent event (SSE), add some code to your {% data variables.copilot.copilot_agent_short %} that sends an SSE when a prompt contains a certain keyword.
> [!NOTE] The debug tool does not handle the payload verification process. To validate your SSEs, you need to temporarily disable payload verification for local testing, then re-enable it after you have successfully tested your extension.
1. On the command line, start your {% data variables.copilot.copilot_agent_short %}.
1. To authenticate with the {% data variables.product.prodname_cli %} {% data variables.product.prodname_oauth_app %}, in a new window of your command line application, paste the following command and follow the prompts:
```bash copy
gh auth login --web -h github.com
```
1. In the same window, to install the debug tool, paste the following command:
```bash copy
gh extension install github.com/copilot-extensions/gh-debug-cli
```
1. Optionally, for a list of available flags and their descriptions, paste the following command to the command line:
```bash copy
gh debug-cli -h
```
1. Optionally, set environment variables for each flag you want to use. Environment variables allow you to set a constant value for a flag rather than passing a value in each time you run the debug tool. For example, if you are using the Blackbeard extension to test the debug tool, you can create an environment variable for the agent URL as follows:
```bash copy
export URL="http://localhost:3000"
```
> [!NOTE] To set an environment variable for a flag, you must use the name of the flag in all caps.
1. To start the debug tool, paste the following command to the command line, adding any flags you want to use:
```bash copy
gh debug-cli
```
The only required flag is the `url` flag, but you will likely want to use additional flags like `log-level` and `token`.
Once the debug tool is running, you should see a message that reads "Start typing to chat with your assistant...".
1. To interact with your agent, enter a prompt on the command line. The output will vary based on the log level you chose in the previous step, with the `DEBUG` and `TRACE` log levels providing more detailed information.
> [!TIP] If you are debugging an SSE, send a prompt containing the keyword you specified in your {% data variables.copilot.copilot_agent_short %} to trigger the SSE, then analyze the output in your command line application.

View File

@@ -1,22 +0,0 @@
---
title: GitHub Copilot Extensions
shortTitle: Build Copilot Extensions
intro: Learn how to integrate external tools with {% data variables.product.prodname_copilot_short %}.
versions:
feature: copilot
topics:
- Copilot
children:
- /set-up-copilot-extensions
- /create-a-copilot-extension
- /build-a-copilot-agent
- /build-copilot-skillsets
- /set-up-oidc
- /debug-copilot-extension
- /manage-extension-availability
redirect_from:
- /copilot/building-copilot-extensions
- /copilot/how-tos/build-copilot-extensions
contentType: how-tos
---

View File

@@ -1,71 +0,0 @@
---
title: Managing the availability of your GitHub Copilot Extension
intro: After you build your {% data variables.copilot.copilot_extension_short %}, you can change it's visibility or publish it on the {% data variables.product.prodname_marketplace %}.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Manage Extension availability
redirect_from:
- /copilot/building-copilot-extensions/managing-the-availability-of-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/managing-the-availability-of-your-copilot-extension
- /copilot/how-tos/build-copilot-extensions/manage-extension-availability
contentType: how-tos
category:
- Integrate Copilot with your tools
---
When you build a {% data variables.copilot.copilot_extension_short %}, you have two options for the visibility of your {% data variables.product.prodname_github_app %}:
* **Public:** Any user or organization account with the link to your app's installation page can install it. Making your app public automatically creates a public installation page, but does not list the app on the {% data variables.product.prodname_marketplace %}.
* **Private:** Any user, organization, or enterprise can create an extension. Any user or organization, and any organization in an enterprise can install an enterprise-created extension. Private extensions are not available to all users outside your organization or enterprise based on the level at which it was created.
If you make your app public, you can choose to publish it on the {% data variables.product.prodname_marketplace %}.
## Changing the visibility of your {% data variables.copilot.copilot_extension_short %}
{% data reusables.profile.access_org %}
{% data reusables.organizations.org-list %}
1. At the bottom of the sidebar, select **{% octicon "code" aria-hidden="true" aria-label="code" %} Developer settings**, then click **{% data variables.product.prodname_github_apps %}**.
1. In the "{% data variables.product.prodname_github_apps %}" section, next to the name of your {% data variables.copilot.copilot_extension_short %}, click **Edit**.
1. In the sidebar, click **Advanced**. At the bottom of the "Danger Zone" section, you will see one of two options:
* **Make public:** If you see the **Make public** option, your {% data variables.product.prodname_github_app %} is currently private, and can only be installed by the organization or user that created the app. You can click **Make public** to allow any other account with the link to your app's installation page to install your {% data variables.product.prodname_copilot_short %} extension. Leave the settings unchanged to keep your app private.
* **Make private:** If you see the **Make private** option, your {% data variables.product.prodname_github_app %} is currently public, and can be installed by any account with the link to your app's installation page. You can click **Make private** to only allow installations by the organization or user that created the app, or organizations that are part of the enterprise that created the extension. Leave the settings unchanged to keep your app public.
1. Optionally, if your {% data variables.product.prodname_github_app %} is public, you can share the link to the installation page for your {% data variables.copilot.copilot_extension_short %}. In the sidebar, click **Public page** in the sidebar, then copy the link for your listing.
> [!NOTE] You can set a published marketplace extension to private, and it will remain accessible on the {% data variables.product.prodname_marketplace %}. However, it won't be accessible from the direct installation page.
## Listing your {% data variables.copilot.copilot_extension_short %} on the {% data variables.product.prodname_marketplace %}
To list your {% data variables.copilot.copilot_extension_short %} on the {% data variables.product.prodname_marketplace %}, you must meet the following requirements:
* You must publish your app from an organization that is a verified publisher on the {% data variables.product.prodname_marketplace %}.
* If your organization is not yet verified, see [AUTOTITLE](/apps/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization).
* If you need to transfer ownership of your app from your personal account to your organization account, see [AUTOTITLE](/apps/maintaining-github-apps/transferring-ownership-of-a-github-app).
* Your app must meet the requirements for all {% data variables.copilot.copilot_extension_short %} listings on the {% data variables.product.prodname_marketplace %}. See [AUTOTITLE](/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app#requirements-for-github-copilot-extensions).
App managers cannot create, edit, or publish extensions on the {% data variables.product.prodname_marketplace %}. To manage a listing, you should be an organization owner for the publishing organization.
> [!NOTE] Paid plans are not supported for {% data variables.copilot.copilot_extensions_short %} during {% data variables.release-phases.public_preview %}. Any requests to publish with a paid plan attached will not be approved.
{% data reusables.profile.access_org %}
{% data reusables.organizations.org-list %}
1. At the bottom of the sidebar, select **{% octicon "code" aria-hidden="true" aria-label="code" %} Developer settings**, then click **{% data variables.product.prodname_github_apps %}**.
1. Select the app you'd like to publish to the {% data variables.product.prodname_marketplace %}.
1. On the app settings landing page, scroll down to the Marketplace section, then click **List in Marketplace**. The Marketplace section is only visible if your app is public.
1. In the "Listing name" text box, type a name for your listing. This name is displayed on the {% data variables.product.prodname_marketplace %} page and in search results, and can be changed later. {% data variables.product.github %} recommends using any of the following naming conventions:
* `YOUR-PRODUCT-NAME` (example: "{% data variables.product.prodname_copilot_short %}"): We recommend this convention if your extension stays within the scope of a single product and there are no other well-known products with the same name.
* `YOUR-COMPANY-NAME` (example "{% data variables.product.github %}"): We recommend this convention if your extension spans multiple products.
* `YOUR-COMPANY-PRODUCT-NAME` (example: "{% data variables.product.prodname_copilot %}"): We recommend this convention if your extension stays within the scope of one product, but there are other well-known products with the same name.
> [!NOTE] The listing name is not the same as your {% data variables.product.prodname_github_app %}'s name or your {% data variables.copilot.copilot_extension_short %}'s slug. Changing the listing name will not affect the app name or slug.
1. In the "Primary category" section, select the dropdown menu, then click a category. You can change your selection or add a secondary category later.
1. To create a draft listing for your {% data variables.copilot.copilot_extension_short %}, click **Save and add more details**.
1. After you create a new draft listing, you'll see a view where you can manage your listing. Before you can submit your listing for review, you need to:
* Fill out each of the required sections
* Verify the organization account that owns the {% data variables.product.prodname_github_app %}
* Accept the {% data variables.product.prodname_marketplace %} Developer Agreement
1. To submit your listing, click **Submit for review**. After your listing is reviewed, an onboarding expert will let you know if your submission was approved or denied.
> [!NOTE] {% data variables.product.github %} reviews all submissions to ensure they meet our standards for quality, performance, reliability, and security. {% data variables.product.github %} may deny submissions at its own discretion, and will provide reasons for denials. You are welcome to address any issues and resubmit your extension for review. You may also go through the [GitHub Appeal and Reinstatement Process](/free-pro-team@latest/site-policy/acceptable-use-policies/github-appeal-and-reinstatement).

View File

@@ -1,121 +0,0 @@
---
title: Setting up GitHub Copilot Extensions
intro: Follow these steps to start building {% data variables.copilot.copilot_extensions_short %}.
defaultTool: agents
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Set up Copilot Extensions
redirect_from:
- /copilot/building-copilot-extensions/setting-up-copilot-extensions
- /copilot/how-tos/build-copilot-extensions/setting-up-copilot-extensions
- /copilot/how-tos/build-copilot-extensions/set-up-copilot-extensions
contentType: how-tos
category:
- Integrate Copilot with your tools
---
<!-- expires 2025-11-19 -->
<!-- When this expires, check with the stakeholder for release #6165 if the knowledge bases content can be deleted -->
{% data reusables.copilot.copilot-extensions.extensions-retirement %}
<!-- end expires 2025-11-19 -->
This article is designed to help you build an entirely new {% data variables.copilot.copilot_extension %}. To instead learn how to quickly build and test a demo {% data variables.copilot.copilot_extension_short %} created by {% data variables.product.github %}, see [AUTOTITLE](/copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions).
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-1 %}
For more information about skillsets, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets).
{% data reusables.copilot.copilot-extensions.differences-between-agents-and-skillsets-2 %}
{% agents %}
## 1. Learn about {% data variables.copilot.copilot_agents_short %}
{% data variables.copilot.copilot_agents_short %} contain the custom code for your {% data variables.copilot.copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.copilot.copilot_extension_short %} itself. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents).
To successfully build a {% data variables.copilot.copilot_agent_short %}, you need to understand how the agent communicates with:
* The {% data variables.product.prodname_copilot_short %} platform using server-sent events. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-the-copilot-platform).
* The {% data variables.product.github %} API. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/configuring-your-copilot-agent-to-communicate-with-github).
## 2. Review example {% data variables.copilot.copilot_agents_short %} and the {% data variables.copilot.copilot_extensions_short %} SDK
To see the previous concepts in practice and learn about agent implementations, review the following example agents and software development kit (SDK), all of which are available in the [`copilot-extensions`](https://github.com/copilot-extensions) organization:
* [Blackbeard](https://github.com/copilot-extensions/blackbeard-extension) (best starting point): A simple agent that responds to requests like a pirate using {% data variables.product.prodname_copilot_short %}'s large language model (LLM) API and special system prompts.
* [{% data variables.product.prodname_github_models %}](https://github.com/copilot-extensions/github-models-extension): A more complex agent that lets you ask about and interact with various LLMs listed on the {% data variables.product.prodname_marketplace %} through {% data variables.copilot.copilot_chat_short %}. The {% data variables.product.prodname_github_models %} agent makes use of function calling.
* [Function Calling](https://github.com/copilot-extensions/function-calling-extension): An example agent written in Go that demonstrates function calling and confirmation dialogs.
* [RAG Extension](https://github.com/copilot-extensions/rag-extension): An example agent written in Go that demonstrates a simple implementation of retrieval augmented generation.
* [Preview SDK](https://github.com/copilot-extensions/preview-sdk.js/tree/main): An SDK that streamlines the development of {% data variables.copilot.copilot_extensions_short %} by handling request verification, payload parsing, and response formatting automatically. This SDK allows extension builders to focus more on creating core functionality and less on boilerplate code.
## 3. Build a {% data variables.copilot.copilot_agent_short %}
Using the reference material from the previous steps, plan and build your {% data variables.copilot.copilot_agent_short %}. You can choose to implement any of the following options:
* To avoid building and managing your own LLM deployment, your agent can call the Copilot LLM deployment. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-copilots-llm-for-your-agent).
* To quickly interpret user input and choose from a variety of predefined functions to execute, you can implement function calling in your agent. To learn more, see [How to use function calling with Azure OpenAI Service](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/function-calling) in the Azure OpenAI documentation and [Function calling](https://platform.openai.com/docs/guides/function-calling) in the OpenAI documentation.
## 4. Deploy your {% data variables.copilot.copilot_agent_short %}
To make your {% data variables.copilot.copilot_agent_short %} accessible to the {% data variables.product.prodname_copilot_short %} platform and {% data variables.product.github %}, you need to deploy it to a server that is reachable by HTTP request. See [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
## 5. Create a {% data variables.product.prodname_github_app %} and integrate it with your {% data variables.copilot.copilot_agent_short %}
To create a {% data variables.copilot.copilot_extension_short %}, you need to create and configure a {% data variables.product.prodname_github_app %}, then integrate it with your {% data variables.copilot.copilot_agent_short %}. See [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension) and [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent).
## 6. Choose the availability of your {% data variables.copilot.copilot_extension_short %}
Choose one of two visibility levels for your {% data variables.copilot.copilot_extension_short %}:
* **Public:** Any user or organization account with the installation page link for the extension can install it.
* **Private:** Only the user or organization account that created the extension can install it.
If you make your {% data variables.copilot.copilot_extension_short %} public, you can then choose to list it on the {% data variables.product.prodname_marketplace %}.
To learn how to change the visibility of your {% data variables.copilot.copilot_extension_short %} and list it on the {% data variables.product.prodname_marketplace %}, see [AUTOTITLE](/copilot/building-copilot-extensions/managing-the-availability-of-your-copilot-extension).
## Next steps
To learn how to use your {% data variables.copilot.copilot_extension_short %}, see [AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat).
{% endagents %}
{% skillsets %}
## 1. Learn about {% data variables.copilot.copilot_skillsets %}
{% data variables.copilot.copilot_skillsets %} contain the custom code for your {% data variables.copilot.copilot_extension_short %}, and integrate with a {% data variables.product.prodname_github_app %} to form the {% data variables.copilot.copilot_extension_short %} itself.
Unlike {% data variables.copilot.copilot_agents_short %}, {% data variables.copilot.copilot_skillsets_short %} handle the logic behind prompt crafting, function evaluation, and response generation, making them an ideal choice for developers seeking quick and effective integrations with minimal effort. For more information, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/about-copilot-skillsets).
## 2. Build a {% data variables.copilot.copilot_skillset_short %}
To explore an example of a skillset implementation, see the [skillset-example](https://github.com/copilot-extensions/skillset-example) repository in the [`copilot-extensions`](https://github.com/copilot-extensions) organization.
To build a skillset, see [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-skillset-for-your-copilot-extension/building-copilot-skillsets).
## 3. Deploy your {% data variables.copilot.copilot_skillset_short %}
To make your {% data variables.copilot.copilot_skillset_short %} accessible to the {% data variables.product.prodname_copilot_short %} platform and {% data variables.product.github %}, you need to deploy it to a server that is reachable by HTTP request. See [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-server-to-deploy-your-copilot-agent).
## 4. Create a {% data variables.product.prodname_github_app %} and integrate it with your {% data variables.copilot.copilot_skillset_short %}
To create a {% data variables.copilot.copilot_extension_short %}, you need to create and configure a {% data variables.product.prodname_github_app %}, then integrate it with your {% data variables.copilot.copilot_skillset_short %}. See [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension) and [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent).
## 5. Choose the availability of your {% data variables.copilot.copilot_skillset_short %}
Choose one of two visibility levels for your {% data variables.copilot.copilot_extension_short %}:
* **Public:** Any user or organization account with the installation page link for the extension can install it.
* **Private:** Only the user or organization account that created the extension can install it.
If you make your {% data variables.copilot.copilot_extension_short %} public, you can then choose to list it on the {% data variables.product.prodname_marketplace %}.
To learn how to change the visibility of your {% data variables.copilot.copilot_extension_short %} and list it on the {% data variables.product.prodname_marketplace %}, see [AUTOTITLE](/copilot/building-copilot-extensions/managing-the-availability-of-your-copilot-extension).
## Next steps
To learn how to use your {% data variables.copilot.copilot_extension_short %}, see [AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat).
{% endskillsets %}

View File

@@ -1,111 +0,0 @@
---
title: Setting up OIDC for your GitHub Copilot extension
intro: Learn how to set up OpenID Connect (OIDC) with your {% data variables.copilot.copilot_extension_short %} to enhance security.
versions:
feature: copilot-extensions
topics:
- Copilot
shortTitle: Set up OIDC
allowTitleToDifferFromFilename: true
redirect_from:
- /copilot/building-copilot-extensions/using-oidc-with-copilot-extensions
- /copilot/building-copilot-extensions/using-oidc-with-github-copilot-extensions
- /copilot/how-tos/build-copilot-extensions/using-oidc-with-github-copilot-extensions
- /copilot/how-tos/build-copilot-extensions/set-up-oidc
contentType: how-tos
category:
- Integrate Copilot with your tools
---
## Introduction
You can set up OIDC so that {% data variables.product.prodname_copilot_short %} agents and skillsets can more securely authenticate users and access cloud resources. For more information on OIDC, see [AUTOTITLE](/copilot/concepts/copilot-extensions/openid-connect).
There are three steps to setting up OIDC for your extension.
* [Configure your token exchange endpoint](#configure-your-token-exchange-endpoint).
* [Enable OIDC in your Copilot extensions settings](#enable-oidc-in-your-copilot-extensions-settings).
* [Validate OIDC tokens](#validate-oidc-tokens).
## Configure your token exchange endpoint
Create an endpoint in your service that conforms to the [RFC 8693 OAuth 2.0 Token Exchange](https://www.rfc-editor.org/rfc/rfc8693.html).
This endpoint should:
* Accept `POST` requests with the following form-encoded parameters:
```http request
grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=<https://your-service.com/resource>
&subject_token=<github-jwt-token>
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
```
* Return a JSON response with your service's access token:
```json
{
"access_token": <"your-service-token">,
"issued_token_type":"urn:ietf:params:oauth:token-type:access_token",
"token_type": "Bearer",
"expires_in": 3600
}
```
* Return an error response when validation fails:
```json
{
"error": "invalid_request"
}
```
## Enable OIDC in your {% data variables.copilot.copilot_extension_short %}'s settings
In your {% data variables.copilot.copilot_extension_short %}'s configuration, enable OIDC:
{% data reusables.apps.settings-step %}
{% data reusables.apps.enterprise-apps-steps %}
1. To the right of the {% data variables.product.prodname_github_app %} you want to configure for your {% data variables.copilot.copilot_extension_short %}, click **Edit**.
1. In the left sidebar, click **{% data variables.product.prodname_copilot_short %}**.
1. Under **OpenID Connect Token Exchange**, check **Enabled**.
1. In the **Token exchange endpoint** field, input your token exchange URL.
1. In the **Request header key** field, input the header key for your service's token. The default is `Authorization`.
1. In the **Request header value** field, input the header value format. The default is `Bearer ${token}`.
## Validate OIDC tokens
Your token exchange endpoint should validate the {% data variables.product.github %} OIDC token by following the steps below:
1. Fetch the JSON Web Key Set (JWKS) from https://github.com/login/oauth/.well-known/openid-configuration.
1. Verify the token signature.
1. Validate required claims.
* `aud`: Audience. Your {% data variables.copilot.copilot_extension_short %}'s client ID.
* `sub`: Subject. The {% data variables.product.github %} user ID making the request. The response is limited to data that the user has permissions to access. If the user has no permissions `400 Bad Request` is shown.
* `iat`: Issued At. The timestamp when the token was issued. It is typically a timestamp in the past but represents the exact moment the token was created.
* `nbf`: Not Before. The timestamp before which the token is not valid. This should be a timestamp in the past.
* `exp`: Expiration Time. The timestamp when the token expires. This should be a timestamp in the future.
* `act`: Actor. The acting entity in delegated access. This should be a constant string.
## Troubleshooting
The following sections outline common problems and best practices for implementing OIDC for your {% data variables.copilot.copilot_extension_short %}.
### Token validation errors
* Ensure you're using the correct JWKS endpoint.
* Verify that all the required claims are present and valid.
* Check that timestamps (`iat`, `nbf`, and `exp`) are within valid ranges.
### Token exchange failures
* Return `HTTP 400` for invalid tokens.
* Return `HTTP 403` if the user lacks the necessary permissions.
* If {% data variables.product.github %} receives a 403 response, it will retry the request with a new token.
### Performance issues
* Implement efficient token validation to minimize latency.
* Use appropriate token expiration times (recommended: 10 minutes or less).
* Consider caching implications for high-traffic extensions.
## Further reading
* [AUTOTITLE](/copilot/concepts/copilot-extensions/openid-connect)

View File

@@ -1,83 +0,0 @@
---
title: GitHub Copilot Extensions glossary
shortTitle: Extensions glossary
allowTitleToDifferFromFilename: true
intro: 'Understand the terminology used in {% data variables.copilot.copilot_extensions_short %}.'
versions:
feature: copilot-extensions
topics:
- Copilot
category:
- Learn about Copilot
redirect_from:
- /copilot/building-copilot-extensions/copilot-extensions-glossary
- /copilot/reference/copilot-extensions/copilot-extensions-glossary
- /copilot/reference/copilot-extensions-glossary
contentType: reference
---
The following terms are used in the context of {% data variables.copilot.copilot_extensions_short %}, and are defined here for clarity.
#### Agent
A type of {% data variables.copilot.copilot_extension_short %} implementation that gives developers full control over handling user queries and response generation. This approach is ideal for builders who want complete customization and management of AI interactions.
#### Context passing
A capability in {% data variables.copilot.copilot_extensions_short %} that enables user context from editors to be sent to agents, allowing for more tailored responses.
#### {% data variables.copilot.copilot_chat_short %}
The conversational interface within {% data variables.product.prodname_copilot %} where users can interact with the AI assistant and extensions.
#### {% data variables.copilot.copilot_extension_short %}
A {% data variables.product.prodname_github_app %} with additional access to the {% data variables.copilot.copilot_chat_short %} window and Copilot API, allowing for extended functionality in {% data variables.product.company_short %}'s {% data variables.copilot.copilot_chat_short %}. This is how we will refer to extensions from the perspective of an extension user.
#### {% data variables.product.prodname_copilot_short %} extensibility platform
The system that handles authentication and proxies requests between clients and agent plugins.
#### {% data variables.copilot.copilot_vsc_chat_participant %}
Also known as {% data variables.product.prodname_vscode %} Chat extensions, {% data variables.copilot.copilot_vsc_chat_participants %} are built as a {% data variables.product.prodname_vscode %} extension rather than a {% data variables.product.prodname_github_app %}. These extensions are exclusive to {% data variables.product.prodname_vscode_shortname %} and can be downloaded from the {% data variables.product.prodname_vscode_shortname %} Marketplace.
#### {% data variables.product.prodname_github_app %}
The foundation for a {% data variables.copilot.copilot_extension_short %} that provides the necessary infrastructure, permissions, and context from {% data variables.product.company_short %}, such as user, repo and organization metadata.
#### {% data variables.product.prodname_marketplace %}
The platform where {% data variables.product.company_short %} approved {% data variables.copilot.copilot_extensions %} can be listed publicly and discovered by users.
#### Listed/published extension
An extension that appears on the {% data variables.product.prodname_marketplace %}. These extensions must be reviewed and approved by {% data variables.product.company_short %}.
#### Private extension
An extension that is only visible and usable by the enterprise, organization, or individual user that created it. Enterprise-created extensions can be installed by organizations that are within the enterprise.
#### Public extension
An extension that is visible and installable by any {% data variables.product.company_short %} user or organization.
#### Skill
A piece of code that retrieves context or executes an action in response to a users prompt (for example, "findIssueByID(id: number)"). For a list of a skills, see [Currently available skills](/copilot/using-github-copilot/asking-github-copilot-questions-in-your-ide#currently-available-skills).
#### Skillset
A type of {% data variables.copilot.copilot_extension_short %} implementation that gives developers the ability to connect external services and custom API endpoints to {% data variables.product.prodname_copilot_short %} with minimal complexity. The {% data variables.copilot.copilot_extensibility_platform_short %} handles prompt crafting, function evaluation, and response generation. The builder only needs to handle API skill definitions. This approach is ideal for builders who want minimal complexity.
#### Tool/function calling
A capability of {% data variables.product.prodname_copilot_short %}'s LLM (as well as Open AIs) that allows them to invoke specific tools or functions. Extension builders can define available tools with parameters, enabling the LLM to select and call appropriate tools to fulfill a users request. “Functions” are a subset of “tools” and the “function calling” term will be {% data variables.release-phases.closing_down %}.
#### Unlisted extension
An extension that is not published on the {% data variables.product.prodname_marketplace %}. Builders may develop and distribute public unlisted extensions without requiring review or approval from {% data variables.product.company_short %}. {% data variables.product.company_short %} does not guarantee the security or quality of unlisted extensions.
#### Verified creator
A status required for organizations to publish extensions on the {% data variables.product.prodname_marketplace %}.

View File

@@ -16,7 +16,6 @@ children:
- /metrics-data
- /copilot-billing
- /agentic-audit-log-events
- /extensions-glossary
- /copilot-usage-metrics
contentType: reference
---

View File

@@ -48,7 +48,6 @@ Feature, model, and privacy settings for users are set according to the **least
| {% data variables.copilot.copilot_code-review_short %} | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use/code-review) |
| {% data variables.copilot.copilot_coding_agent %} | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom) |
| {% data variables.product.prodname_spark_short %} | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use/spark) |
| {% data variables.copilot.copilot_extensions_short %} | Least restrictive organization | [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions) |
| {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %} | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use/chat-in-github) |
| {% data variables.copilot.copilot_desktop_short %} | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use/copilot-in-github-desktop) |
| {% data variables.copilot.copilot_cli_short %} | Least restrictive organization | [AUTOTITLE](/copilot/responsible-use/copilot-cli) |

View File

@@ -9,6 +9,8 @@ topics:
- Copilot
redirect_from:
- /copilot/tutorials/enhancing-copilot-agent-mode-with-mcp
- /copilot/how-tos/use-copilot-extensions/build-a-copilot-agent/use-context-passing
- /copilot/tutorials/try-extensions
contentType: tutorials
category:
- Automate simple user stories

View File

@@ -26,7 +26,6 @@ children:
- /migrate-a-project
- /plan-a-project
- /upgrade-projects
- /try-extensions
redirect_from:
- /copilot/using-github-copilot/guides-on-using-github-copilot
contentType: tutorials

View File

@@ -1,135 +0,0 @@
---
title: Quickstart for GitHub Copilot Extensions using agents
defaultTool: vscode
intro: 'Build and try out {% data variables.product.github %}''s Blackbeard extension to learn about the development process for {% data variables.copilot.copilot_extensions %}.'
versions:
feature: copilot-extensions
redirect_from:
- /copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/using-a-demo-agent
- /copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions
- /copilot/building-copilot-extensions/quickstart-for-github-copilot-extensions-using-agents
- /copilot/how-tos/build-copilot-extensions/quickstart-for-github-copilot-extensions-using-agents
- /copilot/tutorials/quickstart-for-github-copilot-extensions-using-agents
topics:
- Copilot
shortTitle: Try Extensions
contentType: tutorials
category:
- Rapid prototyping
- Integrate Copilot with your tools
---
The [Blackbeard extension](https://github.com/copilot-extensions/blackbeard-extension) is a {% data variables.copilot.copilot_extension %} that comprises a {% data variables.product.prodname_github_app %} and a {% data variables.product.prodname_copilot_short %} agent. The agent responds to chat requests in the style of a pirate, using {% data variables.product.prodname_copilot_short %}'s large language model (LLM) API and special system prompts. See [AUTOTITLE](/copilot/building-copilot-extensions/building-a-copilot-agent-for-your-copilot-extension/about-copilot-agents).
This guide uses a simple agent implementation, but the process is similar for skillsets. For information about the difference between agents and skillsets, see [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions).
This quickstart is designed to help you build and chat with the Blackbeard extension as quickly as possible, so you can develop and test your extension without deploying infrastructure. For production, you'll need to host the application for your agent or skillset's endpoints on a publicly accessible server. To instead learn how to create a new {% data variables.copilot.copilot_extension %}, see [AUTOTITLE](/copilot/building-copilot-extensions/setting-up-copilot-extensions).
## 1. Create and install a {% data variables.product.prodname_github_app %}
In the developer settings for your {% data variables.product.github %} account, create a {% data variables.product.prodname_github_app %}. Your {% data variables.product.prodname_github_app %} must have:
* A name
* A homepage URL
* Webhooks deselected
After you create your app, click **Install App** in the sidebar, then install your app on your account.
For detailed instructions, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/creating-a-github-app-for-your-copilot-extension#creating-a-github-app).
{% vscode %}
## 2. Clone and host the Blackbeard agent locally
Rather than deploying the Blackbeard agent as a web app, you can host your agent locally for a significantly faster build process.
1. Using the Terminal built into {% data variables.product.prodname_vscode_shortname %}, clone the [`copilot-extensions/blackbeard-extension`](https://github.com/copilot-extensions/blackbeard-extension) repository.
1. In the same Terminal, run `npm install` to install the necessary dependencies, then run `npm start` to start the Blackbeard agent on port 3000.
1. In the "Ports" tab of the {% data variables.product.prodname_vscode_shortname %} panel, click **Forward a port** or **Add port**, then add port 3000.
1. Right-click the port and set the visibility to "Public," then copy the local address.
## 3. Integrate and test the Blackbeard extension
After you set up your {% data variables.product.prodname_github_app %} and Blackbeard agent, you can integrate the agent with your app and test the Blackbeard extension. You need to make the following changes to your {% data variables.product.prodname_github_app %} settings:
* In the "General" settings, in the "Callback URL" field, paste the local address for your agent.
* In the "Permissions & events" settings, grant read-only permissions to {% data variables.copilot.copilot_chat_short %}.
* In the "{% data variables.product.prodname_copilot_short %}" settings, set your app type to "Agent," then fill out the remaining fields.
After you update your {% data variables.product.prodname_github_app %} settings, you can start chatting with your extension by typing `@YOUR-EXTENSION-NAME` in the {% data variables.copilot.copilot_chat_short %} window, then sending a prompt as normal.
For more detailed instructions, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent#configuring-your-github-app).
{% endvscode %}
{% codespaces %}
## 2. Clone and host the Blackbeard agent in a codespace
Rather than deploying the Blackbeard agent as a web app, you can host your agent in a codespace for a significantly faster build process.
1. Navigate to the [`copilot-extensions/blackbeard-extension`](https://github.com/copilot-extensions/blackbeard-extension) repository. Select the **{% octicon "code" aria-hidden="true" aria-label="code" %} Code** {% octicon "triangle-down" aria-hidden="true" aria-label="triangle-down" %} dropdown menu, then click **Create codespace on main**.
1. To find your new codespace, select the **{% octicon "code" aria-hidden="true" aria-label="code" %} Code** {% octicon "triangle-down" aria-hidden="true" aria-label="triangle-down" %} dropdown menu. Next to your new codespace, select {% octicon "kebab-horizontal" aria-label="Show more actions for codespace" %}, then click **{% octicon "globe" aria-hidden="true" aria-label="globe" %} Open in Browser**.
1. In the integrated Terminal, run `npm start` to start the Blackbeard agent on port 3000.
1. In the "Ports" tab of the {% data variables.product.prodname_vscode_shortname %} panel, click **Forward a port**, then add port 3000.
1. Right-click the port and set the visibility to "Public," then copy the local address.
## 3. Integrate and test the Blackbeard extension
After you set up your {% data variables.product.prodname_github_app %} and Blackbeard agent, you can integrate the agent with your app and test the Blackbeard extension. You need to make the following changes to your {% data variables.product.prodname_github_app %} settings:
* In the "General" settings, in the "Callback URL" field, paste the forwarded address for your agent.
* In the "Permissions & events" settings, grant read-only permissions to {% data variables.copilot.copilot_chat_short %}.
* In the "{% data variables.product.prodname_copilot_short %}" settings, set your app type to "Agent," then fill out the remaining fields.
After you update your {% data variables.product.prodname_github_app %} settings, you can start chatting with your extension by typing `@YOUR-EXTENSION-NAME` in the {% data variables.copilot.copilot_chat_short %} window of a supported client or IDE, then sending a prompt as normal. For a list of supported clients and IDEs, see [AUTOTITLE](/copilot/concepts/copilot-extensions/about-copilot-extensions#supported-clients-and-ides).
> [!NOTE] Chatting with {% data variables.copilot.copilot_extensions %} in {% data variables.product.prodname_github_codespaces %} is not supported.
For more detailed instructions, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent#configuring-your-github-app).
{% endcodespaces %}
{% bash %}
## 2. Clone and start the Blackbeard agent locally
Rather than deploying the Blackbeard agent as a web app, you can host your agent locally for a significantly faster build process.
1. Using your command line application, clone the [`copilot-extensions/blackbeard-extension`](https://github.com/copilot-extensions/blackbeard-extension) repository.
1. Run `npm install` to install the necessary dependencies, then run `npm start` to start the Blackbeard agent on port 3000.
## 3. Expose your local server
To make the Blackbeard agent accessible to the {% data variables.product.prodname_copilot_short %} platform and {% data variables.product.github %}, you need to expose your local server so it's reachable by HTTP requests. You can use any port forwarding or tunneling service to achieve this. For the following steps, we'll use ngrok.
1. Navigate to [ngrok's download page](https://ngrok.com/downloads/), then install the appropriate version of ngrok for your operating system.
1. Navigate to the [ngrok setup and installation page](https://dashboard.ngrok.com/get-started/setup/), then log in or sign up for an ngrok account.
1. To expose your local server, in a new window of your command line application, run the following command:
```shell copy
ngrok http http://localhost:3000
```
1. In your command line application, next to "Forwarding," copy the URL that ngrok assigned to your server.
## 4. Integrate and test the Blackbeard extension
To integrate your {% data variables.product.prodname_github_app %} with the Blackbeard agent, you need to make the following changes to your app settings:
* In the "General" settings, in the "Callback URL" field, paste the URL for your exposed server.
* In the "Permissions & events" settings, grant read-only permissions to {% data variables.copilot.copilot_chat_short %}.
* In the "{% data variables.product.prodname_copilot_short %}" settings, set your app type to "Agent," then fill out the remaining fields.
After you update your {% data variables.product.prodname_github_app %} settings, you can start chatting with your extension by typing `@YOUR-EXTENSION-NAME` in the {% data variables.copilot.copilot_chat_short %} window, then sending a prompt as normal.
For more detailed instructions, see [AUTOTITLE](/copilot/building-copilot-extensions/creating-a-copilot-extension/configuring-your-github-app-for-your-copilot-agent#configuring-your-github-app).
{% endbash %}
## Next steps
Now that you have a working {% data variables.copilot.copilot_extension %}, you can try building on the Blackbeard agent to experiment with agent development.
To learn about more complex agent implementations, you can also review the following example agents and software development kit (SDK), all of which are available in the [`copilot-extensions`](https://github.com/copilot-extensions) organization:
* [{% data variables.product.prodname_github_models %}](https://github.com/copilot-extensions/github-models-extension): A more complex agent that lets you ask about and interact with various LLMs listed on the {% data variables.product.prodname_marketplace %} through {% data variables.copilot.copilot_chat_short %}. The {% data variables.product.prodname_github_models %} agent makes use of function calling.
* [Function Calling](https://github.com/copilot-extensions/function-calling-extension): An example agent written in Go that demonstrates function calling and confirmation dialogs.
* [RAG Extension](https://github.com/copilot-extensions/rag-extension): An example agent written in Go that demonstrates a simple implementation of retrieval augmented generation.
* [Preview SDK](https://github.com/copilot-extensions/preview-sdk.js/tree/main): An SDK that streamlines the development of {% data variables.copilot.copilot_extensions_short %} by handling request verification, payload parsing, and response formatting automatically. This SDK allows extension builders to focus more on creating core functionality and less on boilerplate code.

View File

@@ -38,8 +38,7 @@ The following documentation contains more information about using {% data variab
* Using {% data variables.product.prodname_dotcom %} code search on {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/search-github/github-code-search/using-github-code-search#using-github-code-search-on-github-mobile).{% endif %}{% ifversion fpt or ghec %}
* Two-factor authentication using {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-github-mobile) and [Authenticating using {% data variables.product.prodname_mobile %}](/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication#verifying-with-github-mobile). {% endif %}{% ifversion copilot-chat-for-mobile %}
* Using {% data variables.copilot.copilot_mobile %}, see [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github-mobile/using-github-copilot-chat-in-github-mobile).{% endif %}{% ifversion copilot-chat-for-mobile %}
* Assigning issues to {% data variables.product.prodname_copilot_short %} from {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/assign-copilot-to-an-issue).{% endif %}{% ifversion copilot-chat-for-mobile %}
* Using {% data variables.copilot.copilot_extensions %} in {% data variables.product.prodname_mobile %}, see [Extending {% data variables.copilot.copilot_chat_short %} in {% data variables.product.prodname_mobile %}](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile#extending-copilot-chat-in-github-mobile).{% endif %}
* Assigning issues to {% data variables.product.prodname_copilot_short %} from {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/assign-copilot-to-an-issue).{% endif %}
## Installing {% data variables.product.prodname_mobile %}

View File

@@ -8,5 +8,4 @@ children:
- /optimizing-your-ai-powered-app-with-github-models
- /evaluating-ai-models
- /storing-prompts-in-github-repositories
- /integrating-ai-models-into-your-development-workflow
---

View File

@@ -1,109 +0,0 @@
---
title: Integrating AI models into your development workflow
intro: 'Call AI models in the tools you use every day.'
versions:
feature: github-models
shortTitle: Integrate AI models
redirect_from:
- /github-models/integrating-ai-models-into-your-development-workflow
---
With {% data variables.product.prodname_github_models %} extensions, you can call specific AI models from both {% data variables.copilot.copilot_chat_short %} and {% data variables.product.prodname_cli %}. These extensions integrate directly into your development workflow, allowing you to prompt models without context switching.
## Using AI models in {% data variables.copilot.copilot_chat_short %}
If you have a {% data variables.product.prodname_copilot_short %} subscription, you can work with AI models in {% data variables.copilot.copilot_chat_short %} in two different ways:
* Using the {% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %}. With this extension, you can ask for model recommendations based on certain criteria and chat with specific models. See [Using the {% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %}](#using-the-github-models-copilot-extension).
* Using multiple model support in {% data variables.copilot.copilot_chat_short %}. With multi-model {% data variables.copilot.copilot_chat_short %}, you can choose a specific model to use for a conversation, then prompt {% data variables.copilot.copilot_chat_short %} as usual. See [AUTOTITLE](/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat).
### Using the {% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %}
> [!NOTE] The {% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %} is in {% data variables.release-phases.public_preview %} and is subject to change.
1. Install the [{% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %}](https://github.com/marketplace/models-github).
* If you have a {% data variables.copilot.copilot_pro_short %} subscription, you can install the extension on your personal account.
* If you have access to {% data variables.product.prodname_copilot_short %} through a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} subscription:
* An organization owner or enterprise owner needs to enable the {% data variables.copilot.copilot_extensions_short %} policy for your organization or enterprise.
* An organization owner needs to install the extension for your organization.
1. Open any implementation of {% data variables.copilot.copilot_chat_short %} that supports {% data variables.copilot.copilot_extensions %}. For a list of supported {% data variables.copilot.copilot_chat_short %} implementations, see [AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat#supported-clients-and-ides).
1. In the chat window, type `@models YOUR-PROMPT`, then send your prompt. There are several use cases for the {% data variables.product.prodname_github_models %} {% data variables.copilot.copilot_extension_short %}, including:
* Recommending a particular model based on context and criteria you provide. For example, you can ask for a low-cost OpenAI model that supports function calling.
* Executing prompts using a particular model. This is especially useful when you want to use a model that is not currently available in multi-model {% data variables.copilot.copilot_chat_short %}.
* Listing models currently available through {% data variables.product.prodname_github_models %}
## Using AI models with {% data variables.product.prodname_actions %}
You can use the {% data variables.product.prodname_actions %} token (`GITHUB_TOKEN`) to call AI models directly inside your workflows.
### Setting permissions
To use AI models in your workflows, ensure that the `models` permission is enabled in your workflow configuration. This permission allows workflows to access the {% data variables.product.prodname_github_models %} inference API. You can either set this permission itself or use the general `read-all` or `write-all` permissions. See [AUTOTITLE](/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#repository-permissions-for-actions).
### Writing your workflow file
You can call the inference API directly from your workflow. For instance:
```yaml
name: Use GitHub Models
on:
workflow_dispatch:
permissions:
models: read
jobs:
call-model:
runs-on: ubuntu-latest
steps:
- name: Call AI model
env:
GITHUB_TOKEN: {% raw %}${{ secrets.GITHUB_TOKEN }}{% endraw %}
run: |
curl "https://models.github.ai/inference/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-d '{
"messages": [
{
"role": "user",
"content": "Explain the concept of recursion."
}
],
"model": "openai/gpt-4o"
}'
```
## Using AI models from the command line
> [!NOTE] The {% data variables.product.prodname_github_models %} extension for {% data variables.product.prodname_cli %} is in {% data variables.release-phases.public_preview %} and is subject to change.
You can use the {% data variables.product.prodname_github_models %} extension for {% data variables.product.prodname_cli %} to prompt AI models from the command line, and even pipe in the output of a command as context.
### Prerequisites
To use the {% data variables.product.prodname_github_models %} CLI extension, you must install {% data variables.product.prodname_cli %}. {% data reusables.cli.cli-installation %}
### Installing the extension
1. If you have not already authenticated to the {% data variables.product.prodname_cli %}, run the following command in your terminal.
```shell copy
gh auth login
```
1. To install the {% data variables.product.prodname_github_models %} extension, run the following command.
```shell copy
gh extension install https://github.com/github/gh-models
```
### Using the extension
To see a list of all available commands, run `gh models`.
There are a few key ways you can use the extension:
* **To ask a model multiple questions using a chat experience**, run `gh models run`. Select your model from the listed models, then send your prompts.
* **To ask a model a single question**, run `gh models run MODEL-NAME "QUESTION"` in your terminal. For example, to ask the {% data variables.copilot.copilot_gpt_41 %} model why the sky is blue, you can run `gh models run openai/gpt-4.1 "why is the sky blue?"`.
* **To provide the output of a command as context when you call a model**, you can join a separate command and the call to the model with the pipe character (`|`). For example, to summarize the README file in the current directory using the {% data variables.copilot.copilot_gpt_41 %} model, you can run `cat README.md | gh models run openai/gpt-4.1 "summarize this text"`.

View File

@@ -157,7 +157,6 @@ childGroups:
- rest
- graphql
- webhooks
- copilot/how-tos/use-copilot-extensions
- github-models
- name: Community
octicon: GlobeIcon

View File

@@ -1,4 +1,2 @@
{% data variables.copilot.copilot_extensions %} integrate the power of external tools into {% data variables.copilot.copilot_chat_short %}, helping you reduce context switching and receive responses with domain-specific context. You can install {% data variables.copilot.copilot_extensions_short %} from the {% data variables.product.prodname_marketplace %} or build private ones within your organization, then type `@` in a chat window to see a list of your available extensions. To use an extension, select the extension from the list or type the full slug name, then type your prompt.
To learn more, see [AUTOTITLE](/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat).

View File

@@ -17,7 +17,7 @@
| {% data variables.copilot.copilot_coding_agent %} ({% data variables.release-phases.public_preview %}) | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Agent mode | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| {% data variables.product.prodname_copilot_short %} code review | Only "Review selection" in {% data variables.product.prodname_vscode_shortname %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| {% data variables.copilot.copilot_extensions_short %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Model Context Protocol (MCP) | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
{% endrowheaders %}
@@ -62,7 +62,7 @@
| Repository and personal custom instructions | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Organization custom instructions ({% data variables.release-phases.public_preview %}) | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Prompt files | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Private extensions | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Model Context Protocol (MCP) | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Block suggestions matching public code | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Exclude specified files from {% data variables.product.prodname_copilot_short %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |
| Organization-wide policy management | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} |

View File

@@ -0,0 +1 @@
You can use MCP to extend the capabilities of {% data variables.copilot.copilot_chat_short %} by integrating it with a wide range of existing tools and services. For additional information, see [AUTOTITLE](/copilot/concepts/context/mcp).