{"version":"2.1.242","anchor":"hooks-are-held-rather-than-run-for-tool-calls-served-to-a-cl","canonical_anchor":"hooks-are-held-rather-than-run-for-tool-calls-served-to-a-cl","heading":"Hooks are held rather than run for tool calls served to a cloud session","tier":"notice","area":"Hooks","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.242\/e\/hooks-are-held-rather-than-run-for-tool-calls-served-to-a-cl","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.242","markdown":"### Hooks are held rather than run for tool calls served to a cloud session\n\nHooks for tool calls served to a cloud session can be held instead of run, turning the call into an ask.\n\n**What**\n\nWhen your machine runs a tool call on behalf of a cloud session, command, HTTP and MCP-tool hooks are no longer executed blindly. Each is checked for reachability first and can be held, with reasons such as `model_hook`, `project_configured`, `in_reach` and `unreadable`. A held PreToolUse hook turns the call into a permission `ask`; other events get a system message instead. This only applies to calls served for a cloud session, not to ordinary local hook runs.\n\n**Details**\n\n- A PreToolUse hook that errors or is cancelled on a served call now blocks the call instead of being skipped.\n- A hook returning `permissionDecision=defer` on a served call is converted to a deny with an explicit message and a warning, because there is no resume path for served calls.\n- Every hold is counted through `tengu_remote_tool_serve_hook_held`, and non-blocking events are marked `heldForServedCall: true`.\n\n**Evidence**\n\n`tengu_remote_tool_serve_hook_held`, `deferral is not supported for calls served to a cloud session, so nothing ran.`\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 4\/5"}