Guides/Cursor using high CPU

Cursor using high CPU or draining your Mac’s battery? How to find the cause

Atta 🐬

Founder, Vitals

Published

Quick answer

Cursor is built like a browser, so Activity Monitor shows it as several processes: Cursor, Cursor Helper (Renderer) for each window, Cursor Helper (Plugin) for extensions, and Cursor Helper (GPU). High CPU nearly always comes from one of three places: an extension, indexing or file watching in a large project, or a tool the agent started and left running, such as a dev server or a linter. In Cursor, choose Help → Open Process Explorer to see which it is. Vitals, a system monitor for the Mac, shows Cursor as one app split into windows, extensions and graphics, and lists every process working in each project folder.

How to find what Cursor is doing

  1. 01 Open Activity Monitor, click CPU, and type Cursor in the search field. Note which row is busy: Cursor Helper (Plugin) is your extensions, Cursor Helper (Renderer) is a window, Cursor Helper (GPU) is drawing.
  2. 02 In Cursor, choose Help → Open Process Explorer. It lists Cursor’s own processes by name, with CPU and memory, so you can see whether it is the extension host, a window, the file watcher or a search.
  3. 03 If extensions are the cause, open the Command Palette (⇧⌘P) and run Help: Start Extension Bisect. Cursor turns extensions off in halves until it finds the one responsible.
  4. 04 Clear Activity Monitor’s search field and sort by % CPU again. Look for node, next-server, biome and similar tools near the top: these are not Cursor itself but things it or its agent started.
  5. 05 Quit Cursor completely with ⌘Q and watch for a minute. Anything from the last step that is still running was left behind; select it and click the stop button in Activity Monitor’s toolbar.

To rule extensions in or out in one go, quit Cursor and start it from Terminal with cursor --disable-extensions. If the Mac stays cool, an extension is the cause.

Cursor is a fork of Visual Studio Code, and both are Electron apps: a browser engine, a Node.js service that runs extensions, and a process per window. On top of that Cursor indexes your project so its AI can search it, and its agent runs commands in a terminal on your behalf. Each of these can keep the CPU busy, each shows up under a different name, and each has a different fix. The table matches the name you see to what it is.

What Cursor’s processes are

What you seeWhat it isWhat to do
Cursor Helper (Plugin) at high CPU The extension host: every extension runs in it Extension Bisect, or start with extensions disabled
Cursor Helper (Renderer) at high CPU One window, its editor and chat Close long chats and unused windows; reload the window
rg processes at high CPU Search and indexing reading the project’s files Exclude large folders from search and indexing
Cursor Helper (GPU) busy Drawing the interface Usually brief; update Cursor if it stays high
node, tsc, biome running hot A dev server, type checker or linter started from Cursor Stop it in Cursor’s terminal, or quit it in Activity Monitor

Extensions: the most common cause

Every extension runs inside one process, Cursor Helper (Plugin), so one busy extension makes the whole process look guilty. Linters, formatters and language servers that re-check a large project on every keystroke are the usual ones. Extension Bisect finds the one responsible in a few restarts, which is quicker than turning them off one at a time.

Extensions that came over from Visual Studio Code when you first set Cursor up are worth a look too: some overlap with what Cursor already does. Remove what you do not use; a disabled extension costs nothing.

Large projects: indexing and file watching

When you open a project, Cursor indexes it for its AI, and watches its files for changes. In a large repository, or one with big generated folders, that can keep several cores busy for a long time, and people on Cursor’s forum report rg search processes that never settle in very large projects.

Keep generated and vendored folders out of it. Add them to a .cursorignore file in the project’s root, and to files.watcherExclude and search.exclude in Settings. Build output, dependency folders and caches are the ones that matter. Then check Cursor Settings → Indexing & Docs to see whether indexing has finished.

What the agent leaves running

Cursor’s agent runs commands for you: a dev server to check its work, a type checker, a test watcher. When the task ends, or the chat is closed, those processes do not always stop. They are ordinary processes with no window, so nothing on screen says they are there, and a stuck linter or a dev server holding several gigabytes can run for days.

They are also why Cursor seems to drain the battery after you close it: Cursor has quit, and what it started has not. Check Activity Monitor after quitting, as in the steps above. A process whose parent has gone is called an orphan, and it is usually what people mean when they ask about a zombie process.

Battery: what to expect

An Electron editor with an AI model answering as you type uses more energy than a plain text editor, and that part is the price of the tool. What is not normal is high CPU while you are not typing. If Activity Monitor’s Energy tab shows Cursor near the top while it sits idle, work through the steps above. For the wider picture, see what is draining your Mac’s battery.

What Vitals adds

Vitals shows Cursor as one app with its parts named, and the processes it started grouped by project.

  • Cursor as one row with its total memory, CPU and energy; click it to see windows, extensions and graphics separately
  • A Projects tab: every process working in a project folder, whichever app started it, with its memory, CPU and the ports it listens on
  • Dev servers left running idle are pointed out, with an offer to stop them
  • A notification when an app holds the CPU for minutes or its memory keeps growing
  • Which app used the most energy, hour by hour, so you can see whether it was Cursor or what it started

Good to know

  • Vitals shows the extensions’ process, not which extension inside it is busy. Cursor’s Extension Bisect finds that.
  • Vitals never quits anything by itself. Quit and Stop act only when you click them.
Get Vitals for $9 $9 during the launch, $29 after it. 14-day refund.

Questions people ask

Why is Cursor using so much CPU on my Mac?

Usually an extension, indexing in a large project, or a tool the agent started and left running. Choose Help → Open Process Explorer in Cursor to see which of its processes is busy.

What is Cursor Helper (Plugin)?

The process that runs every Cursor extension. When it uses high CPU, one extension is busy. Run Help: Start Extension Bisect from the Command Palette to find which.

What is Cursor Helper (Renderer)?

One Cursor window: its editor, panels and chat. Each window has its own. Closing long chats and reloading the window brings its memory and CPU down.

Why does Cursor drain my MacBook’s battery?

Cursor is an Electron app with an AI model working as you type, which costs more than a plain editor. Heavy drain while idle points to an extension, indexing, or a dev server or build tool left running.

Why is my Mac still hot after I quit Cursor?

Something Cursor started is still running: a dev server, a type checker or a linter. Sort Activity Monitor by % CPU and look for node, tsc or biome.

How do I stop Cursor from indexing a folder?

Add the folder to a .cursorignore file in the project’s root. Build output and dependency folders are the ones worth excluding.

Is there an app that shows what Cursor is using on a Mac?

Vitals shows Cursor as one app split into windows, extensions and graphics, and its Projects tab lists every process running in each project folder and points out dev servers left idle.

In the glossary

More guides