Notes:
- Excluding content from GitHub Copilot is currently in public beta and is subject to change.
- Currently this feature is only supported in Visual Studio Code.
- Excluding content from GitHub Copilot currently only affects code completion. GitHub Copilot Chat is not affected these settings.
About configuring content exclusions
You may want to prevent certain files from being available to GitHub Copilot. You can configure GitHub Copilot so that it ignores these files. You do this by specifying paths to excluded content in the settings for your repository or organization.
When you specify content exclusions it has two effects:
- The content of the affected files will not be used by GitHub Copilot to inform the code completion suggestions it makes in other files.
- GitHub Copilot code completion will not be available in the affected files.
After you add or change content exclusions it can take up to 30 minutes for this to take effect in VS Code. You can apply changes immediately by reloading the window in VS Code. For more information, see "Propagating content exclusion changes to VS Code."
Who is affected by content exclusion settings?
GitHub Copilot content exclusions only apply to people who have been granted a seat as part of a GitHub Copilot Business subscription and are members of the same organization in which a content exclusion has been configured. Other users who can access the specified files will not be affected by the content exclusion settings and will still see code completion suggestions.
All exclusions, whether they are defined in repository settings or in organization settings, apply to all members of the organization who have been granted a Copilot seat as part of a Copilot Business subscription.
Configuring content exclusions for your repository
You can use your repository settings to specify content in your repository that GitHub Copilot should ignore.
-
在 GitHub.com 上,导航到存储库的主页。
-
在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。
-
In the "Code & automation" section of the side bar, click Copilot.
If your repository inherits any exclusions from its parent organization, you'll see a gray box at the top of the page containing details of these exclusions. You cannot edit these settings.
-
In the box under "Paths to exclude in this repository," enter the paths to files from which Copilot 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#
.You can use fnmatch pattern matching notation to specify file paths. For more information, see "File" in the ruby-doc.org documentation.
Note: Patterns are case insensitive.
Example of paths specified in the repository settings
# 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 `secret` anywhere in this repository. - "secret*" # Ignore files whose names end `.cfg` anywhere in this repository. - "*.cfg" # Ignore all files in or below the `/scripts` directory of this repository. - "/scripts/**"
- "/src/some-dir/kernel.rs"
Ignore the /src/some-dir/kernel.rs
file in this repository.
- "secrets.json"
Ignore files called secrets.json
anywhere in this repository.
- "secret*"
Ignore all files whose names begin secret
anywhere in this repository.
- "*.cfg"
Ignore files whose names end .cfg
anywhere in this repository.
- "/scripts/**"
Ignore all files in or below the /scripts
directory of this repository.
# 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 `secret` anywhere in this repository.
- "secret*"
# Ignore files whose names end `.cfg` anywhere in this repository.
- "*.cfg"
# Ignore all files in or below the `/scripts` directory of this repository.
- "/scripts/**"
Configuring content exclusions for your organization
You can use your organization settings to specify content, in any repository, that GitHub Copilot should ignore.
-
在 GitHub.com 的右上角,选择个人资料照片,然后单击 “你的组织”****。
-
在组织旁边,单击“设置”。
-
In the left sidebar, click Copilot then click Content exclusion.
-
In the box under "Repositories and paths to exclude," enter details of where Copilot should be excluded.
For each repository in which you want files to be excluded from Copilot, 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:
REPOSITORY-REFERENCE: - "/PATH/TO/DIRECTORY/OR/FILE" - "/PATH/TO/DIRECTORY/OR/FILE" - ...
The following syntax is supported for
REPOSITORY-REFERENCE
: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/
Notes:
- The
user@
and:port
parts of theREPOSITORY-REFERENCE
are ignored in the calculation of which paths to ignore for a repository. - Each repository reference can contain a single
*
wildcard. For example,https://github.com/octo-org/*
matches all repositories in theocto-org
organization.
You can use fnmatch pattern matching notation to specify file paths. For more information, see "File" in the ruby-doc.org documentation.
Note: Patterns are case insensitive.
- The
Example of repositories and paths in organization settings
# Ignore all `.env` files at any path, in any repository. # This setting applies to all repositories, not just to those on GitHub.com. # 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 GitHub: 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 GitHub 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 `server` or `session`, anywhere in this repository. - "{server,session}*" # Ignore any files with names ending `.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/**"
"*":
- "**/.env"
Ignore all .env
files at any path, in any repository.
This setting applies to all repositories, not just to those on GitHub.com.
This could also have been written on a single line as:
"*": ["**/.env"]
octo-repo:
In the octo-repo
repository in this organization:
- "/src/some-dir/kernel.rs"
Ignore the /src/some-dir/kernel.rs
file.
https://github.com/primer/react.git:
In the primer/react
repository on GitHub:
- "secrets.json"
Ignore files called secrets.json
anywhere in this repository.
- "/src/**/temp.rb"
Ignore files called temp.rb
in or below the /src
directory.
git@github.com:*/copilot:
In the copilot
repository of any GitHub organization:
- "/__tests__/**"
Ignore any files in or below the /__tests__
directory.
- "/scripts/*"
Ignore any files in the /scripts
directory.
git@gitlab.com:gitlab-org/gitlab-runner.git:
In the gitlab-org/gitlab-runner
repository on GitLab:
- "/main_test.go"
Ignore the /main_test.go
file.
- "{server,session}*"
Ignore any files with names beginning server
or session
, anywhere in this repository.
- "*.m[dk]"
Ignore any files with names ending .md
or .mk
, anywhere in this repository.
- "**/package?/*"
Ignore files directly within directories such as packages
or packaged
, anywhere in this repository.
- "**/security/**"
Ignore files in or below any security
directories, anywhere in this repository.
# Ignore all `.env` files at any path, in any repository.
# This setting applies to all repositories, not just to those on GitHub.com.
# 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 GitHub:
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 GitHub 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 `server` or `session`, anywhere in this repository.
- "{server,session}*"
# Ignore any files with names ending `.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/**"
Reviewing changes to the content exclusion settings
If you are an organization owner, you can check any changes that have been made to content exclusions.
-
Open the "Content exclusion" page in the settings for your organization (described here), or the settings for a repository (described here).
-
Scroll to the bottom of the page.
You will see the name of the person who last changed the settings, and information about when they made this change.
-
Click the time of the last change.
Note: The time of the last change is only a link if you are an organization owner.
The "Audit log" page for the organization is displayed, showing the most recently logged occurrences of the
copilot.content_exclusion_changed
action.If you clicked through from a repository settings page, the audit log is filtered to show only changes to content exclusions for that repository.
-
Click the ellipsis (...) at the end of each entry to see more details.
If the "excluded_paths" entry is truncated, hover over the truncated value to show the full entry. This displays the content of the exclusion settings after the change was saved.
Checking the effect of a settings change
When you change Copilot's content exclusions you can check that the setting blocks Copilot from suggesting code in the specified files.
-
In VS Code, open a file that you expect to be affected by your content exclusions.
If a Copilot content exclusion applies to this file, the Copilot icon in the status bar has a diagonal line through it.
-
Click the icon to see a dropdown menu with information about the content exclusions that apply to this file.
Note: Clicking Open logs in this menu displays the log for GitHub Copilot in which details of all excluded files you open are recorded.
-
You can confirm that Copilot is disabled for this file by starting to type a line of code, such as a comment. Normally you would see a code completion suggestion from Copilot as you type. However, if this file is affected by a content exclusions setting you will not see any suggestions.
Propagating content exclusion changes to VS Code
If you opened a file in VS Code before you changed the content exclusions, you may need to reload the window in VS Code to see the effect of the settings change.
- Access the Command Palette. For example, by pressing Shift+Command+P (Mac) / Ctrl+Shift+P (Windows/Linux).
- Type:
reload
. - Select Developer: Reload Window.