验证外部 PR 时会检出并执行贡献者控制的代码
原文依据:2 处该 Skill 明确把外部 PR 纳入分流,并要求在验证阶段检出其差异、运行相关测试或命令。测试脚本、构建钩子及依赖生命周期脚本都可能由 PR 作者修改,因此“运行测试”可能执行贡献者提供的任意代码。
恶意 PR 可能读取代理进程可访问的凭据或仓库数据、修改工作区,或使用当前账户的网络与服务权限。AI 声明和后续状态确认不会限制这段代码的执行权限。
该风险有明确依据。外部 PR 会进入发现范围,而验证明确要求检出 PR 并运行相关测试或命令。若 PR 作者修改了测试、构建配置或生命周期脚本,这一步可能在用户环境中执行其代码。文档没有在这些步骤中规定隔离、禁用安装脚本或先审查命令。用户可要求作者增加沙箱、只读检出和逐条命令确认。
When PRs are in scope, include external PRs in these buckets and tag each line `[PR]` or `[issue]`. Discovery surfaces only *external* PRs (the tracker config defines who counts as external), so a collaborator's in-flight PR is not triage work. This filter is discovery-only; an explicitly named PR is always triaged regardless of author.查看另外 1 个位置
1. **Gather context.** Read the full issue or PR (body, comments, labels, author, dates; for a PR, the diff too). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Run two checks against the codebase: (a) **redundancy**: search for an existing implementation of the requested behavior by domain concept (not just the request's wording), and report where you looked. If found, it's an already-implemented `wontfix` (step 5). (b) **prior rejection**: read `.out-of-scope/*.md` and surface any that resembles this request.2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request (including whether it's already implemented). Wait for direction.3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims: check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.