{"version":"2.1.221","anchor":"mcp-task-restore-dials-lazily-cached-servers-instead-of-givi","canonical_anchor":"mcp-task-restore-dials-lazily-cached-servers-instead-of-givi","heading":"MCP task restore dials lazily-cached servers instead of giving up","tier":"notice","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/mcp-task-restore-dials-lazily-cached-servers-instead-of-givi","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### MCP task restore dials lazily-cached servers instead of giving up\n\nResuming a long-running MCP task after a restart now reconnects cached servers instead of failing.\n\n**What**\n\nResuming a long-running MCP task after a restart now connects a server that is in the \"cached\" state on demand, rather than treating it as unavailable.\n\n**Details**\n\n- the dial happens within the remaining restore budget, with distinct failure reasons when no session factory is wired and when the dial itself fails\n- restore also detects a server that reconnected on a modern-era protocol revision, which carries no tasks support, and reports the task as unresumable instead of hanging in the poll loop\n- the \"cached\" state comes from the new MCP discovery cache, gated on `tengu_mcp_discovery_cache` with an in-source fallback of true\n\n**Evidence**\n\n`server '${e.serverName}' has no MCP session wired`\n\n- Flag `tengu_mcp_discovery_cache`: Not enough to say (read for one account on one subscription tier against v2.1.221; this account: no value returned, anonymous baseline: no value returned, compiled default: on) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Area: MCP\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 0\/5"}