GitHub Copilot Code Review 核准怎麼開?安全設定與檔案範圍
GitHub Copilot code review 現在不只會在 pull request 留下建議,也能在符合條件時提交 approving review。不過「Copilot 的 approval assessment 判定可以核准」和「GitHub 收到一個會計入 merge requirement 的 approval」是兩件事;中間還隔著管理員設定、檔案範圍和 branch protection。
這項能力在 2026 年 9 月 1 日進入 public preview,預設是關閉。若你只是想先觀察 review 品質,可以先開啟自動 review;若要讓 Copilot approval 滿足分支所需的審查數,必須另外打開計入 merge requirements 的設定。
先分清楚 assessment、approval 與 merge requirement
可以把一次 Copilot code review 拆成三層:
| 層次 | 代表什麼 | 是否足以通過分支規則 |
|---|---|---|
| Review overview 的 approval assessment | Copilot 對這次變更是否適合核准的判定 | 不一定,assessment 本身不算 approval |
| Copilot approving review | Copilot 實際送出的 approving review | 仍要看 repository 是否允許它計入 |
| Merge requirement | branch protection/ruleset 是否接受這個 approval | 只有符合開關、path scope 和其他規則才可能通過 |
GitHub 的新流程會在每次 review overview comment 顯示 approval assessment,但 assessment 單獨不會變成 required approval。管理員應把「讓 Copilot 產生評估」和「讓 Copilot 影響 merge gate」當成不同風險決策。
Repository 層的兩組設定
Repository 需要分別處理「何時自動 review」和「approval 是否有合併權限」。
讓 Copilot 自動檢查 pull request
要在 branch ruleset 中啟用:
- 進入 repository 的 Settings。
- 在 Code and automation 選 Rulesets,建立 New branch ruleset。
- 將 Enforcement Status 設成 Active,選定 target branches。
- 在 Branch rules 勾選 Automatically request Copilot code review。
- 依需求開啟 Review new pushes,讓新的 push 重新觸發 review。
- 若要在 draft 階段提早找問題,再開啟 Review draft pull requests。
- 儲存 ruleset。
若沒有勾選 Review new pushes,GitHub 文件說明 Copilot 只會 review 一次;這和後面「新 commit 會讓舊 approval 失效」是兩個不同事件。前者是是否自動產生下一次 review,後者是 GitHub 對既有 approval 的有效性處理。
開啟 Copilot approval
在 repository 的 Settings,進入 Code, planning, and automation → Copilot → Code review,找到 Auto-approval:
- 開啟 Allow Copilot to approve pull requests,允許 Copilot 送出 approving review。
- 若要讓它滿足分支的審查數,再開啟 Allow Copilot approvals to count toward merge requirements。
- 若只想讓低風險範圍使用,於 File paths 每行填一個 glob。
- 儲存後用測試 repository 或低風險 pull request 驗證,而不是直接在所有 production 分支打開。
兩個 toggle 要分開看:第一個是「Copilot 可以送 approval」,第二個是「這個 approval 可以對 merge requirement 有效」。只開第一個,不代表 branch protection 會接受它;只看 review comment 也不能推導第二個已開啟。
File paths 是 approval 範圍,不是 review 範圍
Auto-approval 的 File paths 可以限制哪些 pull request 的 Copilot approval 能計入 merge requirements。規則有三個重點:
- 每行一個 file glob。
- 最多支援 15 個 glob。
- pull request 的所有 changed files 都必須符合其中一個 glob,approval 才能依這個範圍計入。
例如只想讓文件變更使用 Copilot approval,可以先從這種範圍開始:
docs/****/*.md這不是說 docs/guide.md 會被 review、而 src/app.ts 不會被 review;它控制的是 approval 是否能被當成 merge gate 的一部分。如果一個 pull request 同時修改 docs/guide.md 和 src/app.ts,因為不是所有 changed files 都符合上面的 glob,這次 approval 就不應依該範圍計入。
若 repository 的路徑規則很複雜,先用一個預期會通過的純文件 PR 和一個混合路徑 PR 做對照。不要把 glob 內容只放在管理員筆記;它本身就是 approval policy 的一部分,應和 branch ruleset 名稱、owner 和審核日期一起留存。
Organization 與 Enterprise 要先決定治理邊界
Organization 可以替多個 repository 設定自動 code review,也可以透過 repository scope 選擇哪些 repository 套用。Enterprise 則可以把管理範圍再往上收斂;實際 UI 會依你使用的方案和權限顯示可用選項。
建議採用以下順序:
- Enterprise/organization 先決定是否允許 Copilot approval 進入治理政策。
- Repository 再決定是否啟用 auto-approval,以及是否限制 File paths。
- Branch ruleset 明確指定哪些分支需要 review、CI 與人類審查。
- 由 repository owner 建立測試 PR,確認 assessment、approval 和 merge requirement 的結果。
Copilot code review 的 effort level 也在同一個 repository 設定頁面,但它是 review 深度選擇,不是 approval 權限。若想先調整檢查深度,可參考 Copilot code review 的 Lite 與 Balanced;不要把 effort level 的變更當成已開啟 auto-approval。
新 commit 會讓 approval 失效
GitHub Changelog 特別說明,pull request 有新 commit 時,Copilot approval 會像人類 review 一樣被 dismiss。這是合理的安全邊界:approval 只對被 review 的 commit snapshot 有效。
因此 rollout 時應測試:
- 建立一個符合 File paths 的純文件 PR。
- 等待 Copilot 完成 review,確認 overview 有 approval assessment。
- 在 repository policy 允許時,確認是否出現 Copilot approving review。
- 檢查 branch ruleset 是否把它計入 required approvals。
- 再 push 一個小修改,確認舊 approval 被 dismiss,並要求新的 Copilot review。
- 在新 review 完成前,確認 PR 不會因舊 approval 仍留在畫面上就錯誤合併。
如果團隊把 required approvals 當作唯一 gate,還要同時確認 CI、CODEOWNERS、人類 review 和其他規則沒有被這項 preview 功能意外繞過。Copilot approval 只能是既有治理設計中的一個明確節點。
建議的漸進式開放順序
對多數團隊來說,下面的 rollout 風險較容易控制:
- 第一階段只開自動 review,觀察一到兩個迭代的 false positive、漏報和回應時間。
- 第二階段只在文件、測試或已定義的低風險目錄設定 File paths,保留人類 review。
- 第三階段才評估是否讓 Copilot approvals count toward merge requirements。
- 每次變更都用一個新增 commit 的 PR 測試 dismiss/re-review 行為。
- 對高風險、權限、付款和資料庫 migration 目錄,保留更嚴格的人類或 CODEOWNERS 審查。
這些是治理建議,不是 GitHub 的強制規則。真正要記錄的是團隊願意讓 Copilot 在哪一種變更上影響 merge decision,以及誰負責回溯 preview 行為。
結論:先把 approval 當成可控的額外 reviewer
Copilot code review 的 approval 功能可以減少低風險 pull request 的等待時間,但它不應被簡化成「AI 說沒問題就能 merge」。先分清 assessment、approving review 和 merge requirement,再於正確層級開啟 toggle,並用 File paths 限制可計入的變更範圍。最後一定要測新 commit dismiss 舊 approval 的流程,讓 branch protection 看到的是最新 snapshot 的結果。
常見問題
Q: 有 approval assessment 就等於 PR 已通過嗎?
A: 不等於。Assessment 是 review overview 中的判定;是否送出 approving review,以及該 approval 是否能滿足 merge requirement,還要看兩個 Auto-approval 設定與 File paths。
Q: File paths 會讓 Copilot 不 review 其他目錄嗎?
A: 不會。File paths 是限制哪些 PR 的 approval 可以計入 merge requirements;它不是自動 code review 的 path filter。若要改變 review 觸發範圍,應調整 branch ruleset、repository scope 或 organization policy。
Q: 新 commit 後還能沿用 Copilot 的舊 approval 嗎?
A: 不能把它視為有效。GitHub 說明新 commit 會 dismiss Copilot approval,應要求新的 review,並重新確認 required approvals 和 CI 狀態。
參考資料:
GitHub Changelog:Copilot code review can now approve pull requests
回報錯字、失效連結,或告訴我你想看的延伸主題。