[BUG] Cowork — GitHub connector unusable: OAuth DCR unsupported, UI shows misleading state, Disconnect button dead
Preflight Checklist
- [x] I have searched existing issues 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?
Cowork's GitHub connector (plugin:engineering:github) is fully non-functional and cannot be reset. Five compounding issues:
- OAuth fails immediately. When Claude invokes the connector's
authenticatetool, it returns:
SDK auth failed: Incompatible auth server: does not support dynamic client registration. Ask the user to run /mcp and authenticate manually.
Root cause: GitHub's MCP server (https://api.githubcopilot.com/mcp/) does not support OAuth Dynamic Client Registration (RFC 7591), which is what Cowork's auto-auth uses.
- The suggested fallback (
/mcp) does not exist in Cowork. That slash command is a Claude Code feature. There is no documented manual-auth path inside Cowork mode.
- UI shows misleading state. Customize → Connectors shows a Disconnect button next to GitHub, implying it's connected. In reality no tools loaded and no auth ever completed.
- Disconnect button is unresponsive. Clicking it produces no state change, no error, no feedback. The connector cannot be reset from the UI.
- App restart does not clear state. Quitting and relaunching the Claude desktop app does not reset the connector — the stale "Disconnect" UI persists.
Net result: no path to use GitHub from inside Cowork. Other engineering plugin connectors that support DCR (Linear, Slack, Notion, Atlassian) authenticate normally — this is GitHub-specific.
What Should Happen?
- The GitHub connector should either authenticate successfully or surface a usable manual-auth fallback inside Cowork (accept a personal access token, or a client ID/secret pair).
- The Customize → Connectors UI should reflect actual connection state — show Connect (not Disconnect) when auth has never completed.
- The Disconnect button should work and reset the connector to a clean state.
- The error message should reference a path that exists in Cowork, not
/mcp(which is Claude Code only).
Error Messages/Logs
SDK auth failed: Incompatible auth server: does not support dynamic client registration. Ask the user to run /mcp and authenticate manually.
Steps to Reproduce
- Open the Claude desktop app and switch to Cowork mode.
- Open Customize → Connectors. Locate the Engineering plugin's GitHub connector.
- In chat, ask Claude to do anything requiring GitHub (e.g., "show me recent commits on my repo").
- Observe the OAuth handshake fail with:
SDK auth failed: Incompatible auth server: does not support dynamic client registration. Ask the user to run /mcp and authenticate manually. - Return to Customize → Connectors. Note that GitHub shows a Disconnect button (implying connected), even though no tools loaded.
- Click Disconnect. Nothing happens — no state change, no error, no feedback.
- Quit and relaunch the Claude desktop app. The stale "Disconnect" state persists.
Note: /mcp (suggested by the error) is a Claude Code feature, not available in Cowork.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
N/A — Claude desktop app (Cowork mode), not Claude Code CLI. Nathan to fill in actual app version.
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Note on repo choice: This is a Cowork bug, not a Claude Code CLI bug. Filing here because existing Cowork bug reports (e.g. #29848, #50360, #49276) have been filed in this repo and triaged. Several required form fields (Claude Code Version, Terminal/Shell) don't really apply to Cowork — answered as best as possible.
Other engineering plugin connectors that authenticate fine (and use DCR): Linear, Slack, Notion, Atlassian — confirming the issue is GitHub-MCP-specific, not a Cowork-wide auth problem.
Suggested fixes (ordered by impact):
- Add a manual OAuth path in Cowork for MCP servers that don't support Dynamic Client Registration — accept a personal access token, or a client ID/secret pair, via the connector UI.
- Fix the Disconnect button in Customize → Connectors so the connector can be reset to a clean state.
- Show Connect (not Disconnect) for connectors that have never completed auth, so the UI reflects actual state.
- Update the SDK error message — the
/mcphint is not valid in Cowork (it's a Claude Code-only command). Point Cowork users to a Cowork-specific path.
Showing cached comments. Read the full discussion on GitHub ↗
5 Comments
Running into this too. First time trying Cowork and it suggested installing plugin:engineering:github, but it can't authenticate: the authenticate tool fails with the error in this issue, and reconnecting from the Connectors UI does nothing (lands on a claude.ai page, reports connected, never redirects to GitHub).
I already have a working standalone github MCP server in my Claude Code CLI (claude mcp list shows it connected, 43 tools, at https://api.githubcopilot.com/mcp) but Cowork can't use it, the Cowork session only loads plugin:engineering:github and ignores the CLI-scope server, even though both point at the same endpoint. So there are two GitHub registrations that don't talk to each other, and the only one Cowork loads is the one that can't auth.
Inspecting the engineering plugin's .mcp.json, the github entry has no oauth.clientId (unlike the slack entry, which does) — so it falls back to DCR, which GitHub's MCP server rejects. Adding a pre-registered clientId to that entry like slack has would likely fix it.
Env: Claude desktop app (Cowork mode), macOS. Same account works fine for GitHub in Claude Code CLI and claude.ai web.
I am also hitting the same issue running claude on a Mac and using the desktop app
Confirming this is still broken as of today (2026-07-10, macOS desktop app). Tested the disconnect/reconnect workaround on two connectors from Settings → Connectors.
Tavily: disconnect then reconnect fixed it cleanly — tools loaded, list_connectors shows it.
GitHub Integration: same disconnect then reconnect sequence, but no change — Settings still shows a checkmark next to "GitHub Integration," yet the connector never appears in the session's list_connectors output and no GitHub tools load. Confirms the reconnect flow itself works fine in Cowork; GitHub's connector specifically doesn't recover from it, consistent with the missing oauth.clientId root cause flagged above.
Happy to provide app version / logs if useful.
Confirming this is still broken today (2026-07-10, macOS desktop app). Went further down the troubleshooting path than most of the comments here: created a fine-grained PAT scoped to the target org with Pull requests and Issues read/write, no manual way to enter it in Cowork. Then checked whether it was actually an org-install problem: installed the "Claude" GitHub App directly on the org with the correct read/write scopes and repos selected, saved it, then disconnected/reconnected the GitHub connector in Cowork settings (twice, with a full app relaunch in between).
Still getting Permission Denied: Resource not accessible by personal access token on every write call (create_pull_request_review, update_issue), even though the org-side permissions are provably correct now. Reads work fine the whole time.
This lines up with what's already flagged above: no oauth.clientId on the github entry means it's falling back to DCR, and no amount of reconnecting or org-level app config fixes that from the user side. Would be great to get the pre-registered clientId fix in, this one blocks any PR review or issue-labeling workflow in Cowork entirely.
Adding a data point that lines up with the DCR/
registration_endpointroot cause identified above.On the Claude desktop app (macOS), I found the identical failure signature in the local renderer log (
~/Library/Logs/Claude/claude.ai-web.log):(That specific log line was for a different connector on my account, not GitHub -- but it's the exact same start-auth failure mode, on the same account, which supports this being a general DCR/registration-endpoint issue rather than something isolated to GitHub's MCP server.)
Independently confirming the rest of this issue's symptoms as of today (2026-07-30, macOS desktop app):
• Settings > Plugins > Engineering > Connectors > GitHub shows "Disconnect" (implying connected).
• Clicking Disconnect does nothing -- no confirmation, no error, and no network request fires at all (checked the local log immediately after clicking -- nothing was recorded for that click).
• No GitHub MCP tools are reachable in a session despite the "connected" state shown.
• This is independent of local
ghCLI auth -- I separately verifiedghis fully authenticated on this machine (native hosts.yml + keychain populated,gh auth statussucceeds), which made no difference to the connector's state. Rules out local-machine GitHub auth as a factor.Still reproducing today, so this remains open/unresolved.