{"name":"tool.check","slug":"tool-check","family":"setting","title":"Settings keys","noun":"settings key","description":"Plugin hooks can now react to tool-call dry-runs, config changes, and session attach\/detach events.","description_source":"entry","described_by":{"version":"2.1.269","anchor":"plugin-hooks-engine-gains-new-event-types-toolcheck-confi"},"presence":{"first_seen":null,"removed_in":null,"in_current_build":false,"newest_mined":"2.1.319","builds":0,"mined_builds":159,"first_cited":{"version":"2.1.269","released_at":"2026-09-11 18:12:49","spans":4}},"aliases":[],"entries":[{"version":"2.1.309","anchor":"claude-test-plugin-gains-toolcall-and-many-more-host-calls","heading":"Built-in Claude Test plugin can do more, with tighter rules for its explorer","line":"The bundled Claude Test plugin now handles the tool.call hook and more host calls, and its explorer is told to stay away from credential files","released_at":"2026-10-22 20:34:13","reason":"found in this entry's text"},{"version":"2.1.307","anchor":"toolcheck-plugin-hook-denial-from-a-plugin-can-fall-back-t","heading":"A plugin's tool block can now turn into a permission prompt","line":"When a plugin's tool.check blocks an unprotected tool that would otherwise have needed approval, you now get a prompt with the plugin's reason","released_at":"2026-10-21 20:47:18","reason":"named in this entry, found in this entry's text"},{"version":"2.1.307","anchor":"permission-engine-toolcheck-handlers","heading":"Hook decisions on tool use now go through a central permission check","line":"Allow, ask and deny decisions from PreToolUse and PermissionRequest hooks now pass through a central permission check that handlers can answer","released_at":"2026-10-21 20:47:18","reason":"named in this entry, found in this entry's text"},{"version":"2.1.301","anchor":"hook-decision-reasons-gain-hook-event-source-and-plugin-id","heading":"Permission decisions made by hooks now record which hook made them","line":"When a hook allows or blocks a tool, Claude Code now records the hook's event, where the hook came from and, for plugins, the plugin's ID","released_at":"2026-10-15 14:34:23","reason":"found in this entry's text"},{"version":"2.1.299","anchor":"plugin-runtime-mods-gain-uilog-envget-envset","heading":"Plugins gain entries for logging and environment variables","line":"The plugin runtime's list next to tool.register and tool.list now also includes ui.log, env.get and env.set","released_at":"2026-10-14 00:23:19","reason":"found in this entry's text"},{"version":"2.1.299","anchor":"hook-default-responses-become-functions-with-reason","heading":"Plugin hook denials now carry a reason","line":"Default deny responses for plugin hooks such as tool.check and agent.spawn now include a reason alongside the decision","released_at":"2026-10-14 00:23:19","reason":"found in this entry's text, named in this entry"},{"version":"2.1.292","anchor":"tool-check-hooks-can-no-longer-override-tools-that-require-t","heading":"Plugin checks can no longer approve tools that need your input","line":"When a tool needs you to interact with it, Claude Code's own permission decision now overrides a plugin's `tool.check` hook","released_at":"2026-10-06 17:10:31","reason":"found in this entry's text, named in this entry"},{"version":"2.1.292","anchor":"plugin-toolcheck-and-uiscroll-wait-on-pending-work-first","heading":"Plugin tool.check and ui.scroll hooks now wait for pending work","line":"The tool.check and ui.scroll plugin hooks now wait for pending work to finish before running","released_at":"2026-10-06 17:10:31","reason":"found in this entry's text, named in this entry"},{"version":"2.1.289","anchor":"permission-decisions-can-now-carry-a-hook-attribution","heading":"Permission decisions can now record which hook made them","line":"Records of permission decisions can now name the hook that decided, and rules are found inside nested parts of compound commands","released_at":"2026-10-03 20:12:02","reason":"found in this entry's text"},{"version":"2.1.289","anchor":"toolcheck-plugin-hook-can-be-floored-for-pretooluse-asks","heading":"Plugin tool.check hooks get an extra input when a PreToolUse hook asks for permission","line":"When a PreToolUse hook has asked for permission, plugin tool checks are now built with that hook's ask passed in as an extra input","released_at":"2026-10-03 20:12:02","reason":"named in this entry, found in this entry's text"}],"entries_total":17,"docs":[{"source":"claude-code","path":"changelog","title":"Claude Code changelog","documented":false},{"source":"claude-code","path":"permission-modes","title":"Choose a permission mode","documented":false},{"source":"claude-code","path":"permissions","title":"Configure permissions","documented":false},{"source":"claude-code","path":"plugins\/mods\/admin","title":"Manage mods for your organization","documented":false},{"source":"claude-code","path":"plugins\/mods\/events","title":"React to events with a mod","documented":false},{"source":"claude-code","path":"plugins\/mods\/reference","title":"Mods reference","documented":false},{"source":"claude-code","path":"plugins\/mods\/troubleshoot","title":"Troubleshoot a mod","documented":false}],"docs_total":7,"gates":[],"related":[{"name":"tool.call","slug":"tool-call","description":"Tools a plugin registers reach the model through a local loopback MCP server."},{"name":"tool.output","slug":"tool-output","description":"A tool.output telemetry event can carry file contents, diffs and bash commands after a successful tool call, behind a gate."},{"name":"toolAliases","slug":"toolaliases","description":"The internal per-session context object gained many new fields covering effort, hooks, tools, and skills"},{"name":"toolCalls","slug":"toolcalls","description":null},{"name":"toolCount","slug":"toolcount","description":"When an `mcp_status` live reply would be too large, it now sends a count of each server's tools instead of the full list"},{"name":"toolPermissionContext","slug":"toolpermissioncontext","description":"The auto-mode suggestion dialog now just dismisses itself instead of switching your session to auto."},{"name":"toolPolicy","slug":"toolpolicy","description":"Legacy managed MCP server config fields now have a formal deprecation and rewrite system."},{"name":"toolResultCopiesOnDisk","slug":"toolresultcopiesondisk","description":"A slim mode can blank file contents and command output in the copies of tool results Claude Code saves to disk"},{"name":"toolResultRemedy","slug":"toolresultremedy","description":"Tool results can now carry an internal 'remedy' value passed through to the assistant-visible message"},{"name":"toolRules","slug":"toolrules","description":"Permission tool rules can now be redacted properly when exporting config."}],"url":"https:\/\/changelogs.core-directive.com\/reference\/setting\/tool-check","family_url":"https:\/\/changelogs.core-directive.com\/reference\/setting.json"}