title | shortTitle | intro | permissions | product | layout | versions | redirect_from | topics | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Excluding content from GitHub Copilot |
Exclude content from Copilot |
You can prevent {% data variables.product.prodname_copilot_short %} from accessing certain content. |
Repository administrators{% ifversion ghec%}, organization owners, and enterprise owners{% else %} and organization owners{% endif %} can manage content exclusion settings. People with the "Maintain" role for a repository can view, but not edit, content exclusion settings for that repository. |
{% data reusables.gated-features.copilot-business-and-enterprise %} |
inline |
|
|
|
You can use content exclusions to configure {% data variables.product.prodname_copilot_short %} to ignore certain files. When you exclude content from {% data variables.product.prodname_copilot_short %}:
- Code completion will not be available in the affected files.
- The content in affected files will not inform code completion suggestions in other files.
- The content in affected files will not inform {% data variables.product.prodname_copilot_chat %}'s responses.
Repository administrators{% ifversion ghec %}, organization owners, and enterprise owners{% else %} and organization owners{% endif %} can configure content exclusion.
{% data reusables.copilot.content-exclusions-scope %}
Tool | Code completion support | {% data variables.product.prodname_copilot_chat_short %} support |
---|---|---|
{% data variables.product.prodname_vs %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
{% data variables.product.prodname_vscode %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
JetBrains IDEs | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
Vim/Neovim | {% octicon "check" aria-label="Supported" %} | Not applicable |
Xcode | {% octicon "check" aria-label="Supported" %} | Not applicable |
Azure Data Studio | {% octicon "x" aria-label="Not supported" %} | Not applicable |
The {% data variables.product.github %} website | Not applicable | {% octicon "check" aria-label="Supported" %} |
{% data variables.product.prodname_mobile %} | Not applicable | {% octicon "check" aria-label="Supported" %} |
Note
Content exclusion is in {% data variables.release-phases.public_preview %} on the {% data variables.product.github %} website and in {% data variables.product.prodname_mobile %} and is subject to change.
{% data reusables.copilot.content-exclusion-limitations %}
After you configure content exclusion, the client (for example, the {% data variables.product.prodname_copilot_short %} extension for {% data variables.product.prodname_vscode_shortname %}) sends the current repository URL to the {% data variables.product.prodname_dotcom %} server so that the server can return the correct policy to the client. These URLs are not logged anywhere.
You can use your repository settings to specify content in your repository that {% data variables.product.prodname_copilot %} should ignore.
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-settings %}
-
In the "Code & automation" section of the side bar, click {% octicon "copilot" aria-hidden="true" %} {% data variables.product.prodname_copilot_short %}.
If your repository inherits any exclusions from {% ifversion fpt %}its parent organization{% else %} organizations in the same enterprise{% endif %}, you'll see {% ifversion ghec %}one or more{% else %} a{% endif %} gray box{% ifversion ghec %}es{% endif %} at the top of the page containing details of these exclusions. You cannot edit these settings.
-
In the box following "Paths to exclude in this repository," enter the paths to files from which {% data variables.product.prodname_copilot_short %} should be excluded.
Use the format:
- "/PATH/TO/DIRECTORY/OR/FILE"
, with each path on a separate line. You can add comments by starting a line with#
.[!TIP] {% data reusables.copilot.content-exclusion-fnmatch-tip %}
# Ignore the `/src/some-dir/kernel.rs` file in this repository.
- "/src/some-dir/kernel.rs"
# Ignore files called `secrets.json` anywhere in this repository.
- "secrets.json"
# Ignore all files whose names begin with `secret` anywhere in this repository.
- "secret*"
# Ignore files whose names end with `.cfg` anywhere in this repository.
- "*.cfg"
# Ignore all files in or below the `/scripts` directory of this repository.
- "/scripts/**"
You can use your organization settings to specify files that {% data variables.product.prodname_copilot %} should ignore. The files can be within a Git repository or anywhere on the file system that is not under Git control.
{% data reusables.profile.access_org %} {% data reusables.profile.org_settings %}
-
In the left sidebar, click {% octicon "copilot" aria-hidden="true" %} {% data variables.product.prodname_copilot_short %} then click Content exclusion.
-
In the box following "Repositories and paths to exclude," enter the details of files from which {% data variables.product.prodname_copilot_short %} should be excluded.
To exclude files located anywhere (within a Git repository or elsewhere), enter
"*":
followed by the path to the file, or files, you want to exclude. If you want to specify multiple file path patterns, list each pattern on a separate line.To exclude files in a Git repository from {% data variables.product.prodname_copilot_short %}, enter a reference to the repository on one line, followed by paths to locations within the repository, with each path on a separate line. Use the following format, replacing
REPOSITORY-REFERENCE
with a reference to the repository that contains the files you'd like to exclude:REPOSITORY-REFERENCE: - "/PATH/TO/DIRECTORY/OR/FILE" - "/PATH/TO/DIRECTORY/OR/FILE" - ...
Repositories can be referenced using various protocols. You can use any of the following syntaxes for
REPOSITORY-REFERENCE
and {% data variables.product.prodname_copilot_short %} will match them regardless of how the repository was cloned locally:http[s]://host.xz[:port]/path/to/repo.git/ git://host.xz[:port]/path/to/repo.git/ [user@]host.xz:path/to/repo.git/ ssh://[user@]host.xz[:port]/path/to/repo.git/
The
user@
and:port
parts of theREPOSITORY-REFERENCE
are ignored in the calculation of which paths to ignore for a repository.For Azure DevOps, you can use the new (dev.azure.com) or old (visualstudio.com) host format when specifying
REPOSITORY-REFERENCE
, and {% data variables.product.prodname_copilot_short %} will match them regardless of which host was used to clone the repository locally.[!TIP] {% data reusables.copilot.content-exclusion-fnmatch-tip %}
# Ignore all `.env` files from all file system roots (Git and non-Git).
# For example, this excludes `REPOSITORY-PATH/.env` and also `/.env`.
# This could also have been written on a single line as:
#
# "*": ["**/.env"]
"*":
- "**/.env"
# In the `octo-repo` repository in this organization:
octo-repo:
# Ignore the `/src/some-dir/kernel.rs` file.
- "/src/some-dir/kernel.rs"
# In the `primer/react` repository on {% data variables.product.prodname_dotcom %}:
https://github.com/primer/react.git:
# Ignore files called `secrets.json` anywhere in this repository.
- "secrets.json"
# Ignore files called `temp.rb` in or below the `/src` directory.
- "/src/**/temp.rb"
# In the `copilot` repository of any {% data variables.product.prodname_dotcom %} organization:
git@github.com:*/copilot:
# Ignore any files in or below the `/__tests__` directory.
- "/__tests__/**"
# Ignore any files in the `/scripts` directory.
- "/scripts/*"
# In the `gitlab-org/gitlab-runner` repository on GitLab:
git@gitlab.com:gitlab-org/gitlab-runner.git:
# Ignore the `/main_test.go` file.
- "/main_test.go"
# Ignore any files with names beginning with `server` or `session` anywhere in this repository.
- "{server,session}*"
# Ignore any files with names ending with `.md` or `.mk` anywhere in this repository.
- "*.m[dk]"
# Ignore files directly within directories such as `packages` or `packaged` anywhere in this repository.
- "**/package?/*"
# Ignore files in or below any `security` directories, anywhere in this repository.
- "**/security/**"
{% ifversion ghec %}
As an enterprise owner, you can use the enterprise settings to specify files that {% data variables.product.prodname_copilot %} should ignore. The files can be within a Git repository or anywhere on the file system that is not under Git control.
{% data reusables.enterprise-accounts.access-enterprise %} {% data reusables.enterprise-accounts.policies-tab %} {% data reusables.enterprise-accounts.copilot-tab %}
- Click the Content exclusion tab.
- Use paths to specify which content to exclude. See the previous section, Configuring content exclusions for your organization.
Note
The key difference between setting content exclusion at the enterprise level and the organization level is that rules set at the enterprise level apply to all {% data variables.product.prodname_copilot_short %} users in the enterprise, whereas the rules set by organization owners only apply to users who are assigned a {% data variables.product.prodname_copilot_short %} seat by that organization.
{% endif %}
You can use your IDE to confirm that your changes to content exclusions are working as expected.
After you add or change content exclusions, it can take up to 30 minutes to take effect in IDEs where the settings are already loaded. If you don't want to wait, you can manually reload the content exclusion settings using the following instructions.
- For JetBrains IDEs and {% data variables.product.prodname_vs %}, reload the content exclusion settings by closing and reopening the application.
- For {% data variables.product.prodname_vscode %}, use the following steps to reload the content exclusion settings:
- Access the Command Palette. For example, by pressing Shift+Command+P (Mac) / Ctrl+Shift+P (Windows/Linux).
- Type:
reload
. - Select Developer: Reload Window.
- For Vim/Neovim, content exclusions are automatically fetched from {% data variables.product.prodname_dotcom %} each time you open a file.
There are a few different ways to test your content exclusions, depending on which IDE you're using.
- Open a file that you expect to be affected by your content exclusions.
- Use one or more of the following techniques to test if content is being excluded:
- In JetBrains IDEs, {% data variables.product.prodname_vs %}, and {% data variables.product.prodname_vscode %}, check the {% data variables.product.prodname_copilot_short %} icon in the status bar. If a {% data variables.product.prodname_copilot_short %} content exclusion applies to the file, the {% data variables.product.prodname_copilot_short %} icon will have a diagonal line through it. Hover over the icon to see whether an organization or the parent repository disabled {% data variables.product.prodname_copilot_short %} for the file.
- In Vim/Neovim, begin typing in the file. If {% data variables.product.prodname_copilot %} no longer provides inline suggestions as you type, the file is excluded.
- You can also test content exclusions in {% data variables.product.prodname_copilot_chat_short %}. Open the {% data variables.product.prodname_copilot_chat_short %} window, and ask {% data variables.product.prodname_copilot_chat_short %} a question about the excluded file. If your content is excluded successfully, {% data variables.product.prodname_copilot_short %} will be unable to answer your question, and will explain that some files were excluded from the conversation due to content exclusion rules.
- AUTOTITLE
- Configuring content exclusion for {% data variables.product.prodname_vs %} in the Microsoft Learn documentation