直接答案
先从只读审查和失败测试诊断开始。固定提交与工具版本,使用临时 runner 和短期凭据,关闭无关网络与仓库写入,设置时间、输出和预算上限,保存结构化证据;应用补丁、创建分支、合并与部署必须由独立受信任务或维护者完成。
关键结论
- Pull Request 和 Issue 文本是不可信输入,不能覆盖工作流规则。
- 一个任务只获得必要的仓库、命令、网络和秘密权限。
- 代理输出是待验证制品,不是部署或合并授权。
- 写回、发布与合并使用独立身份和保护关卡。
关键事实
这篇内容解决什么问题
为审查、测试诊断、维护和 Pull Request 自动化设计安全且可审计的编码代理任务。
核验范围与限制
- 证据类型
- 官方文档本地验证
- 核验范围
- 覆盖非交互执行、信任边界、凭据、输出处理、确定性验证和受保护写回。
- 限制与失效条件
- - 实际隔离能力取决于 CI 提供方、runner、组织策略和所选工具。
- - 模型输出具有非确定性,不能成为安全、合并或部署的唯一控制。
从只读任务和不可变输入开始
使用固定 commit SHA 触发任务,并记录工作流版本、工具版本、提示模板和允许路径。第一阶段只做审查摘要、失败测试分析或文档检查。
PR 描述、Issue、源码和下载制品都是不可信输入,不能直接插入 shell 命令,也不能覆盖受信工作流指令。
建立最小权限 Runner 边界
使用临时工作区和身份,限制仓库 Token、文件挂载、网络目标、命令和秘密。只读取 diff 或运行单元测试的任务不能加载部署凭据。
- 固定源码版本和已审查的 Action 或容器版本。
- 只读分析与写回使用不同身份。
- 设置时长、输出大小、重试和预算上限。
- 任务结束后销毁 runner 与临时凭据。
定义机器可读输入与输出契约
提示应说明目标、允许路径、禁止动作、输出结构和验证命令。客户端支持时,分别保存 stdout、stderr、退出码、事件流、最终响应和变更文件。
要求字段缺失或格式错误时任务失败,不能把一段自然语言当作继续发布的授权。
在代理执行后运行确定性关卡
由 CI 独立运行仓库 formatter、linter、测试、构建、策略与秘密扫描。如果代理生成补丁,应检查实际 diff 和允许路径,而不是相信完成声明。
分离写回和部署权限
先发布分析或补丁制品,再由保护工作流或维护者使用另一凭据创建分支、评论或应用补丁。部署继续遵守原有环境与审批策略。
- 01分析代理只获得仓库读取权限。
- 02验证在模型外执行代码和策略检查。
- 03批准维护者或保护规则接受精确制品。
- 04写入独立身份只执行已批准变更。
留存证据并检查流水线漂移
留存足以排查故障的脱敏制品,但排除秘密与私有数据。定期复核依赖、客户端变化、权限范围、超时行为和误报样例。
官方来源与核验范围
本文以公开官方文档为事实依据;命令和配置可能随客户端版本变化,执行前请同时核对对应来源。
查看技术核验方法