GitHub Copilot managed-settings.json 怎麼指定預設模型?團隊覆寫設定
GitHub 在 2026 年 9 月 2 日新增 enterprise managed settings 對任意預設模型的支援。現在管理員可以把新 Copilot 對話的起始模型寫進 managed-settings.json,也可以只讓特定 enterprise team 使用另一個預設值。
這個設定控制的是「新對話先選哪個模型」,不是把成員鎖死在單一模型。使用者仍可在單次對話中切換;如果你需要控制成員能不能看見或使用某個模型,應另外設定模型可用性 policy。
model 設定的兩種用法
最簡單的 enterprise 預設值是直接在 copilot/managed-settings.json 設定 model:
{ "model": "kimi-k-3"}也可以使用 “auto”,讓新 session 交給 Copilot 的自動模型選擇:
{ "model": "auto"}GitHub 文件用 kimi-k-3 作為指定模型的例子;實際值仍要換成你的 enterprise 可用、且目前客戶端支援的模型與版本。model 的作用是設定新對話的預設值,使用者仍可逐一對話改選其他模型。
新設定應使用最外層的 model。早期文件曾把它寫成 permissions.model,部分客戶端仍會讀取巢狀值,但新的設定檔應以 top-level model 為準,避免不同客戶端得到不同結果。
Server-managed 的部署位置與更新時間
如果希望同一份設定套用到 CLI、VS Code、JetBrains、Copilot app 與 Copilot cloud agent,適合使用 server-managed settings。部署步驟如下:
- 建立或使用 enterprise 的 .github-private repository。
- 在 repository 中建立 copilot/managed-settings.json。
- 寫入 enterprise 要控管的 JSON keys。
- commit 並 push 到 default branch。
- 確認成員使用受支援的 Copilot client。
GitHub 說明 server-managed 設定通常會在約一小時內套用;重啟客戶端或重新登入會觸發立即 refresh。這也是為什麼測試時不要只在本機改檔案後立刻判斷政策沒有生效。
| 部署方式 | 適合情境 | 是否涵蓋 Copilot cloud agent |
|---|---|---|
| Server-managed | Enterprise 統一治理、需要 commit 與 audit history | 是 |
| MDM-managed | 依 macOS 或 Windows 裝置群組派送 | 否,限本機客戶端 |
| File-based | Linux、容器、Codespaces 或無法使用前兩者 | 否,限本機客戶端 |
MDM 與 file-based 使用相同的邏輯 keys,但它們是從裝置載入。若你希望 cloud agent 也遵守預設模型,不能只把檔案放進開發者電腦。
讓特定 team 使用不同預設模型
Enterprise 預設值不必對所有團隊一刀切。先在 managed-settings.json 把 model 標成可覆寫:
{ "model": { "overridable": "auto" }}這代表 enterprise 的預設仍是 auto,但 team file 可以提供另一個值。接著在 .github-private repository 建立 copilot/team-mappings.json,把設定檔檔名對應到 enterprise team slug:
{ "devs.json": ["developers-all", "finops-dev"], "ai-users.json": ["ai-baseline-trained"]}最後在 copilot/teams/devs.json 寫入 team 專用值:
{ "model": "kimi-k-3"}只有被 team-mappings.json 對應到的 enterprise team 成員才會收到這個值。沒有對應到 team 的成員,或 team file 沒有宣告 model 時,會回到 managed-settings.json 的 overridable 預設。
如果你要讓某個 team 不受 enterprise 預設模型管理,GitHub 的 schema 允許 team file 使用 “model”: “unmanaged”。這不是指定另一個模型,而是把該 key 的控制權交回成員;是否適合使用,應由團隊的治理政策決定。
一個人若同時屬於多個 enterprise teams,team files 會先依每個 key 的 least restrictive value 合併,再套在 enterprise settings 之下;平台層級的決定仍有最高優先權。不要把 team mapping 當成最後一定能覆蓋所有限制的例外通道。
預設模型和模型可用性不是同一個 policy
這兩個設定常被放在同一張管理需求表,實際上作用不同:
| 問題 | 應看哪個設定 |
|---|---|
| 新對話一開始選哪個模型? | managed settings 的 model |
| 成員能不能選某個模型? | 模型 availability 或 model policy |
| 某個 team 能不能使用另一個預設? | model 加上 team override |
| 成員能否手動換模型? | 目前的 client 行為與可用性 policy |
如果你最近才設定「哪些模型可用」,卻想改新對話的起始值,請不要只改前一份 policy。可以先讀GitHub Copilot Global Model Policy 的實作整理,再回到 managed settings 分開驗證。
上線前的驗證清單
先用小型 pilot team 驗證,並在每個支援入口各開一個新對話:
- 確認 JSON 可以解析,且 model 位於最外層。
- 記錄 enterprise 預設值、team file 與 team slug 的對應關係。
- 測試帳號要真的隸屬目標 enterprise 或 organization。
- 在 VS Code、CLI、Copilot app 或 cloud agent 分別確認新對話的起始模型。
- 手動切換一次模型,確認你想保留的是「預設」而不是「禁止切換」。
- 如果帳號同時有多個 billing entities,確認 Copilot 個人設定的「Usage billed to」選到正確 enterprise。
排查時先重啟或重新登入,再等待 server-managed 的更新週期。如果只有單一入口不符合預期,優先查該 client 是否支援 model key;如果所有入口都不符合,才回頭查 enterprise 歸屬與設定檔是否已 push 到 default branch。
結論
managed-settings.json 適合用來設定 enterprise 的新對話預設模型,team-mappings.json 與 copilot/teams/ 則用來做有邊界的 team 特例。實作時先決定治理目標:你是要改善起始體驗、限制可用模型,還是讓不同團隊採用不同預設。三者分開設定,日後模型改名或下架時才不會互相牽連。
常見問題
Q: 設定 model 後,成員還能手動選其他模型嗎?
A: 可以。GitHub 對 model 的定義是新對話的預設模型,使用者仍能在單次對話中選擇其他可用模型;要限制可選範圍,需另設模型可用性 policy。
Q: 為什麼我只改了本機 managed-settings.json,cloud agent 沒變?
A: MDM-managed 與 file-based settings 是從裝置載入,只影響本機客戶端。要涵蓋 Copilot cloud agent,請使用 server-managed settings,並將檔案放在 enterprise 的 .github-private repository。
Q: team file 沒有設定 model 時會怎樣?
A: 成員會沿用 enterprise managed-settings.json 中的 overridable 值。若該 key 沒有標成可覆寫,team file 不能改變它。
參考資料:
回報錯字、失效連結,或告訴我你想看的延伸主題。