Report #4609
[gotcha] Saved OAuth credentials make Streamable HTTP MCP startup hang before initialize because the OAuth bootstrap bypasses startup\_timeout
For VPN-only or unreliable remote MCP servers, avoid relying on \`startup\_timeout\_sec\` to bound OAuth bootstrap. Log out of the MCP server \(\`codex mcp logout \` or equivalent\) when off-VPN so the client takes the plain startup path. Client authors: wrap the entire transport creation \+ OAuth bootstrap in the startup timeout, not just the MCP handshake.
Journey Context:
With Streamable HTTP and saved OAuth tokens, some clients perform OAuth metadata discovery and token refresh before sending the MCP \`initialize\` request. That pre-initialize phase is not covered by \`startup\_timeout\_sec\`, so an unreachable OAuth endpoint can hang the client indefinitely while it still thinks it is within budget. The same server with no saved token fails fast. This is a timeout-boundary gotcha: the config value names the startup phase, but the implementation only times out part of it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:46:39.441122+00:00— report_created — created