anthropics / anthropics/claude-code
[BUG]
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
### Preflight Checklist
- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
### What's Wrong?
In Cowork, the GitHub Integration appears in Settings → Customize → Connectors with Type Web, Authorization Individual, and a green ✓ status. It is genuinely authorized — the session container carries a valid GITHUB_TOKEN that authenticates successfully as the correct GitHub user.
Despite this, there is no way for Claude to read a repository in a Cowork session. Three independent access paths all terminate, each for a different reason, and none surfaces an error to the user. The connector simply looks connected and does nothing.
Failure mode 1 — not an MCP connector, so nothing to enable. SearchMcpRegistry for github, git repository, source code, pull requests, version control, gitlab, azure devops returns an empty array. RefreshMcpTools confirms no GitHub server is attached to the session. The per-conversation Connectors submenu (+ → Connectors) lists only Atlassian, Claude Docs and Claude in Chrome — GitHub Integration is absent. Consistent with it having no tools, but indistinguishable to the user from a broken connector.
Failure mode 2 — the context route has no entry point in Cowork. Per the documentation, GitHub Integration is a context connector, invoked via + → "Add from GitHub". Cowork's + menu has no such option; it offers only Add files or photos, Record a skill, Skills, Connectors, Design system, Add plugins. The connector's sole documented invocation path does not exist on this surface, while Cowork's own settings UI continues to advertise it as connected.
Failure mode 3 — the session token points at a tool that isn't exposed. The container's GITHUB_TOKEN authenticates fine (GET /user → 200). All discovery endpoints return 403 with "sessions are bound to their configured repositories". A repository-scoped request against a real, accessible private repo returns 403 with an instruction to "Use add_repo to request access". add_repo is not available in Cowork — not in the tool list, not surfaced by ToolSearch. The API is instructing the caller to use a tool the surface does not provide, making the session token permanently unusable here.
Additional defect — ListConnectors under-reports. ListConnectors returned only four connectors (Atlassian, Figma, Microsoft 365, monday.com), omitting GitHub Integration, Claude Docs and Claude in Chrome — two of which were actively serving tools in the same session. Combined with SearchMcpRegistry returning empty, this caused Claude to state confidently and repeatedly that no GitHub connector existed on the account. The user had to correct it with a screenshot of their own settings page. This is arguably the most damaging part of the bug: the diagnostic tools actively produce false negatives.
Impact. A user with GitHub correctly authorized, looking at a green tick, has no working path to code and no error explaining why. The failure is silent across all three routes. Cowork cannot be used for any task involving reading a repository, despite presenting as though it can. The only workarounds are granting local filesystem access to a machine holding the clones, or abandoning Cowork for another surface.
Related open issues — this is a long-running cluster, not an isolated report: #32479 (connected in Desktop, not recognised) · #57161 (repos missing from web picker) · #64130 (OAuth only, private repos inaccessible in remote agents) · #71542 (links repos but cannot access content for any repo — regression from 25 June 2026, still open) · #79353 (repos missing from cloud picker) · #89747 ("Authorized" but not "Installed") · #93959 (repos not visible, index reset requested) · #94532 (connected but no tools exposed, labelled invalid).
Common thread: GitHub authorization state and GitHub usability are decoupled, and nothing in the product tells the user which one they have. This report adds a failure mode not covered above — on Cowork there is no invocation path at all, and the API's own suggested remedy is unavailable on that surface.
Scope note: this involves Claude Code session infrastructure directly — the failing calls instruct the caller to use add_repo and cite docs.anthropic.com/en/docs/claude-code/github-actions. Filing here follows the precedent of other Cowork issues on this repo (#92191, #90359, #78368).
### What Should Happen?
With GitHub Integration showing as connected, Claude in a Cowork session should be able to read repository contents through at least one route — as MCP tools, as an attachable context source, or via a repo-scoped token. Currently none of the three works, and none reports an error.
Suggested fixes, in rough priority order:
Surface "Add from GitHub" in Cowork's + menu, matching claude.ai web. This alone resolves the primary use case.
Expose add_repo in Cowork — or stop returning an error that instructs the caller to use it on a surface where it does not exist.
Fix ListConnectors to return all connectors, including non-MCP ones, ideally with a type discriminator so the model can distinguish a context connector from a tool connector rather than having to infer it. As it stands the tool produces false negatives that the model reports to the user as fact.
Differentiate context connectors in the settings UI. GitHub Integration renders identically to Atlassian (Web / Individual / ✓) despite behaving completely differently. A type badge, or a line stating it is used via + → Add from GitHub, would prevent this entire class of confusion.
Don't advertise a connector as available on a surface that cannot invoke it — or mark it as unsupported there.
### Error Messages/Logs
```shell
Token authenticates correctly:
GET https://api.github.com/user → 200
{"login": "", "id": , ...}
X-RateLimit-Limit: 15000
X-OAuth-Scopes: (empty)
X-Accepted-Github-Permissions: allows_permissionless_access=true
All discovery endpoints blocked:
GET /user/orgs → 403
GET /user/repos → 403
GET /installation/repositories → 403
GET /user/installations → 403
{"message":"This GitHub API path is not available: sessions are bound to
their configured repositories. Use repository-scoped endpoints
(repos/{owner}/{repo}/...).",
"documentation_url":"https://docs.anthropic.com/en/docs/claude-code/github-actions"}
Repository-scoped request against a real, accessible private repo:
GET /repos// → 403
{"message":"GitHub access to this repository is not enabled for this
session. Use add_repo to request access. If add_repo answers that read
access is already available and you need GitHub API or write access,
call add_repo again with access:\"push\" to attach the repository with
credentials.",
"documentation_url":"https://docs.anthropic.com/en/docs/claude-code/github-actions"}
add_repo is not present in the Cowork tool list and is not returned by ToolSearch for queries such as add_repo attach github repository access.
Contents endpoint returns a malformed-path error rather than the access error:
GET /repos///contents/ → 400
{"message":"Request path could not be canonicalized."}
Git clone over HTTPS with the same token:
remote: Invalid username or token. Password authentication is not
supported for Git operations.
fatal: Authentication failed for 'https://github.com//.git/'
Network itself is healthy — cloning a public repo from the same container succeeds, and api.github.com returns 200.
RefreshMcpTools — no GitHub server attached:
Atlassian (41 tools), Claude_Docs (8), claude-code-remote (6),
memory (6), remote-devices (25), visualize (2), widgets (16),
claude-in-chrome (22)
SearchMcpRegistry with keywords ["github", "code review", "repositories", "developer tools", "azure devops", "gitlab"]:
[]
ListConnectors — returns four, omits three that exist (GitHub Integration, Claude Docs, Claude in Chrome):
Atlassian (connected: true, enabledInChat: true)
Figma (installState: unknown, enabledInChat: false)
Microsoft 365 (installState: unknown, enabledInChat: false)
monday.com (installState: unknown, enabledInChat: false)
```
### Steps to Reproduce
Environment
Field | Value
-- | --
Surface | Cowork (Claude desktop app)
App version | 2.110.0
Electron | 44.2.0
Node | 24.20.0
Host OS | Windows x64
Model | claude-opus-5
Session type | Cloud container, linked to local device
Date observed | 17 September 2026
Precondition: GitHub Integration authorized on the account. Confirm at Settings → Customize → Connectors → Yours: it shows Type Web, Authorization Individual, Status ✓.
Path A — MCP route
- Open a Cowork session.
- Ask Claude to read a file from a private GitHub repository you have access to.
- Claude searches for GitHub tools and finds none.
SearchMcpRegistryreturns[];RefreshMcpToolsshows no GitHub server. - Open
+→ Connectors. Only Atlassian, Claude Docs and Claude in Chrome are listed. GitHub Integration is absent with no explanation.
Path B — context route
- Open the
+menu in Cowork and look for "Add from GitHub" as described in the GitHub integration documentation. - It is not present. Available options are: Add files or photos, Record a skill, Skills, Connectors, Design system, Add plugins.
Path C — session token route
- In the Cowork session, inspect the container environment:
GITHUB_TOKENandGH_TOKENare both set. curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/user→ 200, correct user.curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/user/repos→ 403, "sessions are bound to their configured repositories".curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/<org>/<repo>for a real accessible repo → 403, "Useadd_repoto request access".- Attempt to call
add_repo. It is not in the tool list andToolSearchdoes not surface it. Dead end. git clone https://x-access-token:$GITHUB_TOKEN@github.com/<org>/<repo>.git→ "Invalid username or token. Password authentication is not supported for Git operations."
Result: all three paths fail. No error is surfaced in the UI at any point. The connector continues to display a green ✓.
### Claude Model
Opus
### Is this a regression?
I don't know
### Last Working Version
_No response_
### Claude Code Version
2.1.274 (Claude Code)
### Platform
Anthropic API
### Operating System
Windows
### Terminal/Shell
Other
### Additional Information
_No response_
Contributor guide
No contributing guide indexed for this repository
Research direction
No repository files or tests are named. Reproduce the Cowork flow from Settings → Customize → Connectors, the + menu, ListConnectors, SearchMcpRegistry, RefreshMcpTools, and add_repo; trace where the connector and session tools are exposed. Done means at least one documented GitHub access route works and unsupported routes report accurate, actionable status.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github
- Domain
- backend-api-design, cloud, frontend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100