Claude 连接 GitHub 失败:看不到仓库 / 拒绝访问的修法

Claude 的 GitHub 连接器显示没仓库或 access check failed?把 GitHub App 装到正确账号、选好仓库、清掉组织审批即可。

你在 Claude 里连接 GitHub,流程一秒就走完,然后仓库选择器却显示 No repos match,或者只列出几个 public 仓库(你的私有项目一个都没有),又或者远程任务报 GitHub repository access check failed — re-authorize GitHub in settings(错误码 github_repo_access_denied)。截至 2026 年 6 月,原因几乎总是出在 GitHub App 这一层,而不是你的 Claude 账号:要么 Claude 的 GitHub App 没装到拥有这些代码的账号上,要么这个安装里没勾选该仓库,要么组织(org)的 owner 还没批准。

最快修复:github.com/apps/claude 安装(或重新配置)Claude 的 GitHub App,选中你需要的那几个仓库,然后回到 Claude 的 Settings → Connectors → GitHub,点一次 Disconnect → Connect 刷新 token。这能解决绝大多数情况。

关键要先理解一件事:Claude 的 GitHub 连接器是一个 GitHub App,不是普通的 OAuth 登录。OAuth 那一步只确认你是谁;Claude 实际能看到什么,取决于你在安装这个 App 时勾选了哪些仓库——也就是 github.com/settings/installations 里的配置。如果 App 根本没装到拥有这些代码的 org / 账号上,再大的 OAuth scope 也变不出这些仓库。

先对号入座

症状最可能的原因跳到
选择器里 No repos match;只显示 public 仓库App 没装,或安装里没勾这个仓库Step 1
App 显示 “All repositories” 但 org 仓库还是不出现org 审批待批,或连接器同步过期Step 2、Step 6
GitHub repository access check failed — re-authorize GitHub in settingstoken 过期,或连接只走了 OAuth 没装 AppStep 3、Step 8
连接一键完成,从没出现过”选择仓库”页面只走了 OAuth,App 从未安装Step 8
仓库属于一个你看不到的账号你授权了错误的 GitHub 账号Step 4
连接时是让你粘贴 token,而不是打开 GitHubPersonal Access Token 模式,scope 太窄Step 5
错误里提到 rate limit exceeded / abuse detectionGitHub 在限流(HTTP 403)Step 7

常见原因,按命中率排序

1. GitHub App 安装里没勾选这个仓库

这是 2026 年的头号原因。连接时 Claude 会把你带到它的 GitHub App。如果你一路用默认值点过去、没把仓库勾上(或者你选了 Only select repositories 却忘了加这个仓库),Claude 是真的看不到它——选择器就返回 No repos match

怎么判断: 打开 github.com/settings/installationsClaudeConfigure,看 Repository access。如果它显示 Only select repositories 而你的仓库不在列表里,问题就在这。

2. org 强制审批,而 App 还没被批准

当代码放在组织里时,org 可能要求 owner 批准任何新装的 app。如果你不是 owner,你在 org 上装 App 只会生成一个待审批请求(pending request),而不是一个真正生效的安装——于是仓库一直不可见,却也不报硬错误。较新创建的 org 默认就开着这类限制,而且自 2025 年 12 月 “control who can request apps” 改动后,有些 org 甚至禁止非 owner 发起请求。

怎么判断:github.com/settings/installations 里,该 org 显示的是 pending / awaiting-approval 状态而不是 Configure。在 org 那一侧,owner 可以在 Org → Settings → Third-party Access → GitHub Apps(以及 OAuth app policy)里查看是否有待批的 Claude 请求。

3. 重装后 token 过期

如果你(或管理员)重装、重配过 Claude 的 GitHub App,Claude 手里那个 token 可能已经失效。远程 / agent 任务于是报 GitHub repository access check failed — re-authorize GitHub in settings

怎么判断: 连接器在 Claude 里仍显示 Connected,但针对仓库的操作却报上面那条 re-authorize 信息。通常做一次 Disconnect → Connect 就好。

4. 你授权的账号 ≠ 拥有代码的账号

最隐蔽的一种。你用 personal@gmail.com 登录 Claude,浏览器里又恰好登着 personal-github,于是安装 / OAuth 挂到了个人账号上。但你的代码在 work-github 名下。表面上一切都”已连接”,仓库就是不在。

怎么判断: 对照一下 github.com 右上角头像的账号,和 Claude 里 GitHub 连接器旁显示的账号名。是同一个登录吗?

5. PAT 模式且 scope 太窄

某些自部署 / 企业环境,以及网页版 Claude Code,允许用细粒度(fine-grained)Personal Access Token 而不是 App 来连接。如果 token 的仓库范围或权限太窄,Claude 能连上却读不到内容。

怎么判断: 连接时 Claude 是打开了 GitHub App / OAuth 页面,还是让你粘贴 token?如果你贴了 token,那就是 PAT 模式。

6. 连接器同步过期(已知后端问题)

有一个已记录在案的边缘情况:即使 App 已经以 All repositories 装在 org 上、而且你就是 owner,org 仓库仍然不出现在 Claude 的选择器里——这是后端的同步 / 索引缺口,不是你的配置问题。该问题在 Claude Code 的 issue 跟踪里被报告并以”重复”关闭,所以 Anthropic 已经知道。

怎么判断: gh repo list your-org(GitHub CLI)能列出这些仓库,github.com/settings/installations 里 App 安装也看着没问题,但 Claude 的选择器还是 No repos match

7. 限流 / abuse detection

频繁重试或一次查询太大,会触发 GitHub 的二级限流,返回 HTTP 403。

怎么判断: 错误文本里含 rate limit exceededabuse detection

8. 连接只走了 OAuth——App 从未安装

一种较新的故障模式(记录在 Claude Code 仓库 issue #64130,2026 年 5 月 31 日报告,已以”重复”关闭):连接流程仅用 OAuth 一键走完,完全跳过了 GitHub App 的安装步骤。从没出现过”选择哪些仓库”的页面,连接器显示 Connected,但 Claude 始终没出现在 github.com/settings/installations 里。远程 / agent 任务于是报 GitHub repository access check failed — re-authorize GitHub in settings,而单纯的 Disconnect → Connect 修不了,因为重连只是又走了一遍同样的纯 OAuth 路径。

怎么判断: 你连了 GitHub,但从没被要求选仓库,而且 Claude 不在你的 installations 列表里。这主要打到远程 agent 和定时任务(需要 clone 私有仓库的部分),而在聊天里浏览 public 文件可能看起来仍然正常。

最短修复路径

Step 1:安装 / 重配 GitHub App 并选中仓库

访问 https://github.com/apps/claude
  → Install(已装则 Configure)
  → 选择拥有该仓库的那个账号 / org
  → Repository access:
       - "All repositories",或
       - "Only select repositories" → 加上你需要的那几个仓库
  → Install & Authorize(或 Save)

github.com/settings/installationsClaudeConfigure 验证:你的仓库必须出现在 Repository access 下。然后在 Claude 里打开 Settings → Connectors → GitHub,在对话里用 + → Add from GitHub(或在 Project 里 + → GitHub)——这个仓库现在应该能搜到了。

Step 2:清掉 org 审批

如果仓库在一个开了 app 限制的组织里:

你不是 org owner:
  在 org 上装 App 时点 "Install & Request"
  → 会有邮件发给 org owner。告诉他们确切要哪几个
    仓库、要什么权限(读 Contents / Metadata)。

你是 org owner:
  Org → Settings → Third-party Access → GitHub Apps
  → 审批待批的 "Claude" 请求 → Grant / Install。
  顺便看同一页的 "OAuth app policy" 是否有遗留的
  OAuth 限制状态。

一句含糊的”请批一下 Claude”通常会被忽略。把安装 URL 和具体仓库清单一起发过去。

Step 3:刷新 token(修 “re-authorize” 错误)

Claude → Settings → Connectors → GitHub → Disconnect
  → Connect → 重新完成 GitHub App 授权

这就是 GitHub repository access check failed — re-authorize GitHub in settings 的修法。只要 App 被重装过、或它的仓库选择变过,就做一次。

Step 4:账号匹配检查

在 Claude 里问:

List every GitHub org and account I can reach through the connector.

如果结果跟你预期的不一样,说明你授权了错误的账号。Disconnect,在浏览器里切换当前 GitHub 登录(或用单独的浏览器配置文件),然后再 Connect,并把 App 装到正确的账号上。

Step 5:PAT 模式细节

如果你用细粒度 PAT 连接,按最小权限创建:

访问 https://github.com/settings/personal-access-tokens/new
  → Repository access → "All repositories" 或 "Only select repositories"
       (必须包含你想让 Claude 读的仓库)
  → Permissions (Repository):
    - Contents: Read        (必需——真正的代码 / 文件)
    - Metadata: Read        (自动勾选,必需)
    - Pull requests: Read    (仅当你要读 PR 时)
    - Issues: Read/Write     (仅当要让 Claude 建 issue 才给 Write)
  → Generate token,立即复制(只显示一次)
  → Claude → Settings → Connectors → GitHub → 粘贴 token

PAT 失败的典型原因,就是缺 Contents: Read,或者 token 的仓库范围没把你的仓库包进去。

Step 6:强制同步(选择器过期)

如果 App 和审批都没问题,仓库却还是不出现(也就是第 6 类后端缺口):

1. github.com/settings/installations → Claude → Configure
   → 把 Repository access 从 Selected 切到 All → Save(重新触发 webhook)
2. Claude → Settings → Connectors → GitHub → Disconnect → Connect
3. 如果网页选择器仍漏掉某个 org 仓库,用 Claude Code
   CLI 通常能直接访问到它,作为临时绕过。

Step 7:限流冷却

如果触发了 abuse detection:Disconnect → 等 60 分钟(不是 5 分钟)→ Connect,并把开头的查询量放慢。

Step 8:手动安装 App(连接只走了 OAuth 时)

如果你从没看到过选择仓库的页面、而且 Claude 不在你的 installations 里,说明连接步骤给你做了授权却没装 App。这时别再依赖连接流程,直接安装:

1. 打开 https://github.com/apps/claude/installations/select_target
   → 选拥有该仓库的账号 / org
   → Repository access:"All repositories" 或
     "Only select repositories" → 加上你需要的仓库
   → Install(org 非 owner 会变成 "Install & Request",见 Step 2)
2. 确认 "Claude" 现在出现在
   github.com/settings/installations 里,且列出了你的仓库
3. Claude → Settings → Connectors → GitHub → Disconnect → Connect
   让连接器拿到新安装的 token

做完之后,之前报 GitHub repository access check failed 的远程 / 定时任务应该就能 clone 私有仓库了。在纯 OAuth 连接路径被修好之前,这是标准的绕过办法。

怎么确认修好了

  1. github.com/settings/installationsClaudeConfigure 里,Repository access 下能看到你的仓库(且 org 显示 Configure,而不是待审批请求)。
  2. 在 Claude 里 + → Add from GitHub 能按名字搜到该仓库——不再 No repos match
  3. 让 Claude 执行:Read the README from <owner>/<repo> and summarize it in two lines. 如果它给出真实文件的正确摘要,就说明读取权限端到端打通了。

常见问题

为什么 Claude 只显示我的 public 仓库? GitHub App 没装到拥有这些私有仓库的账号上,或者安装用的是 Only select repositories 却没把这些仓库选上。到 github.com/settings/installations 修好安装,然后在 Claude 里 Disconnect → Connect。

这个 GitHub 连接器到底是 OAuth 还是 GitHub App? 两层都有,但仓库可见性是由 GitHub App 安装控制的,而不是 repo 这类传统 OAuth scope。OAuth 那步只负责认证你的身份;App 的仓库选择才决定 Claude 能读什么。

我是 owner、也选了 “All repositories”,org 仓库就是不出现,怎么办? 先确认没有待审批请求,然后强制同步(Step 6)。如果还在,这符合已知的 Claude 后端同步缺口——在它被排查期间,Claude Code CLI 通常能直接访问到该仓库。

GitHub repository access check failed — re-authorize GitHub in settings 是什么意思? Claude 存的 token 过期了,通常发生在 App 被重装、或它的仓库范围变了之后。去 Settings → Connectors → GitHub → Disconnect → Connect 重新授权。

每次都需要 org owner 吗? 只有当你的 org 强制 app 审批时才需要。如果是这样,owner 在 Org → Settings → Third-party Access → GitHub Apps 批准一次 Claude 即可;之后再加新仓库,只是在现有安装上重新配置一下而已。

读一个私有仓库,PAT 最少要什么权限? Repository Contents: ReadMetadata: Read(Metadata 是自动必需的),并把 token 的仓库范围设成包含那个仓库。只有需要时才加 IssuesPull requests

我连了 GitHub,但从没被问要授权哪些仓库——为什么 agent 还是失败? 连接流程只走了 OAuth、从没安装 GitHub App,所以 Claude 不在 github.com/settings/installations 里。重连只会重复这条路径,所以请到 github.com/apps/claude/installations/select_target 手动装好 App,再在 Claude 里 Disconnect → Connect(Step 8)。

预防

  • 在密码管理器里记下哪个 GitHub 账号连到了 Claude,避免授权错账号那个坑。
  • 加入新 org 的当天就申请第三方访问,别等真要用某个仓库时才发现要等审批。
  • 个人和工作 GitHub 用不同的浏览器配置文件,防止跨账号串号安装。
  • 优先用细粒度 PAT 而不是 classic PAT,并坚持最小权限(Contents / Metadata 只读)。
  • 个人项目和工作项目分到两个 Claude Workspace,各自授权对应的 GitHub 账号。

相关阅读

标签: #Claude #排查 #排查