beforeTabFileRead hook is extremely slow on Windows and events get queued up (works fine on macOS)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Hi, I’m using the Cursor hooks feature, and I’m seeing a severe performance issue specifically with the beforeTabFileRead event on Windows.

What the hook does
beforeTabFileRead fires whenever:

  • the cursor position changes inside a file, or
  • autocomplete is triggered.

Issue
On macOS, the hook callback takes around 0.5 seconds, which is slow but still usable.

However, on Windows the situation is much worse:

  • A single beforeTabFileRead call often takes 1 second or more.
  • When I move the cursor multiple times or trigger autocomplete repeatedly, the events seem to stack up in a queue.
  • Eventually, the delay becomes so long that it looks like the hook is not being called at all.
  • As a result, autocomplete appears completely broken because the queued events keep piling up and never catch up.

This leads to a bad feedback loop:
Autocomplete doesn’t appear
→ User keeps moving cursor
→ More hook events get queued
→ Everything slows down even further.

Steps to Reproduce

hooks.json

{
  "version": 1,
  "hooks": {
    "beforeTabFileRead": [
      {
        "command": "cmd /c echo '{\"actions\":[]}'"
      }
    ]
  }
}

trigger auto complete

Screenshots / Screen Recordings

Operating System

Windows 10/11

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.2.43 (system setup)
VSCode Version: 1.105.1
Commit: 32cfbe848b35d9eb320980195985450f244b3030
Date: 2025-12-19T06:06:44.644Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Windows_NT x64 10.0.19045

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the report. We can reproduce this, and it’s related to Windows process startup overhead.

beforeTabFileRead fires very frequently (on every cursor move plus autocomplete), and even a minimal hook like cmd /c echo '{"actions":[]}' takes 1+ second on Windows vs ~0.5 seconds on macOS. Events pile up in the queue faster than they can be processed.

The team is already working on improving hook performance on Windows.

Workaround: if beforeTabFileRead isn’t critical for your workflow, I’d recommend temporarily disabling it in hooks.json and keeping only the Agent hooks (like beforeShellExecution, afterFileEdit, etc.), since those run less often.