SSE MCP OAuth tokens not persisted between sessions — requires manual re-auth on every restart
Resolved 💬 3 comments Opened Mar 29, 2026 by tejasgadhia Closed Apr 2, 2026
Summary
Every time Claude Code is fully quit and reopened, SSE-type MCPs that use OAuth authentication require manual re-authentication via /mcp. The session token is not persisted or refreshed between sessions.
Steps to Reproduce
- Configure one or more SSE-type MCPs with OAuth auth (e.g. Zoho Max MCPs —
zoho-max-cliq,zoho-max-mail, etc.) - Authenticate successfully via
/mcpdialog - Use the MCPs — they work fine within the session
- Fully quit Claude Code (
Cmd+Q) - Reopen Claude Code and start a new session
- MCPs immediately show as "needs authentication" — tools are unavailable
Expected Behavior
OAuth tokens should be persisted to disk and refreshed automatically on session start, just like browser OAuth sessions. The user should not need to manually re-auth on every restart.
Actual Behavior
Every new Claude Code session requires manual re-auth for SSE MCPs. After re-auth via /mcp, Claude Code shows:
"Authentication successful, but server reconnection failed. You may need to manually restart Claude Code for the changes to take effect."
A full quit+reopen after re-auth does restore functionality — but this is a painful two-step on every session start.
Additional Context
- Stdio MCPs do not have this problem — their process lifecycle is tied to the session and they don't need OAuth re-auth
- SSE MCPs reconnect on every session start and need a live OAuth token — but tokens are not being refreshed/persisted
- Regenerating MCP URLs is not an acceptable workaround — it breaks connections in other clients (e.g. Codex) that share the same endpoint
Environment
- macOS
- MCP transport:
sse - Auth method: OAuth (Zoho Max AI MCPs)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗