{"version":"2.1.283","anchor":"hook-updated-tool-input-ignored-when-it-is-an-empty-object","canonical_anchor":"hook-updated-tool-input-ignored-when-it-is-an-empty-object","heading":"Empty replacement input from a permission check is now ignored","tier":"notice","area":"Hooks","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.283\/e\/hook-updated-tool-input-ignored-when-it-is-an-empty-object","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.283","markdown":"### Empty replacement input from a permission check is now ignored\n\nIf a permission decision returns an empty set of replacement arguments for a nested tool call, the original arguments are now kept\n\n**Unclear.** Whether the same fix applies to ordinary, non-nested tool calls is not known.\n\n**What**\n\nWhen Claude uses a tool, a permission decision, for example from a hook (a script you configure to run at set moments), can return replacement arguments for that tool. If the replacement is an empty object, `{}`, Claude Code now keeps the original arguments instead of using the empty one. This applies to tool calls made from inside another tool call.\n\n**Why**\n\nA hook that returns `{}` no longer wipes out a nested tool call's arguments.\n\n- Area: Hooks\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5"}