[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.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗