{"version":"2.1.304","anchor":"hook-matchers-and-mcp-tool-hooks-cli-owned-mcp-tool-handlin","canonical_anchor":"hook-matchers-and-mcp-tool-hooks-cli-owned-mcp-tool-handlin","heading":"Hooks that call MCP tools can be refused by the server's settings","tier":"notice","area":"Hooks","scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304\/e\/hook-matchers-and-mcp-tool-hooks-cli-owned-mcp-tool-handlin","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.304","markdown":"### Hooks that call MCP tools can be refused by the server's settings\n\nAn `mcp_tool` hook can now be refused because of its MCP server's configuration, and hook matching treats Claude Code's own MCP tools like built-in ones\n\n**Unclear.** It is not clear which server settings cause an `mcp_tool` hook to be refused.\n\n**What**\n\nAn `mcp_tool` hook is a hook (an action set to run automatically at certain points) that calls a tool on an MCP server. Claude Code used to refuse such a hook only for the account memory server. It now also checks any server's configuration for a refusal, both before and after connecting to it. A refused call is reported as withheld.\n\nHook matchers, the patterns that decide which tools a hook applies to, now treat MCP tools that belong to Claude Code itself the same way as built-in tools, including matching them by their group name. If the same hook would be triggered twice through that group routing, it now runs only once.\n\n**Why**\n\nThis changes which hooks fire for MCP tools, so a hook that targets one of these tools may now run, run once instead of twice, or be refused.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 3\/5\n- Scope: both\n- Heads-up: yes"}