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

1 Like

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.

1 Like