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

已配置PAT仍出现github-actions[bot]权限拒绝问题排查

排查GitHub Actions推送403错误的方向

1. 验证PAT的权限与归属

  • 确认STUDENT_BOOK_TOKEN对应的账号是目标仓库geo-smart/curriculum-book-student的协作成员,仅拥有仓库权限不够,必须账号在仓库协作列表内,且拥有write或maintain级别权限。
  • 检查PAT的scopes:必须勾选完整的repo权限(包含repo:status、repo_deployment等子权限),如果目标是私有仓库,仅public_repo权限无效。
  • 确认PAT未过期、未被撤销。

2. 修复复合Action中的Checkout步骤

复合Action里的actions/checkout@v3未指定token,默认使用GitHub内置的GITHUB_TOKEN,该token仅能操作当前仓库,无法访问目标仓库。修改该步骤:

- name: checkout repo content
  uses: actions/checkout@v3
  with:
    token: ${{ inputs.token }}

3. 检查github-push-action的参数与版本

  • 暂时移除force: true参数,测试普通推送——如果目标仓库main分支开启了强制推送保护,即使有write权限也会触发403。
  • 升级ad-m/github-push-action到最新版本(如v0.8.0),旧版本存在token处理的已知bug。
  • 确认repository参数格式为owner/repo,且目标仓库确实存在、PAT账号可访问。

4. 检查目标仓库的分支保护与IP限制

  • 目标仓库main分支若开启分支保护(如要求PR合并、状态检查通过),会阻止直接推送,需临时关闭保护测试,或调整规则允许PAT账号直接推送。
  • 确认目标仓库未设置IP白名单,GitHub Actions runner的IP为动态地址,若被白名单拦截会触发403。

5. 验证token的传递有效性

在push changes步骤前添加调试步骤,确认token正确传入复合Action:

- name: Debug token
  shell: bash
  run: echo "Token starts with: ${INPUT_TOKEN:0:4}"
  env:
    INPUT_TOKEN: ${{ inputs.token }}

若输出为空,说明主工作流向复合Action传递token的语法存在问题。

6. 用原生Git命令替代action测试

替换ad-m/github-push-action步骤,改用原生Git命令推送,排除action本身的问题:

- name: Add target remote
  shell: bash
  run: git remote add student https://${{ inputs.token }}@github.com/geo-smart/curriculum-book-student.git
- name: Push to target repo
  shell: bash
  run: git push student main --force

内容的提问来源于stack exchange,提问作者Stefan Todoran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:40:37