16  配置 GitHub 访问

Claude Tag 为 Claude 提供独立的 GitHub 身份,因此它以 Claude 名义提交 Pull Request。了解如何关联你的 GitHub 组织、向包授予仓库、克隆仓库时会话加载什么、如何安装项目依赖,以及 Claude 可以对 GitHub Actions 做什么。

export const BetaNote = () => Claude Tag is in public beta. Features and behavior described here may change before general availability.;

使用 GitLab 而非 GitHub?参见配置 GitLab 访问。GitLab 使用服务账号令牌而非已安装的应用。

Claude Tag 为 Claude 提供独立的 GitHub 身份——Claude GitHub App——因此从频道中提交的 Pull Request 由 Claude 而非某个人署名。只有当团队要让 Claude 处理代码工作时才需要 GitHub 访问:分支、Pull Request、代码审查或 CI 跟进。

你只需为 Claude 组织关联一次 GitHub,然后按 Access bundle 授予仓库。

如果你在运行设置之前关联了 GitHub 组织,设置中会包含一个内联授予仓库访问的步骤,因此你不需要之后返回 Repositories 标签。

16.1 关联你的 GitHub 组织

完成关联的人必须同时是 GitHub 组织的 owner 和你 Claude 组织的 Admin。如果你不是 GitHub 组织 owner,在 GitHub 设置页面的 Not a GitHub account owner? 下使用 Copy message 将链接发送给是的人。

打开 [`claude.ai/admin-settings/github`](https://claude.ai/admin-settings/github)。此页面与 Claude Code 共享;一个连接同时服务两个产品。



点击 **Connect Claude to GitHub** 并完成 GitHub 授权。授权后,页面显示两个部分:**Connected GitHub accounts** 列出已关联的组织,**Unlinked accounts** 列出已安装 Claude GitHub App 但尚未关联的组织。



如果你的组织在 **Unlinked accounts** 下,点击其旁边的 **Link**。如果完全未列出,点击 **Install on another organization** 并在 github.com 上完成安装;你会返回此页面,该组织显示在 **Connected GitHub accounts** 下为 **Connected**。

* 禁用的 **Link** 按钮表示你不是该 GitHub 组织的 owner
* **Needs permissions** 状态表示安装有待处理的请求;**Review permissions** 将你带到 github.com 批准

16.2 授予仓库访问权限

其余步骤在 Claude Tag 管理页面中,而非 GitHub 设置。仓库授权位于 Access bundle 上;编辑包的 Repositories 标签需要 Claude 组织的 Owner 角色。

打开 [Access bundle](../admins/add-connections.qmd#your-first-access-bundle),进入其 **Repositories** 标签。在关联任何 GitHub 组织之前,此标签显示 **Get started with GitHub** 按钮,打开 [`claude.ai/admin-settings/github`](https://claude.ai/admin-settings/github)。



选择 Claude 可以读取和提交 Pull Request 的仓库。可以按列出的仓库逐个授权,或选择 **Connect all** 为整个组织授权。

16.3 验证 GitHub 访问

  • GitHub 组织在 claude.ai/admin-settings/githubConnected GitHub accounts 下显示为 Connected
  • 授予的仓库列在包的 Repositories 标签中。
  • 进行端到端检查,从测试频道打开一个草稿 PR;参见验证包已生效

16.3.1 如果 Claude 无法访问仓库

当 Claude 回复 “That environment or repo isn’t configured for Claude Code” 或报告 GitHub 返回 403 时,按顺序检查两个层面。

检查 位置
拥有该仓库的 GitHub 组织在 Connected GitHub accounts 下显示 Connected claude.ai/admin-settings/github。等待 GitHub 组织 owner 批准的安装显示 Needs permissionsReview permissions 打开 github.com 上的批准。
仓库列在包的 Repositories 标签上,且该包附加在频道的 claude.ai/admin-settings/claude-tagAccess bundles → 包 → Repositories。在一个包中授予的仓库从另一个包下的频道不可达。

仓库授权适用于新话题。更改 Repositories 标签后,在频道中启动新话题并在第一条消息中指明仓库名称。

消息 “GitHub Actions writes are not permitted for this session type.” 是另一种不同的 403。它不涉及仓库访问;参见Claude 可以对 GitHub Actions 做什么

16.4 授予的仓库如何到达会话

在包中授予仓库使其在该包作用域覆盖的任何频道中可用于 Claude。它不会自动将代码克隆到会话中。会话启动时不检出任何仓库;Claude 在请求指明时克隆仓库,或当话题中有人告诉它添加哪个仓库时。告诉你的团队在代码任务的第一条消息中指明仓库名称。

16.4.1 从仓库加载什么

当 Claude 将授予的仓库克隆到会话中时,其 Claude Code 配置在克隆完成后的下一轮加载,因此项目上下文无需进一步提示即可到达:

  • CLAUDE.md.claude/CLAUDE.md.claude/rules/*.md 作为项目上下文加载
  • .claude/skills/ 中的技能加载,因此 Claude 可以在会话中使用它们
  • .claude/settings.json 中的项目设置加载,因此其中定义的 hooks 在会话中运行,就像在 Claude Code 下一样

仓库的 .mcp.json 永远不会被加载,连接仅来自 Access bundle。

仓库技能仅在拥有该仓库的会话中生效。要给某个作用域下每个频道一个技能,通过技能仓库添加。

16.4.2 安装项目依赖

每个会话在隔离的沙箱中运行,配备标准预装工具集。沙箱对每个仓库都一样;没有设置脚本或自定义镜像需要配置。如果项目需要标准集合不包括的内容(例如特定的语言运行时或数据库客户端),请将安装命令添加到仓库的 CLAUDE.md 中。

Claude 在开始需要它的工作时将 CLAUDE.md 作为指导而非无条件设置步骤遵循。将每个安装写为它所支持工作的前提条件,例如 “在构建或运行测试之前安装 SDK”,这样 Claude 在任务涉及该代码时运行它。沙箱对每个会话都是全新的,因此每次 Claude 在仓库中工作时都会重复安装。

优先使用标准包管理器及其默认注册表,而非供应商安装脚本或第三方包源。包管理器如 aptpipnpmdotnet 可从沙箱访问其默认注册表;从其他主机的下载可能在沙箱的出站边界被阻止。Owner 可以在包的 Domains 标签上允许额外主机;参见允许无凭据的主机

16.5 Claude 可以对 GitHub Actions 做什么

在频道中,Claude 以 Claude GitHub App 身份操作 GitHub,该身份携带一组固定的 GitHub Actions 权限。没有管理设置可以更改它,添加 api.github.com 作为带你自己 token 的自定义连接也不能改变它;Claude 的 GitHub 请求始终以 Claude GitHub App 身份执行。

Claude 可以:

  • 读取工作流运行、作业、日志和构件,因此它跟踪 Pull Request 的 CI 并报告结果
  • 重新运行工作流运行或其失败的作业,以及取消正在进行的运行
  • 通过推送分支或打开 Pull Request 触发 pushpull_request 工作流,与任何其他作者一样。要让 Claude 按需启动自动化,将工作流放在这些触发器之后而非 workflow_dispatch
  • 编辑 .github/workflows/ 下的文件并打开包含更改的 Pull Request,与任何其他文件一样

Claude 不能:

  • 调度工作流(workflow_dispatchrepository_dispatch
  • 批准等待批准的工作流运行或其待处理的部署
  • 删除运行、日志或构件
  • 启用或禁用工作流

对以上任何一项的请求都会被 403 拒绝。repository_dispatch 请求返回 “repository_dispatch is not permitted for this session type.”。其他返回 “GitHub Actions writes are not permitted for this session type.”。调度工作流或批准暂停的运行会使用仓库的 Actions 密钥启动新代码运行,因此需要人工操作;从 github.com 的仓库 Actions 标签执行。

16.6 计划任务使用相同的连接

计划任务使用与交互式工作相同的 GitHub 连接,无需额外配置。无法访问其仓库的循环任务跳过该次运行并在下次计划时重试;在连续三次失败且跨度至少一小时后,它会自动禁用。无法访问其仓库的一次性任务在首次失败时禁用;任务页面显示原因。

16.7 GitHub Enterprise

16.7.1 带数据驻留的 GitHub Enterprise Cloud

*.ghe.com(带数据驻留的 Enterprise Cloud)上的组织注册方式与下面的 GitHub Enterprise Server 主机相同。

16.7.2 GitHub Enterprise Server

GitHub Enterprise Server 实例在可从公共互联网访问时受支持。私有网络上没有公共地址的 GHES 主机无法连接。

在 GHES 上,你在自己的实例上创建 GitHub App 而非安装 Anthropic 的。设置与 Claude Code 共享;按照 Claude Code GitHub Enterprise Server 指南创建和注册应用。注册 GHE 主机后,包的 Repositories 标签上会出现主机选择器;在那里选择你的主机以授予其仓库。

向你的 Claude 组织注册 GHE 主机并非完全自助。如果指南没有带你完成全部步骤,请联系你的客户团队。

16.8 相关资源