Ngày 6/8, GitHub đưa danh sách trắng MCP trong enterprise managed settings lên bản chính thức. Hai khóa trong một file JSON quyết định những MCP server nào Copilot được phép chạy.
Tính năng thì đơn giản. Triển khai thì không, vì một lý do: nó fail closed. Cấu hình mơ hồ hoặc không xác minh được sẽ chặn server chứ không cho qua, nên một danh sách trắng viết trong một buổi chiều rồi đẩy cho tất cả mọi người là cách làm lập trình viên đứng hình vào sáng thứ Hai. Đây là thứ tự tránh được điều đó.
Bước 1 — Kiểm kê trước, chính sách sau
Không thể viết danh sách trắng hợp lý cho những server bạn không biết là chúng tồn tại, và mọi tổ chức có quy mô kha khá đều có ít nhất một MCP server không ai nhớ đã duyệt lúc nào.
Hãy hỏi ba câu và ghi lại câu trả lời trước khi mở file JSON:
- Server nào chạy từ xa, do nhà cung cấp vận hành, truy cập qua URL?
- Server nào chạy cục bộ — một tiến trình khởi chạy trên máy lập trình viên, mang theo quyền của máy đó?
- Với từng server: ai dựng, nó đọc được gì, và sẽ có vấn đề không nếu nội dung nó đọc được xuất hiện trong một bình luận pull request?
Bước 2 — Chốt lập trường trong một câu
Viết ra trước khi viết cấu hình, vì tranh luận về file dễ hơn tranh luận về ý định đằng sau nó.
Thực ra chỉ có hai lập trường trung thực. "Mọi thứ đều được phép trừ những gì chúng ta đã chặn cụ thể" là lập trường khởi đầu — rẻ, ít ma sát, và mua cho bạn thời gian để hiểu mọi người đang phụ thuộc vào cái gì. "Không gì được phép trừ những gì chúng ta đã duyệt cụ thể" là đích đến, và đó mới là thứ thực sự kiềm chế rủi ro.
Phần lớn tổ chức nên bắt đầu ở lập trường thứ nhất và chuyển sang thứ hai trong vòng một quý. Tuyên bố lập trường thứ hai ngay ngày đầu rồi mất ba tháng đi cấp ngoại lệ chính là cách để cả hệ thống bị bỏ xó.
Bước 3 — Chọn cách gọi tên từng server
Bạn có ba cách đối chiếu, và chúng không thay thế được cho nhau:
- URL từ xa, có ký tự đại diện — hợp để duyệt hoặc chặn nguyên một nhà cung cấp, thô theo đúng thiết kế
- Lệnh cục bộ — cách bao được các server khởi chạy trên máy lập trình viên, nơi thường tồn tại loại quyền truy cập ít được rà soát nhất
- Nhãn — bạn tự đặt tên cho server rồi viết chính sách theo tên, nên URL đổi cũng không âm thầm phá vỡ quy tắc
Bước 4 — Triển khai theo giai đoạn, vì fail closed trừng phạt sự vội vàng
Đặt file tại `copilot/managed-settings.json` trên nhánh mặc định của repository `.github-private` thuộc tổ chức nguồn — nhưng đừng đưa chính sách cuối cùng vào đó ngay từ đầu.
Triển khai cho một tổ chức trước, tốt nhất là tổ chức có lập trình viên sẽ kêu to và kêu sớm khi có gì đó hỏng. Theo dõi một tuần. Mỗi báo cáo "MCP server của tôi ngừng chạy" trong tuần đó là thông tin miễn phí: hoặc đó là server bạn chưa biết tới, tức là vấn đề kiểm kê mà bạn tưởng đã xong; hoặc đó là lỗi gõ trong cấu hình, tức đúng thứ mà fail closed sinh ra để phơi bày.
Sau đó mới mở rộng. Và khi mở rộng, hãy báo trước — một công cụ bị chặn mà không giải thích sẽ tạo ra ticket hỗ trợ, còn một công cụ bị chặn kèm thông báo từ tuần trước sẽ tạo ra một đề nghị ngoại lệ, và đó mới là cuộc trao đổi bạn muốn có.
Bước 5 — Trung thực về những gì nó chưa bao phủ
Hiệu lực hiện áp trên ứng dụng Copilot, Copilot CLI và VS Code. Ở phần lớn tổ chức, đó là phần lớn lượng sử dụng — nhưng không phải toàn bộ.
Nếu lập trình viên của bạn chạy agent trong JetBrains, trong một editor khác, hoặc trong công cụ không phải Copilot — Cursor, Claude Code, một agent terminal mã nguồn mở — thì chính sách này không với tới họ. Hãy ghi giới hạn đó vào cùng tài liệu với chính sách. Một biện pháp kiểm soát mà khoảng trống không được ghi lại sẽ bị viện dẫn trong rà soát rủi ro như thể nó không có khoảng trống nào, và như vậy còn tệ hơn là không có.
Bước 6 — Giao chủ sở hữu và đặt lịch rà lại
Danh sách trắng không phải một dự án mà là một danh sách sống, và kiểu hỏng của nó không phải rò rỉ dữ liệu — mà là trôi dạt. Sáu tháng sau, danh sách chứa ba server không còn tồn tại và thiếu năm server đang chạy.
Chỉ định một người chịu trách nhiệm, đặt lịch rà định kỳ, và đưa việc thêm server vào danh sách thành một phần của quy trình duyệt công cụ mới sẵn có. Nếu duyệt một MCP server dễ hơn mở một ticket, danh sách sẽ luôn chính xác; nếu khó hơn, mọi người sẽ đi vòng qua nó.