1266 字
6 分鐘

GitHub Agentic Workflows 不用 PAT 後:權限、費用與寫入邊界怎麼設

把 AI agent 放進排程工作流程後,最危險的事情往往不是它回答錯,而是它為了「完成任務」拿到一把長期有效、範圍又過大的 Personal Access Token(PAT)。GitHub 在 2026 年 6 月更新 Agentic Workflows,讓組織擁有的 repository 可以使用 Actions 內建的 GITHUB_TOKEN 進行 Copilot inference;這是把認證、計費與 repository 權限拆開處理的好時機。

這篇只處理一個實務問題:如何讓 agent 能分析 repository,卻不把它直接變成可以任意留言、推送或花費不可預期額度的自動帳號。

先拆成三種權限,而不是只看一個 token#

GitHub Agentic Workflows 的 frontmatter 同時會影響讀取、模型呼叫與寫入;把它們視為同一種「權限」很容易設過頭。

要做的事應設定的機制不應推論成
讀取程式碼、Issue、PR最小化的 GitHub permissionsagent 可修改 repository
呼叫 Copilotcopilot-requests: writeagent 自動取得 contents: write
建 Issue、留言或建立 PRsafe-outputsagent job 本身有寫入 token

GitHub 的 Agentic Workflows 預設採唯讀;寫入由另一個受控 job 處理。也就是說,copilot-requests: writewrite 是用來允許 inference,不是允許提交程式碼。這個命名很容易讓人誤加 contents: write,但兩者用途不同。

一個從唯讀開始的最小設定#

以下範例只讓 agent 查看 repository 與 PR,並可建立一張整理結果的 Issue。先把可做的事情縮到這裡,比一次開放建立 PR 更容易驗證。

---
on:
schedule: weekly
permissions:
contents: read
issues: read
pull-requests: read
copilot-requests: write
safe-outputs:
create-issue:
title-prefix: '[repo-review] '
labels: [maintenance]
---
## Repository review
整理最近一週的失敗 CI、尚未回應的 bug 與依賴更新。
不要修改檔案;每個建議都要附上對應的 Issue、PR 或 workflow run 連結。

safe-outputs 不是裝飾性的 YAML。agent 先輸出結構化結果,之後由有明確權限的 job 驗證並執行建立 Issue 的動作。官方文件也說明這個分離會帶來審計軌跡、較小的影響範圍,以及對 prompt injection 的一層防線。

不再用 PAT,不等於不用管費用#

當組織已啟用對應 Copilot policy,copilot-requests: write 會使用 Actions token 進行 inference,且費用會計入組織的 Copilot 方案。它省掉的是長期 secret 管理,不是自動幫你限制每次排程要跑多久、要讀多少內容。

我會先加三個限制:

  1. 只排程低頻、範圍固定的工作:例如每週整理失敗 CI,而不是每次 push 都做全 repository 分析。
  2. 把任務輸入寫成可驗證條件:限定時間範圍、資料來源與輸出格式,避免 agent 把模糊目標擴成大量搜尋。
  3. 看每次 run 的 token 與輸出:GitHub 也提供成本管理與每 run 的用量資料;先累積幾週基準,再決定是否提高頻率或擴大範圍。

不要把使用者層級的 Copilot 預算拿來推估這種 workflow。官方公告明確指出,組織計費的 agentic workflow 不會計入使用者個人的 inference budget。

要開寫入時,先讓「可寫什麼」變得具體#

若下一步想讓 agent 開 PR,先不要直接給 repository 寫入權限。Safe Outputs 的 pull request 設定可以限制可修改檔案;而 gh aw 對 package manifest、CI 設定與 AGENTS.md 等敏感檔案也有額外保護。

一個比較穩健的演進順序是:

唯讀報告
-> 建立 Issue(safe output)
-> 僅修改 docs/** 的 PR
-> 指定測試與來源檔案的 PR
-> 仍由人審查與合併

每升一級都要重新問:這個 workflow 的輸入是否可能含有不可信內容?它能碰到哪些檔案?失敗時會留下什麼紀錄?如果答案仍是「讓 agent 自己決定」,那還不適合開寫入。

這次設定的重點#

GitHub Agentic Workflows 改用 GITHUB_TOKEN 是降低 PAT 維運風險的機會,但安全設計仍在你的 frontmatter:讀取 scope、copilot-requests: write 與 Safe Outputs 要各自明確。先把 agent 留在可觀測的唯讀分析,讓每一個寫入都變成受限、可查、可審的後續工作。

常見問題#

Q: 有 copilot-requests: write 後,還需要 PAT 嗎?#

A: 對組織擁有的 repository,若組織已啟用 GitHub 要求的 Copilot policy,Agentic Workflows 可使用內建 Actions token 做 Copilot inference,不需要把 PAT 設為 inference secret。跨 repository 操作或特定外部服務仍要依官方認證文件另行評估。

Q: safe-outputs 可以完全取代人工審核嗎?#

A: 不可以。它把 agent 產生的結果與實際寫入動作分離,並限制可執行操作;但是否建立 PR、哪些檔案可修改、是否要套用 environment protection,仍是 repository 維護者要決定的控制面。

Q: 如何避免排程 agent 讓費用失控?#

A: 從低頻、輸入範圍固定的唯讀任務開始,逐 run 檢查 token 用量與輸出,再調整頻率。不要以個人 Copilot 額度推算組織計費 workflow 的成本。

參考資料:

GitHub Changelog:Agentic Workflows 不再需要 PAT

GitHub Agentic Workflows:Permissions

GitHub Agentic Workflows:Safe Outputs

GitHub Agentic Workflows:Safe Output PR 保護

GitHub Agentic Workflows 不用 PAT 後:權限、費用與寫入邊界怎麼設
https://laplusda.com/posts/github-agentic-workflows-github-token-safe-outputs/
作者
Zero
發佈於
2026-07-14
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

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