Desktop app (Code tab): failed claude.ai connector fetch cached indefinitely — connector silently missing from all sessions until manually toggled

Status Fixed / completed
Reported on v2.1.215
Maintainer reply None cached
Activity 0 comments · opened Jul 20, 2026 · closed Jul 21, 2026

Environment

  • Claude Code: 2.1.215
  • Claude desktop app: 1.20186.9 (macOS, Darwin 25.5.0)
  • Session type: Code tab in the desktop app (local agent mode)

Summary

When the desktop app's fetch of a claude.ai connector's tool list fails once, the failure is cached indefinitely. Every Claude Code session spawned afterward silently omits that connector — no error, no "needs authentication" entry, the connector is simply absent from the session's MCP server list — while the same connector keeps working from terminal CLI sessions and claude.ai chat on the same account. The stale state persists across new sessions and days until the user manually toggles the connector off/on in the "Connected MCP servers list" UI, which forces a refetch and immediately hot-injects the connector into running sessions.

In my case the affected connector was Atlassian; 10 other connectors (Slack, Figma, Google Drive, etc.) loaded normally the whole time.

Evidence

Desktop-spawned sessions consistently received 10 remote servers (Atlassian missing) for the entire app run:

2026-07-20 11:45:45 [info] [CCD] LocalSessions.replaceRemoteMcpServers: sessionId=local_<id>, serverCount=10
2026-07-20 11:50:43 [info] [CCD] [replaceRemoteMcpServers] Calling SDK with 19 total servers

Zero serverCount=11 calls appear in main.log from app start (2026-07-19 16:45) until the manual toggle. Each session's persisted remoteMcpServersConfig (under Application Support/Claude/claude-code-sessions/...) confirms 10 connectors, Atlassian absent — even though the same session's enabledMcpTools map still contains the Atlassian connection's per-tool toggle entries, so the app clearly knows the connector exists.

The connector itself was healthy: a plain terminal claude session (same machine, same account, same CLI version, running concurrently) had the Atlassian connector attached as mcp__claude_ai_Atlassian__* and tool calls succeeded, minutes apart from desktop sessions that lacked it.

Manual toggle instantly fixed it, including for already-running sessions:

2026-07-20 11:55:05 [info] [CCD] LocalSessions.replaceRemoteMcpServers: sessionId=local_<id>, serverCount=11
2026-07-20 11:55:41 [info] [CCD] LocalSessions.replaceRemoteMcpServers: sessionId=local_<earlier session>, serverCount=11

The running session received the connector's 40 tools via deferred-tool injection without a restart.

History shows the state flips only across webview reloads/app restarts: session state files from the preceding week show the Atlassian connector present/absent in blocks (present 07-16 morning, absent 07-16 midday, present 07-16 afternoon, absent continuously 07-19 evening through 07-20 midday), consistent with a cached one-shot fetch per webview lifecycle rather than a per-session fetch.

Expected behavior

  • A failed connector fetch should be retried (at minimum on each new session spawn), not cached indefinitely.
  • If a connector fails to attach, the session should surface it (like the existing "needs authentication" listing at SessionStart) instead of silently omitting it.

Suspected root cause

The Code tab webview fetches the account connector list + tool schemas once and caches it (Local Storage contains a react-query cache keyed by connection UUID with isConnected/expiration fields). A connector whose fetch fails at that moment — plausibly an OAuth race, since the Atlassian remote MCP uses short-lived access tokens and the two other permanently-omitted connectors were ones in a needs-reauth state — is dropped from the snapshot and never retried.

Likely related:

  • #58015 (desktop mishandles OAuth-protected connectors that 401 on first connect — UUID fallback naming)
  • #77598 (connector naming differs by entrypoint: claude_ai_<name> in CLI vs connection UUID in desktop)

Workaround

Toggle the affected connector off/on in the Code tab's "Connected MCP servers list". This forces a refetch and repairs both new and running sessions within seconds. Reconnecting the connector at claude.ai settings or restarting sessions does not help; a full app restart only helps if the fetch happens to succeed that time.

View original on GitHub ↗