input_modification
Whether hooks can modify tool input arguments before the tool executes. Safety-critical capability — silent degradation creates false security. Minimum qualification: supported when the provider provides any mechanism to modify tool input arguments before execution (e.g., hookSpecificOutput.updatedInput, plugin-mutable args, or equivalent).
Type: bool Content type: hooks
Provider Support
Section titled “Provider Support”| Provider | Supported | Mechanism |
|---|---|---|
| claude-code | ✓ | hook_input_modification: PreToolUse returns updatedInput in hookSpecificOutput; entire input object replaced; compatible with all permissionDecision values except defer |
| cline | ✓ | context_modification_output: Cline PreToolUse hooks can return modified context/input before tool execution |
| codex | ✓ | hook_updated_input: Codex PreToolUse hooks return modified input arguments that replace the original tool input |
| factory-droid | ✓ | PreToolUse hooks return updatedInput in JSON output to modify tool parameters before execution |
| pi | ✓ | tool_call handlers mutate event.input in place to modify tool arguments before execution; later handlers see prior mutations |
| amp | ✗ | Amp hooks cannot modify tool input before execution; only substring match and cancel-with-message are documented |
| copilot-cli | ✗ | Copilot CLI hooks cannot modify tool input before execution |
| crush | ✗ | Hooks receive tool context on stdin and can return context to the agent, but modifying tool input parameters is not documented. |
| cursor | ✗ | Cursor hooks are not documented to rewrite tool input before execution. |
| gemini-cli | ✗ | Gemini CLI hooks cannot modify tool input before execution |
| kiro | ✗ | Kiro hooks cannot modify tool input before execution |
| opencode | ✗ | not documented |
| roo-code | ✗ | not documented |
| windsurf | ✗ | Windsurf hooks cannot modify tool input arguments before execution |
| zed | ✗ | not documented |