{"version":"2.1.236","anchor":"deny-rules-match-batched-tools-by-the-original-tool-name","canonical_anchor":"deny-rules-match-batched-tools-by-the-original-tool-name","heading":"Deny rules match batched tools by the original tool name","tier":"use","area":"Permissions","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.236\/e\/deny-rules-match-batched-tools-by-the-original-tool-name","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.236","markdown":"### Deny rules match batched tools by the original tool name\n\nA disallowedTools rule now also blocks the batched wrapper around that tool.\n\n**What**\n\nA `disallowedTools` entry naming a tool now also blocks the batched wrapper around that tool. Previously a rule written against the original name did not stop the wrapped form.\n\n**Details**\n\n- Wrapper tools carry the name of the tool they wrap, and the permission check treats a match on that name as a match on the wrapper.\n- The same lookup is applied to the plan-mode and read-only tool sets, so a wrapper cannot be used to run something those modes exclude.\n- Applies whenever a batching tool is present; there is no flag.\n\n**Evidence**\n\n`if (a.underlyingV1ToolName !== void 0 && t.has(a.underlyingV1ToolName))`, `if (n.underlyingV1ToolName && w0(t, { name: n.underlyingV1ToolName }, r))`\n\n- Area: Permissions\n- Names: `disallowedTools`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 3\/5"}