my-git

AI Agent 治理

当 AI agent 开始创建分支、提交代码、发起 PR,仓库里就多了一类新的参与者。治理对象从人扩展到 agent,原有的分支保护、Review 规则、CI 策略需要重新检查一遍。

这篇回答五个问题:

  1. agent 用什么身份提交代码
  2. agent 的权限怎么收紧
  3. agent 发起的 PR 谁来批准
  4. agent 怎么触发 CI,secrets 怎么隔离
  5. 出了问题怎么追溯到具体的 agent 会话

Agent 的三种身份形态

1. 人类账号在本地运行工具

Claude Code、Codex CLI、Aider 在开发者本机运行,提交以开发者本人身份出现。

治理重点:

fix(order): handle empty timeout config

Co-authored-by: Claude <noreply@anthropic.com>

2. 平台托管 agent

GitHub Copilot cloud agent、Codex cloud 这类 agent 运行在平台沙箱里,以独立的 bot 身份提交。

以 Copilot cloud agent 为例,GitHub 内置了这些限制(来源见文末官方文档):

治理重点:先确认这些默认限制没有被放宽,再决定哪些仓库开放给托管 agent。

3. 自建自动化里的 agent

团队在 GitHub Actions 或内部平台里自己跑 agent,身份通常是 GitHub App 或 machine user。

治理重点:

权限设计

核心原则:agent 拿到的权限按它要完成的任务给,按最小集合给。

PR 审批规则

CI 触发与 secrets 隔离

agent 提交的代码进入 CI 运行时,等于这段代码拿到了 CI 环境的执行权。三个控制点:

托管 agent 的运行环境默认有防火墙限制出网,放宽前先确认要访问的域名清单。

可追溯性

出问题时要能回答:这段代码来自谁的 agent、哪次会话、谁发起的。

最小落地配置

小团队第一步只需要四件事:

  1. 约定 agent 分支前缀,写进 AGENTS.md 和分支命名规范
  2. 主分支开启 Require a pull request before merging 和 Require approvals
  3. 约定提交 trailer 标注 AI 参与
  4. 部署 secrets 移入 environment

成长期团队再补:

常见误区

1. 给 agent 和人一样的权限

agent 不需要 admin,不需要 bypass,不需要访问所有仓库。权限给大了,审计时分不清是人还是 agent 在操作。

2. 所有 agent 共用一个 token

共享 token 意味着无法追责、无法单独回收。一个用途一个身份。

3. 把 AI review 当成人工批准

AI review 可以先扫一遍,但 Required approvals 必须由人完成。

4. agent 分支没有命名约定

没有统一前缀,审计、清理、Rulesets 限制都做不了。

延伸阅读