GitHub Actions 将于 12-02 起默认阻止 pull_request_target:公共仓库的十年老用法要改
GitHub 宣布自 2026-12-02 起默认阻止公共仓库的 pull_request_target,11-09 与 11-16 两次 brownout 先行,需显式配置策略放行。
2026-11-03 · GitHub 官方 Changelog(2026-11-02,一手原文)
发布 2026-11-03核实 2026-11-03要点速览
- 自 2026-12-02 起,GitHub Actions 将默认阻止所有公共仓库中的
pull_request_target事件,除非有适用的 Actions event policy 显式允许。 - 强制执行前有两轮 brownout:2026-11-09 与 2026-11-16 的 16:00–18:00 UTC。期间被默认规则拦下的运行会产生失败记录与错误注解,工作流不执行;每个窗口结束后规则回到 evaluate mode,工作流恢复运行但带 warning。
- 原本的执行日期是 2026-11-02,官方已推迟到 12-02——原文写「Enforcement was previously scheduled for November 2, 2026」。
- 私有仓库与内部仓库不受影响;该变更覆盖 GitHub Free / Team / Enterprise Cloud 的公共仓库,不影响 GitHub Enterprise Server。
- 没有「全局关掉」的开关。要保留用法,只能在 Actions event policy 里显式允许并用 workflow file targeting 限定具体工作流。
- 官方给出的理由:
pull_request_target在基础仓库的上下文中运行并可访问其 secrets,一旦工作流执行了来自 fork 的不可信代码,可能危及流水线或窃取密钥。
时间线
| 日期 | 事件 |
|---|---|
| 2026-11-02 | 公告发布;原定的强制执行日也被推迟到 12-02 |
| 2026-11-09 16:00–18:00 UTC | 第一次 brownout(临时强制执行) |
| 2026-11-16 16:00–18:00 UTC | 第二次 brownout(临时强制执行) |
| 2026-12-02 | 永久强制执行,公共仓库默认阻止 |
受影响之后只有两个选项
官方原文给出的处理路径是二选一:
- 保留默认规则,继续阻止
pull_request_target; - 在适用的 Actions event policy 中显式允许
pull_request_target,并使用 workflow file targeting 只放行特定工作流。
官方建议在第一次 brownout(11-09)之前用 Insights 查看「哪些 workflow runs 会被这条规则拦下」,再决定走哪条路。
AI 之家 观点
一、这是「默认值翻转」而不是「新增一项能力」,杀伤力在于它不报错。 pull_request_target 是大量开源项目做「fork PR 上跑带 secrets 的流水线」的默认写法,十年间沉淀在无数模板里。GitHub 没有禁用它,只是把默认值从「允许」翻成「阻止」——你的 YAML 一个字都不用改,行为就变了。这类变更的排查成本很高,因为人不会主动去看没动过的文件。
二、两次 brownout 才是真正的行动窗口,不是 12-02。 很多团队会把公告里的最终日期记进排期,然后在该日之前一天才动手。但 brownout 会真的让运行失败——11-09 那两小时就是你免费的预演。建议把 11-09 当成 deadline:在那之前跑完 Insights 排查与策略配置,而不是等 12-02。
三、「显式允许 + 按文件限定」本质上是把 CI 权限从「默认信任」改成「逐条授权」。 这条与本站一直跟踪的 Agent 治理主线是同一件事的两面:GitHub 在把 fork PR 触发的高权限执行,从默认开放改成需要点名放行。对装了 GitHub Copilot 编码 agent 或 Agentic Workflows 这类「Markdown 编译成 Actions YAML」的工具链的团队,自动生成的工作流文件也要一起进允许清单,否则会出现「人工写的工作流能跑、agent 生成的跑不了」的割裂。
四、给维护者的三条动作:① 今天就跑一次 Insights,列出会被拦的运行;② 把确实需要 pull_request_target 的工作流逐个登记进允许清单,不要图省事放开通配;③ 在 11-09 brownout 窗口内观察真实失败,把它当成配置是否完整的验证。
待核实
- GitHub Enterprise Server 是否在后续版本跟进——官方本次明确「不影响 GHES」,仅对 secret risk assessment 提到会在 GHES 3.24 提供;Actions 这条是否跟进未说明。
- evaluate mode 的 warning 具体以什么形态呈现(运行日志注解 / 邮件 / API 字段)——官方未展开。
- Actions event policy 的可用粒度上限(能否按分支、按 actor 限定)——官方只提到 workflow file targeting。
- brownout 之后的 evaluate mode 是否会产生可查询的历史记录——未说明。
来源
- ⭐ pull_request_target blocked by default December 2 — GitHub 官方 Changelog(2026-11-02,一手原文)
- Security risk assessments include repository protection status — GitHub 官方 Changelog(2026-11-02,一手原文)
- how to control workflow execution — GitHub 官方文档
延伸阅读:GitHub Agentic Workflows GA、GitHub Copilot 工具卡、AI 编程编辑器百科。
常见问题
pull_request_target 什么时候会被默认阻止?
永久强制从 2026-12-02 开始。在此之前有两次 brownout:2026-11-09 与 2026-11-16 的 16:00–18:00 UTC,期间被阻止的运行会直接失败。
私有仓库会受影响吗?
不会。官方原文明确 Private and internal repositories aren't affected,且该变更只作用于 GitHub Free / Team / Enterprise Cloud 的公共仓库,不影响 GitHub Enterprise Server。
我的工作流必须依赖它,怎么办?
在 Actions event policy 中显式允许 pull_request_target,并用 workflow file targeting 限定到具体工作流文件;没有全局关闭开关。