1512 字
8 分鐘

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。部署步驟如下:

  1. 建立或使用 enterprise 的 .github-private repository。
  2. 在 repository 中建立 copilot/managed-settings.json。
  3. 寫入 enterprise 要控管的 JSON keys。
  4. commit 並 push 到 default branch。
  5. 確認成員使用受支援的 Copilot client。

GitHub 說明 server-managed 設定通常會在約一小時內套用;重啟客戶端或重新登入會觸發立即 refresh。這也是為什麼測試時不要只在本機改檔案後立刻判斷政策沒有生效。

部署方式適合情境是否涵蓋 Copilot cloud agent
Server-managedEnterprise 統一治理、需要 commit 與 audit history
MDM-managed依 macOS 或 Windows 裝置群組派送否,限本機客戶端
File-basedLinux、容器、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 不能改變它。

參考資料:

GitHub Copilot managed-settings.json 怎麼指定預設模型?團隊覆寫設定
https://laplusda.com/posts/github-copilot-managed-default-model/
作者
Zero
發佈於
2026-09-04
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。