Plugin HTTP/OAuth MCP (e.g. Linear) with a valid stored token does not connect on session cold-start — only /reload-plugins (no re-auth) brings it up
Summary
A plugin-provided HTTP/OAuth MCP server with a valid, already-persisted OAuth token is not connected on a fresh session cold start — it is simply absent from /mcp (not even listed as failed). Running /reload-plugins connects it immediately, using the stored token, with no browser/re-auth. So the credentials are valid and reusable; the cold-start auto-connect for type: "http" OAuth MCPs just never (successfully) happens.
Concrete case: the official Linear plugin linear@claude-plugins-official, whose .mcp.json is:
{ "type": "http", "url": "https://mcp.linear.app/mcp" }
This is distinct from existing (closed) issues:
- #10250 / #56208 — post-OAuth same-session reconnect failure (there, a restart loads the token fine; here, the restart/cold-start is exactly what fails).
- #40582 — tokens not persisted / require re-auth (here the token is persisted and no re-auth is needed).
The gap here is purely cold-start auto-connect of HTTP/OAuth MCP servers when a valid token already exists on disk.
Repro
- Enable the official Linear plugin (
linear@claude-plugins-official) and authenticate once via/mcp→ linear → Authenticate. The OAuth token is written to<config>/.credentials.json(entry formcp.linear.app). - Fully quit and start a new Claude Code session.
- Run
/mcp. → Only non-type:http-OAuth servers appear. In our setup:plugin:playwright:playwright(stdio) andplugin:sentry:sentry(viamcp-remote) both show connected. Linear is absent entirely — not listed as connected, reconnecting, or failed. - Run
/reload-plugins. → Linear connects instantly, no browser, no re-auth, tools available.
Expected
On cold start, a plugin HTTP/OAuth MCP with a valid stored token should auto-connect (or at minimum appear in /mcp as reconnecting/failed) the same way mcp-remote-based OAuth servers do — without requiring a manual /reload-plugins.
Notes / contrast
mcp-remote-based OAuth servers (e.g. Sentry:npx -y mcp-remote@latest https://mcp.sentry.dev/mcp, token cached in~/.mcp-auth) do reconnect reliably on cold start. The built-intype: "http"OAuth path does not.- This forces a manual
/reload-pluginson every new terminal. It's especially painful when launching many terminals at once — we run 6–12 Claude Code terminals in parallel for a multi-agent / orchestrator workflow, and each one starts with Linear missing until reloaded. Current workaround: auto-send/reload-pluginsas the initial prompt of every terminal (claude '/reload-plugins').
Environment
- Claude Code v2.1.191, Opus 4.8 (1M context)
- Windows 11
- Custom config dir via
CLAUDE_CONFIG_DIR; credentials at<config>/.credentials.json - Affected server:
linear@claude-plugins-official—type: "http",https://mcp.linear.app/mcp - Unaffected (for contrast):
sentryviamcp-remote(reconnects on cold start),playwright(stdio, no auth)