Claude.ai access to github private repo Anthropic's Claude.ai GitHub integration supports private repositories, but users may encounter access issues due to misconfigured GitHub App installation, repository scope, or organization-level approvals. The official Claude GitHub App has read/write permissions across multiple GitHub features, and limiting it to a single repository does not make it read-only. Hmm… apparently this happens more often than I expected, and it doesn’t seem to have a single cause: The short version is: yes, Claude.ai’s GitHub integration is supposed to support private repositories. Anthropic’s current GitHub integration documentation https://support.claude.com/en/articles/10167454-use-the-github-integration explicitly describes granting the Claude GitHub App access to either all repositories or selected private repositories. So I would not start from “private repos are unsupported.” I would start by checking which layer is actually failing : GitHub App installed on the correct GitHub account/org ↓ the private repo is included in that installation ↓ if organization-owned: SSO / admin / enterprise approval ↓ if all of that is correct: Claude-side repository enumeration / connector state The fact that Claude Code works with the repo is useful , because it shows the repository is reachable through at least one Claude/GitHub path. But I would not take that as proof that the Claude.ai GitHub connector is healthy — the web integration has its own GitHub App / connector state. On the GitHub side , open the installed Claude GitHub App and verify that it is installed on the account or organization that actually owns the private repository, and that the repository is included under its repository access. GitHub distinguishes authorizing a GitHub App from installing it. Installation is where the app gets access to repository resources and where you choose which repositories it may access; authorization is the user-side relationship that lets the app identify you and, where applicable, act on your behalf. GitHub explicitly notes that an app can be authorized without being installed, or installed without being authorized: Authorizing GitHub Apps https://docs.github.com/en/enterprise-cloud@latest/apps/using-github-apps/authorizing-github-apps . So a UI saying “Connected” is useful information, but it does not by itself prove: Connected = correct GitHub App installation + correct repository scope + correct org/SSO authorization + healthy Claude-side repository enumeration If the repo is already explicitly selected there, I would move on rather than repeatedly reconnecting it. There are actually two different meanings of “read only” here: For 1 , the Claude.ai Chat/Projects integration is quite read-oriented. Anthropic says that this integration syncs only the selected branch’s file names and file contents , not commit history, pull requests, or other metadata: What information is retrieved from GitHub? https://support.claude.com/en/articles/10167454-use-the-github-integration . For 2 , however, there is an important distinction: limiting the app to one repository is not the same thing as making the app’s GitHub permissions read-only. Anthropic’s current documentation for the official Claude GitHub App says that the app is shared across Claude features that integrate with GitHub and currently has a broader permission set, including read/write access to Contents, Issues, Pull Requests, Actions, Checks, Discussions, Repository hooks, and Workflows. Anthropic also notes that GitHub does not let an installer accept only a subset of that app’s requested permission set: Claude GitHub App permissions https://code.claude.com/docs/en/github-actions github-app-permissions . So if by “read only” you mean strictly no GitHub write permission granted to Claude at all , I would treat that as a separate security requirement rather than assuming that “Only select repositories” makes the official app read-only. You can substantially reduce exposure by granting the official app access only to the one repository you want Claude to see. So, in practical terms, I would check it in this order: 1. GitHub side: Is the Claude GitHub App actually installed on the GitHub account/org that owns the private repo? 2. Repository scope: Is that exact private repo included in the installation? 3. If organization-owned: Check SSO / Grant vs Request / org admin approval and EMU approval if applicable . 4. If all of those are already correct: Don't assume user error. Compare the exact symptom with the similar Claude-side reports above. 5. Separately decide what "read only" means: - reading/analyzing only, or - absolutely no GitHub write permission granted. My best guess from the information in the post would be to start with GitHub App installation + repository scope , because that is both the documented private-repo path and the cheapest thing to verify. But if that exact repo is already selected in GitHub and, where applicable, SSO is already authorized, I would stop repeatedly reconnecting things and treat a Claude-side repository enumeration/sync/connector problem as a real possibility. There are enough similar reports now that I don’t think “Claude Code works, therefore the Claude.ai connector must be configured correctly” is a safe assumption.