Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
In Cursor v3.2.18, the preToolUse hook drops line range parameters (offset and limit) from the payload when the agent uses the ReadFile tool. The hook receives only the path, while all range-related fields (offset, limit, start_line, end_line, etc.) are passed as null. This prevents custom hooks from intercepting targeted file reads correctly, forcing them to treat every request as a full-file read.
Steps to Reproduce
Configure a preToolUse command hook in Cursor settings.
Open the Agent and prompt it to read a specific line range of a file (e.g., “Read lines 880 to 890 of file.ts”).
The Agent successfully calls the tool with arguments like: ReadFile({ path: “/path/to/file.ts”, offset: 880, limit: 11 }).
Check the raw payload passed to the preToolUse hook script.
Observe that the payload stripped the data and sent “offset”: null and “limit”: null.
Expected Behavior
The preToolUse hook payload should preserve and include the exact offset and limit (or startLine/endLine) parameters that the Agent generated for the tool call.
Operating System
MacOS
Version Information
3.2.18
Additional Information
This payload stripping issue appears heavily related to another major bug where the postToolUse hook runs asynchronously and discards injected context (Forum thread: Native postToolUse hooks accept and log additional_context successfully, but the injected context is not surfaced to the model - #11 by Andy_Lockey). It seems the entire serialization/data pipeline between the Agent, Tools, and the Hook runner is currently losing data in v3.2.18.
Does this stop you from using Cursor
Yes - Cursor is unusable