Why Cursor is slow, and how to isolate the real cause

Cursor can be slow in four different places: the Electron interface, the extension host, repository indexing, or the remote Agent request. Fixing the wrong layer is how a ten-minute diagnosis turns into an afternoon of reinstalls.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

When Cursor is slow, classify the symptom before changing settings. Typing and scrolling lag usually points to rendering, chat-state growth, or a busy extension host. Sustained CPU after file edits often points to indexing or extensions in a large workspace. Slow first Agent tokens with a responsive editor points to model, service, VPN, proxy, or streaming transport. Remote SSH adds its own extension-host, filesystem, and workspace-size bottlenecks. Test a fresh chat, a small local folder, extensions disabled, and Cursor network diagnostics one variable at a time, then capture Process Explorer and request evidence.

What you need to know
  • First separate local interface lag from remote Agent latency.
  • cursor --disable-extensions is the highest-signal test for a busy extension host.
  • Large monorepos need a deliberate .cursorignore and a narrower workspace root.
  • Long chat history can slow both context processing and local chat-state rendering. Test a fresh chat.
  • VPNs, corporate proxies, and HTTP/2 handling can stall streaming while ordinary browsing remains fine.
  • Remote SSH performance depends on remote extension activation, file count, and filesystem latency.

Match the symptom to the layer

“Cursor is slow” is not yet a diagnosis. Say what is slow while the rest of the product is doing what. The dividing line is whether a local action lags before any AI request exists. If typing into a plain file stutters, the model provider is not the first suspect. If editing is crisp but Agent takes thirty seconds to start streaming, deleting editor caches is not the first suspect.

SymptomMost likely layerHighest-signal first test
Typing, scrolling, or panels lagRenderer, chat state, extension host, or GPU pathOpen a small local folder and a fresh window
CPU spikes after every file editRepository indexer or language / AI extensionProcess Explorer, then --disable-extensions
Agent is slow but editor is responsiveConversation context, selected model, network stream, or serviceFresh chat, different model, network diagnostics
Only one repository is slowWorkspace size, generated files, watcher or index loadOpen one subdirectory and inspect ignored paths
All repositories are slowExtension set, application state, renderer, or current releaseEmpty profile or extensions-disabled launch
Only Remote SSH is slowRemote extension host, index, filesystem, or connectionSame small folder locally and remotely
Only one teammate or network is slowProxy, VPN, DNS, route, or deviceDifferent network and Cursor diagnostics
Everyone and every model is slowCursor or provider incidentStatus page and request IDs

The ten-minute diagnosis

01

Fully quit and reopen the current version

Closing one window may leave helper processes alive. Fully quit Cursor, confirm the application is gone, reopen, and reproduce once. Record the version from About before updating so a regression remains attributable.

02

Open a fresh Agent chat

Ask one narrow question about a small file. If it is fast while the old conversation is slow, context or accumulated chat state is involved. Do not delete the old chat yet.

03

Open a small local folder

Use a project with hundreds of files rather than a monorepo with generated trees. If the local control is fast, the installation and basic renderer are healthy.

04

Run once with extensions disabled

Launch cursor --disable-extensions. A large improvement implicates an extension or extension interaction. Re-enable by profile or in small groups instead of guessing one by one from a list of fifty.

05

Open Developer: Open Process Explorer

Look for renderer, extension-host, plugin helper, or other processes holding CPU or memory while the editor is idle and while the symptom occurs. Capture a screenshot rather than relying on fan noise.

06

Run Cursor network diagnostics

For slow Agent streaming, use Cursor Settings, Network, Run Diagnostics. Test without a VPN or corporate proxy if policy allows, then try the documented compatibility mode rather than editing unrelated files.

07

Check status and reproduce with another model

One model being slow suggests provider or route behavior. Every model being slow on every network suggests Cursor service or the local client path.

Stop when a single change produces a repeatable improvement. That result is worth more than a list of twenty speculative tweaks. Re-enable the suspected condition and confirm the slowdown returns before making a permanent tradeoff such as disabling indexing or abandoning an extension.

Extensions and the extension host

Cursor inherits the VS Code extension-host architecture and adds its own AI processes. Public forum reports repeatedly show high CPU and memory caused by several AI extensions running beside Cursor's built-in AI, language tooling activated for stacks not used in the current repository, or extension processes that remain after windows close. The point is not that extensions are bad. It is that they are executable programs sharing the editor's event loop and filesystem activity.

Launch a clean extension control
cursor --disable-extensions

If the control is fast, create workload-specific profiles. A TypeScript service does not need Java, Flutter, Jupyter, C#, Go, three AI assistants, and a pull-request bot activated at once. Keep the extensions required by the repository and disable the rest in that profile. Multiple AI coding extensions are especially prone to duplicating file watching, completions, indexing, and chat services.

ObservationInterpretationNext action
Fast with extensions disabledAt least one extension or interaction is causalEnable half the set, reproduce, and bisect
Still slow with extensions disabledDo not keep blaming extensionsMove to indexing, renderer, state, or network tests
Extension host climbs only after opening one repoWorkspace-triggered activationUse Show Running Extensions and inspect that profile
Several AI helpers consume memoryOverlapping assistants are activeKeep the one used in this editor profile
Processes remain after closing windowsWindow close did not end application helpersFully quit during diagnosis and update to a fixed release when available

Indexing and large repositories

A large repository can be small in source code and enormous in files. Dependency trees, build output, caches, coverage, generated documentation, model artifacts, logs, and experiment results all create watcher and indexing work. Forum cases of CPU pinning after edits repeatedly improve when those paths leave the Cursor index or when the user opens a narrower workspace.

A starting .cursorignore, to adapt rather than paste blindly
**/node_modules
**/.git
**/dist
**/build
**/.next
**/.cache
**/coverage
**/__pycache__
**/*.pyc

The file is not a universal best-practices list. Exclude directories the agent should neither search nor edit. Do not ignore generated source when your task routinely inspects that output, and do not assume .gitignore and .cursorignore answer the same question. One controls Git tracking; the other controls what Cursor should consider.

01

Count the problem, not just repository bytes

Find which top-level directories contain the most files and which change constantly. A million tiny cache entries can hurt more than one large asset.

02

Open only the active package

A monorepo root is convenient and expensive. Open the service or package being changed, or use a multi-root workspace containing only the few relevant directories.

03

Exclude generated and dependency trees

Add paths deliberately, reload, and observe Process Explorer during the same edit that previously caused the spike.

04

Inspect Indexing and Docs settings

Temporarily disable indexing only as a diagnostic. If it fixes the problem, narrow the corpus before deciding to lose repository-aware search entirely.

Long chats and local state

A long Agent conversation can be slow in two independent ways. First, more context must be assembled, transmitted, and processed before the next answer. Second, local chat history and UI state can grow large enough to make the chat panel itself lag. Cursor forum support has described cases where the local state.vscdb grew to multiple gigabytes and old Agent history made the interface nearly unusable.

Test resultLikely problemSafe response
Fresh chat streams quickly; old chat starts slowlyConversation contextSummarize current state and continue in a new chat
Whole chat panel lags even before sendingLocal history or rendering stateUse the built-in Delete Old Chats command after preserving anything needed
Editor lags only with chat panel openChat rendering or stateClose the panel, update, and capture process evidence
All panels lag and state database is very largeBroader application-state growthBack up settings and history before any cache cleanup
Fresh chat is equally slowContext alone is not the causeMove to model, network, service, indexing, and extension tests

Prefer built-in history deletion to manually deleting a database. If a forum workaround tells you to remove state or cache directories, treat it as destructive maintenance: fully quit Cursor, back up the data, record exact paths, and understand that chat history may be unrecoverable. Cache clearing is a last resort after a clean-profile test proves state is involved, not a first response to any slow answer.

A fresh chat also improves cost and quality when a task has changed direction. Carry forward the objective, relevant file paths, current diff, tests run, and unresolved error. Do not paste the entire old transcript back into the new window; that recreates the context problem in one turn.

Network, model, and service latency

When the editor stays responsive and only Agent waits, classify the wait. Time to first token points toward request setup, context processing, route, model, or streaming transport. Slow tokens after the response begins points more toward provider generation or a buffered stream. Slow tool steps inside an otherwise responsive answer point toward the command, remote filesystem, or extension host the agent is waiting on.

  1. Start a fresh narrow chat. This removes accumulated context from the comparison.
  2. Try one other model. Keep the prompt and repository constant. A model-specific delay is useful evidence.
  3. Run Cursor network diagnostics. Save the result instead of relying on a browser speed test.
  4. Test another allowed network. VPNs, Zscaler, corporate proxies, and managed routes can buffer long-lived streams while normal web pages load normally.
  5. Try Cursor’s HTTP compatibility setting. Forum support commonly suggests HTTP/1.1 or disabling HTTP/2 for buffered streaming, followed by a full restart.
  6. Check status. Correlate the incident time and selected model rather than treating a green page as proof no partial degradation exists.
  7. Capture a Request ID. This lets support distinguish provider delay, Cursor infrastructure, and client-side stream behavior.

Usage limits and slowness should remain separate diagnoses. Current on-demand requests are not intentionally put in a slow queue after included usage ends. If a response is slow, investigate performance. If it is rejected with a quota message, investigate the account limit. An old article about "slow premium requests" describes a retired billing era.

Remote SSH has three extra bottlenecks

Remote SSH adds a network hop, a remote extension host, and a remote filesystem. Cursor forum reports show lag that is worse in workspaces with recursively large file trees, heavy remote extensions, MCP servers activated remotely, or Cursor Server installed on slow network-mounted storage. A local project being fast does not clear any of those remote layers.

Remote symptomLikely causeTest
Explorer, save, and terminal all freezeRemote extension host or connection saturatedOpen a tiny remote directory with extensions reduced
Startup and server extraction take minutesCursor Server lives on NFS or other slow shared storageCompare install path and local disk on the remote host
Lag worsens with repository sizeRemote indexing and recursive file visibilityOpen one package and add generated paths to .cursorignore
Lag begins after MCP activationRemote MCP process or extension activation loadDisable remote MCP servers temporarily
One very large file stalls the whole sessionRemote transfer occupies the connectionAvoid opening the artifact and reproduce with a small file
VS Code is fast on the same hostCursor-specific remote index or extension pathCompare extension sets and the Anysphere Remote SSH implementation

Use Developer: Show Running Extensions while connected remotely. Extensions can be installed on the local UI side, the remote workspace side, or both, and the slow process may not be where you expect. Keep remote profiles lean. A language server needed for the current code belongs there; a calendar of unrelated AI and review extensions does not.

Do not delete ~/.cursor-server as a casual first step. That can force a clean reinstall and has helped individual forum cases, but it removes remote state and extensions. First capture the version, logs, extension activation times, install filesystem, and a reproducible small-workspace comparison. If cleanup becomes justified, back up what matters and target the explicit remote directory.

Rendering, GPU, and release regressions

If typing, scrolling, menus, and panel animation lag while CPU and extension tests are clean, the Electron rendering path is plausible. Forum users have reported improvements after disabling hardware acceleration, especially after particular releases. That is a diagnostic switch, not a universal performance recommendation: on a healthy system GPU acceleration should make rendering cheaper, and disabling it can move work to the CPU.

01

Record the exact Cursor and OS versions

A regression report without a build cannot be compared with anyone else's. Note whether the problem began immediately after an update.

02

Check Process Explorer during visible lag

Renderer pressure and extension-host pressure imply different next steps even if both make typing stutter.

03

Test hardware acceleration once

Use Preferences: Configure Runtime Arguments, change the documented hardware-acceleration setting, fully restart, and repeat the same scrolling or typing test. Revert if there is no clear improvement.

04

Try the next stable patch before a destructive reset

Cursor ships frequently. Check the changelog and forum for the exact build symptom; preserve a working installer or rollback path if your organization permits version pinning.

A release correlation is not proof by itself. Updates also restart processes, rebuild indexes, activate new extension versions, and migrate state. The control tests still matter. The useful bug report says "version X is slow in a clean profile on this file, version Y is not", not merely "it became slow after Tuesday".

What to send Cursor support

A performance report support can act on
Cursor version and release track:
Operating system and hardware:
Local / Remote SSH / container:
Exact slow action:
Time to reproduce:
One repo or every repo:
Fresh chat result:
Small local folder result:
--disable-extensions result:
Top Process Explorer process:
Network diagnostics result:
VPN / proxy / managed network:
Selected model and Request ID:
Workspace file count and largest generated paths:
First version where the problem appeared:

Attach the smallest reproduction and say which single control changed the result. Avoid logs containing source or prompts your policy does not permit sharing. A screenshot of Process Explorer, extension activation times, and the network diagnostic is usually more useful than a screen recording of a spinner.

Questions people ask

The common layers are a busy extension host, large-workspace indexing, accumulated chat state, rendering or GPU behavior, network streaming, model or service latency, and Remote SSH filesystem load. Match the symptom to a layer before changing settings.

Sustained CPU commonly comes from repository indexing or extensions. Open Developer: Open Process Explorer, reproduce an edit, then compare with a small workspace and cursor --disable-extensions.

Open the narrowest useful package, exclude generated and dependency paths in .cursorignore, use project-specific extension profiles, and verify indexing behavior in Process Explorer.

The likely causes move to conversation context, selected model, Cursor or provider load, and the streaming network path. Test a fresh chat, another model, Cursor network diagnostics, another allowed network, and the status page.

Yes, they can. More context takes longer to process, and accumulated local chat history can also make the interface lag. Continue from a concise state summary in a fresh chat instead of copying the whole transcript.

Only after a clean-profile or fresh-state test implicates local state. Back up settings and history first. Cache deletion is destructive maintenance and does not fix account limits, network latency, or a busy indexer.

Remote SSH adds a remote extension host, remote indexing, a network connection, and filesystem latency. Open a smaller remote directory, reduce remote extensions and MCP servers, ignore generated trees, and keep Cursor Server on local remote-host storage rather than NFS.

Sometimes, when the renderer or GPU path is the demonstrated cause. Test it once with the same reproduction and revert if it does not clearly help; it is not a universal speed setting.

Current on-demand usage is not a slow queue and is not downgraded in quality or speed. A quota rejection and a slow response are separate problems.

Sources

Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Cursor status
  2. Cursor forum: extension host CPU and memory
  3. Cursor forum: large monorepo indexing CPU
  4. Cursor forum: Agent chat latency checklist
  5. Cursor forum: chat history slowdown
  6. Cursor forum: Remote SSH performance
  7. Cursor forum: slow streaming and HTTP compatibility
Try it

Keep the work
moving.

Continuum runs terminal and editor agents from one workbench, so delegated work can continue while you isolate a local Cursor bottleneck.

free app · your subscriptions · local-first