---
title: "內容排除"
description: "說明 GitHub Copilot 內容排除能保護什麼、不能保護什麼，以及如何配置、測試和審計。"
verifiedAt: "2026-05-06"
---

內容排除（content exclusion）解決的是“哪些內容不該被 Copilot 使用”。它應該在 rollout 前配置，而不是洩露、誤用或 code review 之後再補。

> [!IMPORTANT]
> 內容排除是必要防線，但不是萬能防線：Copilot CLI、Cloud Agent、IDE Chat 的 Agent Mode 目前都**不支援**內容排除。把"機密程式碼也寫進了儲存庫"和"用內容排除擋 Copilot"看作同一道防線，是這一節最常見的錯誤。

## 1. 排除後會發生什麼

GitHub 官方文件說明，內容被排除後：

- 受影響檔案不會獲得 inline suggestions。
- 受影響檔案內容不會影響其他檔案裡的 inline suggestions。
- 受影響檔案內容不會用於 Copilot Chat 響應。
- 受影響檔案不會被 Copilot code review 審查。

```mermaid
flowchart TD
    File["敏感檔案"] --> Exclusion["內容排除策略"]
    Exclusion --> Inline["Inline suggestions 不使用"]
    Exclusion --> Chat["Chat 不引用"]
    Exclusion --> Review["Copilot code review 不審查"]
    Exclusion --> Limit["CLI / coding agent / Agent mode 不支援"]

    style Exclusion fill:#fef3c7,stroke:#d97706,stroke-width:2px
    style Limit fill:#fee2e2,stroke:#dc2626,stroke-width:2px
```

## 2. 誰能配置

官方支援這些層級：

- Repository administrators：配置自己的儲存庫。
- Organization owners：配置組織級排除。
- Enterprise owners：配置企業級排除。
- Maintain role：可以檢視儲存庫內容排除設定，但不能編輯。

企業級規則和組織級規則的區別很重要：企業級規則適用於企業中所有 Copilot users；組織級規則隻影響由該組織分配 Copilot seat 的使用者。

## 3. 該排除什麼

優先排除：

- `.env`、金鑰、證書、私鑰、token。
- 客戶資料、合同、財務資料。
- 專有演算法、反作弊、風控策略。
- 內部安全策略和漏洞報告。
- 尚未公開的產品路線圖。
- 訓練資料、評測集、付費內容。

不要把內容排除當成懶惰的許可權系統。真正不該被開發者讀取的內容，本身就不應該出現在他們能訪問的儲存庫或檔案系統裡。

## 4. 配置格式

儲存庫級配置是在儲存庫 Settings 的 Copilot content exclusion 頁面填寫路徑，每行一個模式。

組織級或企業級可以按儲存庫和路徑寫模式。官方示例支援 `fnmatch` 風格匹配。

```yaml
"*":
  - "**/.env"

octo-repo:
  - "/src/sensitive/**"

https://github.com/primer/react.git:
  - "secrets.json"
  - "/src/**/temp.rb"
```

寫規則時保守一點：

- 先排除明確敏感的路徑。
- 再排除敏感檔名模式。
- 避免大範圍排除導致 Copilot 在正常工程檔案裡不可用。
- 每次變更都留審計記錄。

## 5. 支援範圍和限制

官方限制必須寫清：

- GitHub website 和 GitHub Mobile 上的內容排除仍有 public preview 邊界。
- IDE Chat 的 Edit mode 和 Agent mode 當前不支援內容排除。
- Copilot CLI 和 Copilot coding agent 不支援內容排除。
- 內容排除不適用於 symbolic links。
- 遠端檔案系統上的 repository 不適用。
- IDE 可能間接提供型別資訊、hover 定義或 build 配置資訊。
- 配置變更在已載入 IDE 中生效可能需要最多 30 分鐘。

這意味著高風險內容不能只靠內容排除保護。要配合儲存庫許可權、secret scanning、least privilege 和本地檔案隔離。

## 6. 測試和審計

測試：

1. 開啟未排除檔案，確認 inline suggestion 正常出現。
2. 開啟應被排除檔案，做相同編輯，確認沒有 suggestion。
3. 在 Chat 中只附加被排除檔案，提問 `explain this file`。
4. 確認 Copilot 無法把該檔案作為引用來源。

審計：

- 儲存庫或組織頁面底部可以看到最近一次內容排除變更。
- 點選變更時間可以進入 audit log。
- `copilot.content_exclusion_changed` 事件可用於追蹤變更。
- 如果 `excluded_paths` 被截斷，需要展開看完整值。

<details>
<summary>深讀：為什麼內容排除不能替代儲存庫許可權</summary>

內容排除只控制 Copilot 是否使用特定內容，不控制開發者是否能開啟、複製、提交或透過其他工具讀取該內容。

如果一個檔案本身不應該被某個團隊訪問，就應該先解決儲存庫許可權和資料擺放問題，再配置 Copilot 內容排除作為額外防線。
</details>

## 本章自檢

1. 是否已經排除金鑰、客戶資料、專有演算法和安全材料？
2. 是否知道哪些 Copilot 入口不支援內容排除？
3. 是否測試過排除規則生效？
4. 是否能從 audit log 追蹤每次變更？
5. 是否避免把內容排除當成唯一許可權控制？

透過標準：內容排除規則可解釋、可測試、可審計，並且和儲存庫許可權配合使用。

## 官方來源

- [Content exclusion for GitHub Copilot](https://docs.github.com/en/copilot/concepts/context/content-exclusion) —— GitHub 官方概念、支援範圍和限制。
- [Excluding content from GitHub Copilot](https://docs.github.com/en/copilot/how-tos/configure-content-exclusion/exclude-content-from-copilot) —— GitHub 官方配置和測試流程。
- [Reviewing changes to content exclusions](https://docs.github.com/en/copilot/managing-copilot/configuring-and-auditing-content-exclusion/reviewing-changes-to-content-exclusions-for-github-copilot) —— GitHub 官方審計流程。

## 接下來去哪

<Cards>
  <Card title="訪問和策略" description="內容邊界之外，還要配置功能、隱私和模型策略。" href="/zh-Hant/docs/github-copilot/official/08-security-governance/access-policies" />
  <Card title="MCP 與外部工具" description="外部工具接入時也要重新確認內容和許可權邊界。" href="/zh-Hant/docs/github-copilot/official/07-mcp" />
</Cards>
