{"version":"2.1.221","anchor":"mcp-tool-hooks-require-a-live-mcp-session-and-refuse-cleanly","canonical_anchor":"mcp-tool-hooks-require-a-live-mcp-session-and-refuse-cleanly","heading":"mcp_tool hooks require a live MCP session and refuse cleanly","tier":"notice","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/mcp-tool-hooks-require-a-live-mcp-session-and-refuse-cleanly","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### mcp_tool hooks require a live MCP session and refuse cleanly\n\nMCP tool hooks now fail fast with a warning instead of hanging when no session exists.\n\n**What**\n\nThe mcp_tool hook path validates its preconditions before calling instead of attempting a call that cannot succeed.\n\n**Details**\n\n- Checks both that the named server is connected or cached and that an MCP session is wired.\n- On failure it returns a structured result with a warning log rather than throwing or hanging.\n- Calls go through the session-level caller with a timeout capped at the MCP timeout and a \"mcp_tool hook\" context label.\n\n**Evidence**\n\n`Hooks: mcp_tool hook skipped`\n\n- Area: MCP\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 0\/5"}