You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions设置contents:write后GITHUB_TOKEN仍为只读权限问题

GitHub Actions自动合并PR时GITHUB_TOKEN权限只读的原因及解决方案

可能的原因

  • 仓库全局Workflow权限限制:即使在job中配置了permissions.contents:write,如果仓库的默认Workflow权限被设为只读,job级的权限配置会被覆盖。需要进入仓库的Settings > Actions > General,确认“Workflow permissions”设置为“Read and write permissions”,同时勾选“Allow GitHub Actions to create and approve pull requests”(合并PR依赖该权限)。
  • 触发事件的权限限制:若工作流由fork仓库的PR触发(如pull_request事件),默认情况下GITHUB_TOKEN仅拥有fork仓库的权限,无法对原仓库执行写操作,此时job级的权限配置无效。
  • 权限配置位置错误:permissions必须配置在workflow最外层或具体job节点下,若放在steps内部则不会生效。

是否必须使用PAT?

不一定,分场景判断:

  • 原仓库内部PR:只要调整好仓库的Workflow全局权限,同时在工作流中正确配置permissions: { contents: write, pull-requests: write },使用默认的GITHUB_TOKEN即可完成自动合并。
  • fork仓库提交的PR:此时默认GITHUB_TOKEN无原仓库写权限,必须使用PAT(个人访问令牌)。需生成带有repo权限的PAT,将其存入仓库Secrets,在工作流中替换GITHUB_TOKEN为该Secrets值。

示例配置

name: Auto Merge PR
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  automerge:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
      - uses: pascalgn/automerge-action@v0.16.3
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # 处理fork PR时替换为:GITHUB_TOKEN: ${{ secrets.MY_AUTOMERGE_PAT }}

内容的提问来源于stack exchange,提问作者Eyal Brilling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:57:14