What happened
The claude.ai cloud MCP connectors (mcp__claude_ai_Gmail__*, mcp__claude_ai_Google_Calendar__*, mcp__claude_ai_Google_Drive__*, mcp__claude_ai_Notion__*, etc.) share a single global OAuth credential across all running Claude Code sessions. Because these connectors use rotating (single-use) refresh tokens, a /login or automatic token refresh in one session rewrites the shared credential on disk and invalidates the token that other live sessions are still holding. The other sessions then lose all cloud connectors.
Net effect: only the most recently /login-ed session has working connectors at any time. Concurrent sessions cannot each keep the connectors alive — authenticating in one knocks them down in the others. There is no per-session credential isolation.
Steps to reproduce
- Session A (already open): cloud connectors are down.
- Open Session B (fresh) → run
/login → connectors appear and work in B.
- Go back to Session A →
/mcp shows connectors still down → run /login in A → connectors come up in A.
- Go back to Session B → connectors are now down.
So authenticating in one session brings its own connectors up but knocks them down in the session that was previously authenticated. They cannot coexist across concurrent sessions.
Expected behavior
Multiple concurrent Claude Code sessions should each maintain working cloud connectors. A /login or token refresh in one session should not tear down connectors in the others — e.g. via per-session credential handles, or a shared refresh coordinator that re-broadcasts the rotated token to all live sessions.
Additional notes
Environment
- Claude Code: 2.1.207 (native install,
~/.local/)
- macOS 26.5.1 (build 25F80)
- Auth: claude.ai subscription (
/login)
- Connectors affected: Gmail, Google Calendar, Google Drive, Notion, ms365, Gamma
What happened
The claude.ai cloud MCP connectors (
mcp__claude_ai_Gmail__*,mcp__claude_ai_Google_Calendar__*,mcp__claude_ai_Google_Drive__*,mcp__claude_ai_Notion__*, etc.) share a single global OAuth credential across all running Claude Code sessions. Because these connectors use rotating (single-use) refresh tokens, a/loginor automatic token refresh in one session rewrites the shared credential on disk and invalidates the token that other live sessions are still holding. The other sessions then lose all cloud connectors.Net effect: only the most recently
/login-ed session has working connectors at any time. Concurrent sessions cannot each keep the connectors alive — authenticating in one knocks them down in the others. There is no per-session credential isolation.Steps to reproduce
/login→ connectors appear and work in B./mcpshows connectors still down → run/loginin A → connectors come up in A.So authenticating in one session brings its own connectors up but knocks them down in the session that was previously authenticated. They cannot coexist across concurrent sessions.
Expected behavior
Multiple concurrent Claude Code sessions should each maintain working cloud connectors. A
/loginor token refresh in one session should not tear down connectors in the others — e.g. via per-session credential handles, or a shared refresh coordinator that re-broadcasts the rotated token to all live sessions.Additional notes
/mcp reconnect <name>does not work for these connectors (they aren't user-configured servers) — it returnsMCP server '<name>' not found. Only the no-arg/mcpmenu can re-auth them.claude mcp listeven after disconnected in the Claude.ai web UI #48275 (stale connectors inclaude mcp list), [BUG] Disconnected cloud MCP connectors (e.g. Atlassian) still trigger browser OAuth prompt on every session start #31618 (OAuth prompt on every session start).Environment
~/.local/)/login)