CoreCode博客

用法

Claude Code GitHub Actions 配置教程:在 Issue 和 PR 里 @claude

发布于 · 最后核对

Claude Code GitHub Actions 是一个在仓库工作流里运行 Claude Code 的 GitHub Action:在 PR 或 Issue 评论里 @claude,Claude 就会分析代码、实现修改并推送提交。这一页是配置步骤:快速安装和手动安装各怎么做、基本工作流怎么写、常用参数、谁能触发、费用和安全注意事项,以及不响应时看什么。内容按 Anthropic 的 Claude Code GitHub Actions 中文整理,2026 年 10 月 30 日对照原文核对。

要点
  • 快速安装:在要连接的仓库里打开 claude,运行 /install-github-app 并按提示操作;它只支持 github.com 仓库,需要仓库管理员权限。
  • 手动安装三步:安装 Claude GitHub App、添加 ANTHROPIC_API_KEY 或 CLAUDE_CODE_OAUTH_TOKEN 密钥、把 examples/claude.yml 复制到 .github/workflows/。
  • 工作流没有 prompt 输入时是交互模式,等待评论里的 @claude;提供了 prompt 就是自动化模式,不等提及直接运行。
  • 密钥只能存成 GitHub Secrets,不要提交进仓库;工作流只给需要的权限,合并前检查 Claude 的改动。
  • 每次运行消耗 GitHub Actions 分钟数和 API token,可以用 --max-turns、超时和并发控制限制。

它能做什么

Claude Code GitHub Action 在仓库的工作流里运行 Claude Code。在 PR 或 Issue 评论里提及 @claude,Claude 会分析代码、实现修改并推送提交。你也可以给它一个 prompt,让它在任意 GitHub 事件上自动运行。官方文档列出的用途有:把 Issue 变成 PR、根据评论修 bug、自动化重复任务。

几个产品都叫 Claude Code。本页讲的是用仓库里的工作流文件配置的 claude-code-action。如果你只想要每个 PR 都自动审查而不写工作流,官方文档指向的是另一个产品 Code Review。

配置:快速安装和手动安装

两种方式都需要仓库的管理员权限。

方式做法什么时候用
快速安装在 Claude Code 里运行 /install-github-app。Claude Code 安装 GitHub App、添加认证密钥,并为你准备好工作流的 PR。在本地运行 Claude Code 时。
手动安装自己安装 App、添加密钥、把工作流文件复制进仓库。不在本地运行 Claude Code、命令失败,或想完全掌控工作流文件。

快速安装

/install-github-app 只支持 github.com 仓库。如果仓库的 git remote 在 gitlab.com 或 bitbucket.org,命令会打印提示并退出,不会开始安装。

  1. 安装 GitHub CLI,并用 gh auth login 登录。Claude Code 会检查它,缺失时给出警告。
  2. 在要连接的仓库里打开 claude,运行 /install-github-app,按提示操作。Claude Code 先安装 Claude GitHub App,再为工作流设置认证密钥。
  3. 认证密钥的选择:如果 Claude Code 已经有 API key,会直接复用,并且在仓库里已有 ANTHROPIC_API_KEY 密钥时询问是否保留;否则在“用你的 Claude 订阅创建长期令牌”和“粘贴 API key”之间二选一。
  4. Claude Code 把凭据存成仓库密钥:API key 对应 ANTHROPIC_API_KEY,订阅令牌对应 CLAUDE_CODE_OAUTH_TOKEN。
  5. Claude Code 推送一个带有你所选工作流文件的分支,文件已经设为使用这个密钥,并在浏览器里打开 GitHub,PR 已经准备好。创建并合并这个 PR,仓库里就可以用 @claude 了。

想中途停止,按 Esc:正在进行的步骤会做完,之后的步骤不再开始,结束时的消息会列出仓库里已经发生的事,比如已推送的分支或已保存的密钥。安装 GitHub App 之后,Claude Code 会问是否继续 GitHub Actions 的设置;选 Skip for now 就只装 App,之后再运行 /install-github-app 完成工作流和密钥两步。

如果你选了审查工作流,Claude 会把每条审查发在 PR 本身:发现的每个问题发一条行内评论,没发现问题就发一条汇总评论。Claude 会跳过一些 PR,比如草稿。v2.1.229 之前,Claude 只把审查写进工作流运行日志。

要更新早期版本生成的审查工作流,二选一:

如果你用的是 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry,官方文档把你指向另一页:Use Claude Code GitHub Actions with cloud providers。

手动安装

1. 安装 Claude GitHub App。把 Claude GitHub App 安装到仓库。这个 Action 依赖 App 的三项权限:

安装时你还会授予其他 Claude 功能用到的权限,完整列表见下文“GitHub App 权限”。

2. 添加认证密钥。按你的认证方式,在仓库里添加下面其中一个密钥。GitHub 的做法见 using secrets in GitHub Actions。

在工作流文件里,把密钥传给对应的输入:API key 用 anthropic_api_key,OAuth 令牌用 claude_code_oauth_token。

3. 复制工作流文件。把 examples/claude.yml 复制到仓库的 .github/workflows/ 目录。这个文件本身就是可以直接工作的工作流。按提交时的样子,只要有人在 Issue 或 PR 里提及 @claude,Claude 就会响应,并使用 ANTHROPIC_API_KEY 密钥认证。如果你添加的是 CLAUDE_CODE_OAUTH_TOKEN,把工作流里的 anthropic_api_key 那一行改成 claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}。

安装完成后,在 Issue 或 PR 评论里 @claude 测试一下。

为整个组织配置

快速安装和手动安装一次只配一个仓库。要在组织里推广:

跨仓库共享的密钥,用 Claude Console 的 API key,不要用 OAuth 令牌,因为 OAuth 令牌绑定的是运行 claude setup-token 那个人的订阅。想完全不存长期密钥,可以用工作负载身份联合:Action 把工作流的 GitHub OIDC 令牌通过 Claude Console 的服务账号换成 Claude API 访问。需要设置的输入是 anthropic_federation_rule_id、anthropic_organization_id,以及可选的 anthropic_service_account_id 和 anthropic_workspace_id,并给工作流 id-token: write 权限。Console 一侧的配置见 Action 的 setup 指南。

GitHub App 权限

Claude GitHub App 由所有接入 GitHub 的 Claude 功能共用,包括这个 Action、Code Review,以及云端会话里的 PR 自动修复。一个 GitHub App 只有一套权限,所以其中有些权限这个 Action 并不使用。安装时你会授予:

权限访问
Actions读写
Administration只读
Checks读写
Contents读写
Discussions读写
Issues读写
Members只读
Merge queues只读
Metadata只读
Pull requests读写
Repository hooks读写
Statuses只读
Workflows读写

安装 App 就是接受它的全部权限,GitHub 不允许只接受一部分。如果你的组织只允许这个 Action 用到的权限,可以按 Action 的 setup 指南创建一个只有 Contents、Issues 和 Pull requests 的自定义 GitHub App。自定义 App 只覆盖这个 Action,Code Review 和网页端自动修复仍然需要官方 App。

基本工作流:响应 @claude

下面这个工作流以交互模式运行 Action:有人在 Issue 或 PR 评论里提及 @claude,Claude 就响应。

name: Claude Code
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
jobs:
  claude:
    if: contains(github.event.comment.body, '@claude')
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
      actions: read
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

这个工作流里不属于样板的部分:

工作流就位后,在任意 Issue 或 PR 评论里 @claude 并写出请求:

@claude implement this feature based on the issue description
@claude how should I implement user authentication for this endpoint?
@claude fix the TypeError in the user dashboard component

Claude 在同一个 Issue 或 PR 里用一条评论回复,并在工作过程中更新它。

交互模式、自动化模式和谁能触发

Action 根据工作流配置判断怎么运行:

两种模式下,Action 在 Claude 启动之前都会对触发者做两项检查,任何一项不通过,运行就失败:

常用参数

这些是最常用的输入,每个都对应 anthropics/claude-code-action 这一步里的一个 with: 键。

参数说明必填
prompt给 Claude 的指令,纯文本或技能调用。省略时 Claude 响应触发短语。否
claude_args传给 Claude Code 的 CLI 参数。否
anthropic_api_keyClaude API key。用 Claude API 时必填,除非你用 claude_code_oauth_token 或工作负载身份联合;Bedrock、Agent Platform、Foundry 不使用。
claude_code_oauth_token用 Claude 订阅认证的 OAuth 令牌,用 claude setup-token 生成。否
github_tokenGitHub 操作用的令牌。省略时 Action 以 Claude GitHub App 的身份认证。否
plugin_marketplaces换行分隔的插件市场 Git URL 列表。否
plugins换行分隔的、执行前要安装的插件名列表。否
settingsClaude Code 设置,JSON 字符串或指向设置 JSON 文件的路径。否
trigger_phraseClaude 响应的触发短语,默认 @claude。否
use_bedrock用 Amazon Bedrock 代替 Claude API。否
use_vertex用 Google Cloud 的 Agent Platform 代替 Claude API。否
use_foundry用 Microsoft Foundry 代替 Claude API。否

完整的输入列表见 Action 的配置参考。

用 claude_args 传 CLI 参数

claude_args 接受任何 Claude Code CLI 参数:

claude_args: "--max-turns 5 --model claude-sonnet-5 --mcp-config /path/to/config.json"

常用参数:

更多用法示例

官方的 examples 目录里有各种场景的现成工作流。本页的示例都用 API key 认证;如果你用 Claude 订阅认证,把任何示例里的 anthropic_api_key 那一行换成 claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}。

在 PR 上自动审查(运行技能)

prompt 输入除了纯文本,也接受技能调用:

下面的工作流安装 code-review 插件,并在 PR 被打开、更新、重新打开或标记为可审查时运行它的技能。它和快速安装里的审查工作流用的是同一个插件。想自己控制 prompt、模型和触发条件时用这样的工作流。在公开仓库里,GitHub 不会把密钥交给 fork 的 PR 触发的运行,所以这个审查只会在同一仓库分支发起的 PR 上运行。

name: Code Review
on:
  pull_request:
    types: [opened, synchronize, ready_for_review, reopened]
jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 1
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          plugin_marketplaces: "https://github.com/anthropics/claude-plugins-official.git"
          plugins: "code-review@claude-plugins-official"
          prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
          claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'

这个工作流里有两行决定审查发到哪里:

Claude 会跳过草稿和已关闭的 PR、它判断不需要审查的 PR(比如自动生成的或很小的改动),以及已经有 Claude 评论的 PR。

按计划运行

有 prompt 输入时,Action 在任意 GitHub 事件上以自动化模式运行,包括 cron 定时。对纯文本 prompt,在你授予 prompt 所需的工具之前,Claude 没有 shell 或 GitHub API 的访问权限:用 claude_args 里的 --allowedTools,或 settings 输入里的 permissions.allow 规则。如果调用的是技能,Claude 可以使用技能 allowed-tools frontmatter 授予的工具。GitHub 只从默认分支运行定时工作流,并且在公开仓库里,仓库 60 天没有活动后会停用定时。

下面的工作流每天 09:00 UTC 在工作流运行日志里生成一份报告。它的 claude_args 选定模型并允许两个 GitHub MCP 工具。Claude 通过这些工具经 GitHub API 读取提交和 Issue,所以可以省掉 checkout 步骤:

name: Daily Report
on:
  schedule:
    - cron: "0 9 * * *"
jobs:
  report:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: read
      id-token: write
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "Generate a summary of yesterday's commits and open issues"
          claude_args: |
            --model claude-opus-5-5
            --allowedTools "mcp__github__list_commits,mcp__github__list_issues"

用 CLAUDE.md 定义项目规范

在仓库根目录创建 CLAUDE.md,写下代码风格指南、审查标准、项目专属规则和偏好的写法。Claude 创建 PR 和响应请求时会遵循这些规范。CLAUDE.md 的写法见 CLAUDE.md 配置。

安全:密钥和权限

警告:永远不要把 API key 或 OAuth 令牌直接提交进仓库。始终把它们存成 GitHub Secrets,并在工作流里引用,例如 anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}。

想给 Claude 的工具使用加规则,可以参考 权限模式 和 Hooks 两篇,它们讲的是 Claude Code 本身的机制。

费用和用量

每次运行消耗两类资源:

想同时降低两类成本,给 Claude 更清晰的上下文,并限制每次运行的工作量:

常见问题排查

Claude 不响应 @claude

Claude 的提交没有触发 CI

认证错误

更多解决办法见 Action 的 FAQ。

卸载和从 beta 升级

常见问题

@claude 之后没有反应,先查什么?

按顺序查:GitHub App 是否装在这个仓库上、工作流是否已启用、仓库密钥里是否设置了 API key 或 OAuth 令牌、评论里的 @claude 是否是完整的词(不是 /claude 或 @claude-bot)、评论的用户是否有仓库写权限。bot 触发的评论会被拒绝,除非把它列进 allowed_bots。

该用 API key 还是 OAuth 令牌?

两者都可以:ANTHROPIC_API_KEY 是 Claude Console 的 API key,CLAUDE_CODE_OAUTH_TOKEN 用你的 Claude 订阅认证,Pro、Max、Team 和 Enterprise 套餐可用。用 OAuth 令牌时运行使用你的订阅,不走 API 计费。要在组织里跨仓库共享密钥,官方建议用 API key,因为 OAuth 令牌绑定的是运行 claude setup-token 那个人的订阅。

这个 Action 能指向中转或自定义 base URL 吗?

Anthropic 的这一页没有记录自定义 base URL 或网关的选项,所以这里不下结论。文档讲到的只有两条路:默认直接调用 Claude API(用 API key 或 OAuth 令牌),或者用 use_bedrock、use_vertex、use_foundry 通过云服务商的账号走。在本机配置 Claude Code 本身,见 Claude Code 接入。

来源