[BUG] Cowork — GitHub connector unusable: OAuth DCR unsupported, UI shows misleading state, Disconnect button dead

Status Open
Maintainer reply None cached
Activity 8 comments · opened May 17, 2026

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:

  1. OAuth fails immediately. When Claude invokes the connector's authenticate tool, 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.

  1. 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.
  1. 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.
  1. Disconnect button is unresponsive. Clicking it produces no state change, no error, no feedback. The connector cannot be reset from the UI.
  1. 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

  1. Open the Claude desktop app and switch to Cowork mode.
  2. Open Customize → Connectors. Locate the Engineering plugin's GitHub connector.
  3. In chat, ask Claude to do anything requiring GitHub (e.g., "show me recent commits on my repo").
  4. 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.
  5. Return to Customize → Connectors. Note that GitHub shows a Disconnect button (implying connected), even though no tools loaded.
  6. Click Disconnect. Nothing happens — no state change, no error, no feedback.
  7. 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):

  1. 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.
  2. Fix the Disconnect button in Customize → Connectors so the connector can be reset to a clean state.
  3. Show Connect (not Disconnect) for connectors that have never completed auth, so the UI reflects actual state.
  4. Update the SDK error message — the /mcp hint is not valid in Cowork (it's a Claude Code-only command). Point Cowork users to a Cowork-specific path.

View original on GitHub ↗

5 Comments

coffee-the-dev · 2 months ago

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.

justinmcpeake · 1 month ago

I am also hitting the same issue running claude on a Mac and using the desktop app

justinmcpeake · 1 month ago

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.

miketullo95 · 1 month ago

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.

soulhakr · 1 month ago

Adding a data point that lines up with the DCR/registration_endpoint root 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):

GET .../mcp/start-auth/{connector-id}?...&mcp_auth_source=settings_connect...
error: "Failed to start MCP authorization"
error_code: "registration_endpoint_missing"

(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 gh CLI auth -- I separately verified gh is fully authenticated on this machine (native hosts.yml + keychain populated, gh auth status succeeds), 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.

Showing cached comments. Read the full discussion on GitHub ↗