Enterprise
Cursor Enterprise: Endpoint Security
Endpoint security software can slow Cursor's startup past its internal timeout, and then features like Agent fail. Cursor's extension host reads its bundled JavaScript at startup, and per-file scanning adds latency to each read. Exclude Cursor's processes and folders from real-time scanning, restart Cursor, and confirm that Agent works.

On this page
- Why does endpoint security software break Cursor startup?
- What processes and paths should we exclude?
- How far should the exclusions reach?
- How do we find which security software is running?
- Who should own the exclusion change?
- How do we verify the exclusions are working?
- What do we check first if Agent still times out?
Why does endpoint security software break Cursor startup?
Cursor's extension host reads JavaScript files from its own install directory at startup. When security software adds per-file scanning latency, the delays add up and can exceed Cursor's startup timeout, and features like Agent fail. Software that injects into processes can cause the same problem.
This mainly affects startup. Once modules are loaded into memory, ongoing file operations are infrequent and unlikely to cause issues.
That timing makes the symptom confusing. A machine can work all afternoon and fail on the next launch, because the scanning cost lands while modules load, not while you work. Look for an empty Extension Host log. It can make the problem look like a broken extension, since nothing wrote to it and so nothing seems to have run.
Reinstalling and disabling extensions are reasonable moves for a broken install. Neither one reduces per-file scanning latency, so the machine keeps failing in the same place, and you can end up filing a ticket about an install problem while the scanner keeps running.
Cursor's own files are code-signed binaries and bundled JavaScript, not user-generated content. Excluding them from real-time scanning doesn't reduce protection for your user files or network traffic.
This is covered hands-on in Teams and Enterprise Admin — 6 short Units, free to read.
Rather do it than read about it? Run 11 interactive Cursor walkthroughs in a simulated editor. Free, no account needed.
What processes and paths should we exclude?
Add the following to your security product's exclusion list. On Windows, that means three processes, each with a user-install and a system-install path, plus three folders. On macOS, you exclude the Cursor.app process and the app bundle.
- Windows process
- Cursor.exe
- User install path
- %LOCALAPPDATA%\Programs\cursor\Cursor.exe
- System install path
- %ProgramFiles%\cursor\Cursor.exe
- Windows process
- rg.exe
- User install path
- %LOCALAPPDATA%\Programs\cursor\resources\app\node_modules\@vscode\ripgrep\bin\rg.exe
- System install path
- %ProgramFiles%\cursor\resources\app\node_modules\@vscode\ripgrep\bin\rg.exe
- Windows process
- inno_updater.exe
- User install path
- %LOCALAPPDATA%\Programs\cursor\resources\app\node_modules\cursor-inno-updater\inno_updater.exe
- System install path
- %ProgramFiles%\cursor\resources\app\node_modules\cursor-inno-updater\inno_updater.exe
| Windows process | User install path | System install path |
|---|---|---|
| Cursor.exe | %LOCALAPPDATA%\Programs\cursor\Cursor.exe | %ProgramFiles%\cursor\Cursor.exe |
| rg.exe | %LOCALAPPDATA%\Programs\cursor\resources\app\node_modules\@vscode\ripgrep\bin\rg.exe | %ProgramFiles%\cursor\resources\app\node_modules\@vscode\ripgrep\bin\rg.exe |
| inno_updater.exe | %LOCALAPPDATA%\Programs\cursor\resources\app\node_modules\cursor-inno-updater\inno_updater.exe | %ProgramFiles%\cursor\resources\app\node_modules\cursor-inno-updater\inno_updater.exe |
Windows process exclusions, by user install and system install.
Which column applies depends on how Cursor reached the machine. A per-user install lives under %LOCALAPPDATA%, and a machine-wide install under %ProgramFiles%. A fleet can hold both layouts when machines got Cursor by different routes. Adding only one column fails quietly: the console shows the change, and everyone on the other layout keeps timing out.
%LOCALAPPDATA% also resolves per user account. Check how your console expands it before you assume one entry covers every profile on a machine.
Add folder exclusions as well, so scanning skips those folders whichever process touches them. The folders differ by platform.
- Platform
- Windows (user install)
- Path to exclude
- %LOCALAPPDATA%\Programs\cursor\
- What it is
- Application binaries and bundled modules
- Platform
- Windows (system install)
- Path to exclude
- %ProgramFiles%\cursor\
- What it is
- Application binaries and bundled modules
- Platform
- Windows (user data)
- Path to exclude
- %APPDATA%\Cursor\
- What it is
- User data, settings and workspace storage
- Platform
- macOS
- Path to exclude
- /Applications/Cursor.app/
- What it is
- Application bundle (exclude the Cursor.app process)
| Platform | Path to exclude | What it is |
|---|---|---|
| Windows (user install) | %LOCALAPPDATA%\Programs\cursor\ | Application binaries and bundled modules |
| Windows (system install) | %ProgramFiles%\cursor\ | Application binaries and bundled modules |
| Windows (user data) | %APPDATA%\Cursor\ | User data, settings and workspace storage |
| macOS | /Applications/Cursor.app/ | Application bundle (exclude the Cursor.app process) |
Path exclusions per platform.
Some products use kernel-level minifilter drivers that scan every file operation, whichever process is reading. Add both process exclusions and path exclusions for the Cursor install directory, not just one.
How far should the exclusions reach?
Keep them to Cursor's list: its processes, its install folders and, on Windows, its user data folder. All three Windows executables sit inside the install folders you exclude by path, so the process list adds no files the folder list misses. Whether a product honors the process rule, the folder rule or both depends on that product. Cursor's docs don't say which products honor which, and they tell you to add both.
The macOS list names one process and one folder and doesn't explain why it's shorter than the Windows list. Treat it as less detailed, not as proof that macOS needs less. If a Mac has Cursor installed outside /Applications, the folder exclusion has to follow the app.
One piece of standard antivirus advice doesn't transfer here. With slow tooling, the usual reflex is to exclude the source tree or the build output. That's a much bigger security decision, because your repository holds user-generated content, and the delay on this page comes from Cursor reading its own bundled JavaScript at startup. Cursor's list doesn't include your repository.
The %APPDATA%\Cursor\ folder isn't part of the install directory. It holds user data, settings and workspace storage, and Cursor's docs list it without explaining why or assessing its risk. If a reviewer asks whether these exclusions weaken coverage, list exactly which processes and folders you excluded and what Cursor's docs say each folder holds.
How do we find which security software is running?
If you don't know which products are active, these commands help you find where exclusions need to go. On Windows, run them in an Administrator PowerShell window.
# Registered AV products
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct |
Select-Object displayName, pathToSignedProductExe
# Kernel-level filesystem filter drivers
fltmc
# Check for EDR process injection via environment variables
[System.Environment]::GetEnvironmentVariables() |
Where-Object { $_.Keys -match "BPP|COR_PROFILER|COMPLUS|__COMPAT" }
# Windows Defender status
Get-MpComputerStatus |
Select-Object IsTamperProtected, RealTimeProtectionEnabled, AMRunningMode- fltmc
- Standard Windows drivers you can ignore include
WdFilter,storqosflt,wcifs,CldFlt,bfs,FileCrypt,luafv,Wof,FileInfo,npsvctrig,bindfltandUnionFS. Other drivers are likely third-party security software. - Environment-variable check
- Any result means an EDR product is injecting code into every new process on the machine, and an exclusion may be necessary.
Without this step, exclusions can go into the wrong console. Someone adds them in the product they remember, the driver doing the scanning belongs to a different product, and the team concludes that exclusions don't help. fltmc lists the filter drivers loaded on that machine, and anything beyond the standard Windows set has an owner you can find.
The environment-variable check answers a different question: whether an EDR injects code into every new process, which Cursor's docs treat as its own reason an exclusion may be needed. The docs don't say whether a folder exclusion does anything about injection, so ask whoever owns the EDR.
Who should own the exclusion change?
The change belongs to whoever administers the security product. In a managed fleet, that's security or IT, not the developer whose Agent won't start, and the handoff between them usually slows the fix down.
On a small team, one person may hold both roles. They can add the exclusion, restart, and know within a launch or two whether the scanner was the problem. Try that on one machine before anything fleet-wide, because a negative result saves the security team a change request.
A managed fleet has no such shortcut. The exclusions go into each product's management console, which security or IT administers, and those aren't always the same team. Instead of a ticket that only describes the symptom, run the identification commands yourself, then file the ticket as a change request.
Include the fltmc output from the affected machine, the exact process and path list, and the product you believe owns the driver.
How do we verify the exclusions are working?
One test settles it: restart Cursor and run Agent. If Agent works without timing out, the exclusions took effect. Cursor's troubleshooting checklist runs in this order.
- 1Run the identification commands to find which security products are running.
- 2Add both process and path exclusions for those products in their management consoles.
- 3Restart Cursor and test Agent. This is the definitive test of whether the exclusions worked.
- 4If it still fails, export logs and contact Cursor support with the diagnostic output.
The restart comes before the test because the problem happens at startup. A session that is already running holds its modules in memory, so it passes a test that proves nothing about the exclusion.
Support comes last in that checklist, but the logs shouldn't wait for it. Cursor's help center says to collect logs before you change anything, because causes vary, and it calls an empty Extension Host panel a strong diagnostic signal. Export them again if Agent still fails after the exclusions, so support can compare the two.
The Extension Host log is the weaker check. A populated log shows that startup got further than before, so run Agent as the test and keep the log as evidence for the ticket.
After applying exclusions, restart Cursor and confirm Agent features work without timing out. If you previously saw empty Extension Host logs (⌘Ctrl⇧P, then Output, then Extension Host), they should now show normal startup output.
What do we check first if Agent still times out?
First, check that the exclusion reached the machine. A policy that exists in the console but hasn't synced to the laptop produces the same symptom, so confirm the sync state on the machine itself.
Then re-run fltmc on that machine and compare the output with the standard Windows driver list. The likely cause is a third-party driver from a product nobody identified, or an exclusion path that doesn't match what the product expects. Re-read the %LOCALAPPDATA% entry character by character.
If the drivers look clean and Agent still fails, check whether this is a scanning problem at all. Buffering proxies and SSL inspection cause their own Agent timeouts, and those belong on the network configuration side, not the endpoint side. If a machine now writes normal Extension Host output at startup but still can't finish an Agent run, look there first.
At that point, contact Cursor support. Send the exclusions you applied and the logs you exported before and after them.
Frequently asked questions
Why does Cursor Agent time out on locked-down machines?
Endpoint security software is one possible cause. Software that scans every file operation or injects into processes adds startup latency, and when the delay exceeds Cursor's startup timeout, the extension host doesn't finish loading and Agent fails. Excluding Cursor's processes and folders from scanning removes that delay. Cursor's help center says causes vary, so export logs before you change anything.
Is it safe to exclude Cursor from antivirus scanning?
Cursor calls it low-risk for its own files, which are code-signed binaries and bundled JavaScript, not user-generated content. Excluding them doesn't reduce protection for your user files or network traffic. The Windows list also includes the %APPDATA%\Cursor\ folder, which holds user data, settings and workspace storage, and Cursor's docs don't assess that folder separately.
Do we need both process and path exclusions?
Cursor says both may be needed. Some security products use kernel-level minifilter drivers that scan every file operation, whichever process reads the file, so a process-only exclusion may not be enough. Add path exclusions for the Cursor install directory as well.
Do we need to exclude our repository or workspace folder as well?
No. Cursor's list covers its own processes, its install directory and, on Windows, its user data folder. The delay comes from the extension host reading its bundled JavaScript at startup. Your repository holds user-generated content, and excluding it is a much larger security decision that doesn't address this failure.
Which Windows install path should we exclude?
Both, unless you are certain the whole fleet is on one layout. A user install lives under %LOCALAPPDATA%\Programs\cursor and a system install under %ProgramFiles%\cursor. %LOCALAPPDATA% resolves per user account, so confirm how your management console expands it before you assume one entry covers every profile on a machine.
Sources & last verified
Cursor ships frequently. Last updated October 28, 2026.