Waiting for extension host (MacOS)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Starting a chat just shows “Waiting for extension host”

Steps to Reproduce

Just start a chat

Expected Behavior

Uhm, that it works?

Operating System

MacOS

Version Information

Version: 3.0.9
VSCode Version: 1.105.1
Commit: 93e276db8a03af947eafb2d10241e2de17806c20
Date: 2026-04-03T02:06:46.446Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 24.6.0

Additional Information

Makes cursor unusable :confused:

Does this stop you from using Cursor

Yes - Cursor is unusable

Hey, this is a known issue. The team is aware and tracking it. I’ll need a bit more data to understand the exact cause in your case.

Try these steps in order:

  1. Run Cursor from Terminal with cursor --disable-extensions. If it works, the issue is caused by an extension.

  2. If that didn’t help, try cursor --profile-temp. This will rule out your profile settings and state.

  3. Check what’s inside the cursor-socket directory:

ls -la "/Applications/Cursor.app/Contents/Resources/app/extensions/cursor-socket/"

If there’s no out/ folder, that’s the cause. Reinstalling Cursor should fix it.

  1. If none of the above helps, open Developer Tools via Help > Toggle Developer Tools, go to the Console tab, wait for the error, then paste here all red entries.

Also check this thread for more context and similar cases: Waiting for Extension Host

Let me know what the logs show.

Thanks :slight_smile:

1.:
udo@xx MacOS % /Applications/Cursor.app/Contents/MacOS/Cursor --disable-extensions
(node:26987) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `Cursor --trace-deprecation …` to show where the warning was created)
[main 2026-04-03T13:02:47.354Z] updateURL https://api2.cursor.sh/updates/api/update/darwin-arm64/cursor/3.0.9/3585db62fa0fb96e3b0e97b3617a1aa848dcf83cf5351548d9fd72dab24f1d7d/stable
[main 2026-04-03T13:02:47.358Z] update#setState idle
[main 2026-04-03T13:02:50.022Z] [Tray] getMacOSIconPath: hasNotifications: false
[main 2026-04-03T13:03:02.328Z] [PowerMainService] Started wakelock id=0 owner=window:1 reason=“agent-loop” activeCount=1
[main 2026-04-03T13:03:02.754Z] [CursorProclistService] Config enabled feature (subsample every 10s)
[main 2026-04-03T13:03:14.975Z] update#setState checking for updates
[main 2026-04-03T13:03:15.533Z] UpdateService onUpdateNotAvailable()
[main 2026-04-03T13:03:15.534Z] update#setState idle
[main 2026-04-03T13:03:26.077Z] Extension host with pid 27152 exited with code: 0, signal: unknown.
[main 2026-04-03T13:03:26.090Z] Extension host with pid 27151 exited with code: 0, signal: unknown.
[main 2026-04-03T13:03:26.090Z] Extension host with pid 27150 exited with code: 0, signal: unknown.
[main 2026-04-03T13:03:26.102Z] Extension host with pid 27147 exited with code: 0, signal: unknown.
[main 2026-04-03T13:03:26.102Z] [PowerMainService] Stopping wakelock id=0 owner=window:1 reason=“agent-loop” heldForMs=23774

(Still shows “Waiting for extension host“ when sending message to agent. Quit with cmd+Q)

2.:
udo@xx MacOS % /Applications/Cursor.app/Contents/MacOS/Cursor --profile-temp
(node:28809) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `Cursor --trace-deprecation …` to show where the warning was created)
[main 2026-04-03T13:06:49.971Z] updateURL https://api2.cursor.sh/updates/api/update/darwin-arm64/cursor/3.0.9/3585db62fa0fb96e3b0e97b3617a1aa848dcf83cf5351548d9fd72dab24f1d7d/stable
[main 2026-04-03T13:06:49.973Z] update#setState idle
[main 2026-04-03T13:06:52.540Z] [Tray] getMacOSIconPath: hasNotifications: false
[main 2026-04-03T13:06:58.007Z] Extension host with pid 28976 exited with code: 0, signal: unknown.
[main 2026-04-03T13:06:58.013Z] Extension host with pid 28978 exited with code: 0, signal: unknown.
[main 2026-04-03T13:06:58.016Z] Extension host with pid 28977 exited with code: 0, signal: unknown.
[main 2026-04-03T13:06:58.541Z] Extension host with pid 28970 exited with code: 0, signal: unknown.
[main 2026-04-03T13:07:03.800Z] [PowerMainService] Started wakelock id=0 owner=window:1 reason=“agent-loop” activeCount=1
[main 2026-04-03T13:07:04.698Z] [File Watcher (node.js)] Watcher shutdown because watched path got deleted
[main 2026-04-03T13:07:13.418Z] [CursorProclistService] Config enabled feature (subsample every 10s)
[main 2026-04-03T13:07:13.868Z] Extension host with pid 29910 exited with code: 0, signal: unknown.
[main 2026-04-03T13:07:13.890Z] Extension host with pid 29908 exited with code: 0, signal: unknown.
[main 2026-04-03T13:07:13.893Z] Extension host with pid 29909 exited with code: 0, signal: unknown.
[main 2026-04-03T13:07:13.908Z] Extension host with pid 29907 exited with code: 0, signal: unknown.
[main 2026-04-03T13:07:13.908Z] [PowerMainService] Stopping wakelock id=0 owner=window:1 reason=“agent-loop” heldForMs=10108

(Still shows “Waiting for extension host“ when sending message to agent. Quit with cmd+Q)

3.:
udo@xx MacOS % ls -la “/Applications/Cursor.app/Contents/Resources/app/extensions/cursor-socket/”
total 16
drwxr-xr-x@ 5 udo staff 160 Apr 3 02:24 .
drwxr-xr-x@ 114 udo staff 3648 Apr 3 02:24 ..
drwxr-xr-x@ 3 udo staff 96 Apr 3 02:24 dist
-rw-r–r–@ 1 udo staff 182 Apr 3 01:51 extension.webpack.config.js
-rw-r–r–@ 1 udo staff 477 Apr 3 01:51 package.json

Will reinstall now.

I can see from your ls output that you have a dist/ folder instead of out/ in cursor-socket. That’s the reason. Reinstalling might not help if the issue is in the build itself.

Try this symlink workaround:

cd "/Applications/Cursor.app/Contents/Resources/app/extensions/cursor-socket"
ln -s dist out

Then restart Cursor.

If reinstall fixed it, awesome. If not, run ls again and apply the symlink. The team is aware of this issue, and your report helps us prioritize it.

Let me know how it goes.

Deleted Cursor from Applications folder. Downloaded and copied new from website. No out/ folder:

udo@xx ~ % ls -la “/Applications/Cursor.app/Contents/Resources/app/extensions/cursor-socket/”
total 16
drwxr-xr-x@ 5 udo admin 160 Apr 3 04:31 .
drwxr-xr-x@ 114 udo admin 3648 Apr 3 04:31 ..
drwxr-xr-x@ 3 udo admin 96 Apr 3 04:31 dist
-rw-r–r–@ 1 udo admin 182 Apr 3 04:31 extension.webpack.config.js
-rw-r–r–@ 1 udo admin 477 Apr 3 04:31 package.json

Same behavior as before.

No red errors after I send message, but instead this one repeatedly (screenshot, cause difficult to copy):

Red errors before I do anything:

This document requires ‘TrustedScript’ assignment. The action has been blocked.

(anonymous) @ workbench.desktop.main.js: 8774

This document requires ‘TrustedScript’ assignment. The action has been blocked.

(anonymous) @ workbench.desktop.main.js:43736

workbench.desktop.main.js:65

ERR Extension ‘anysphere. remote-ssh’

appears in product json but enables LESS API proposals than the extension

wants.

package json (LOSES): resolvers, tunnels, contribViewsRemote,

terminalDataWriteEvent, cursorTracing, cursorNoDeps

product. json (WINS): resolvers, tunnels, terminalDataWriteEvent,

contribRemoteHelp, contribViewsRemote, telemetry, cursorTracing

workbench.desktop.main.js:65

ERR [Extension Hostl (node: 35598)

[DEP0040] DeprecationWarning: The ‘punycode’

The 'punycode module is deprecated. Please

use a userland alternative instead.

(Use ‘Cursor Helper (Plugin) -trace-deprecation …..’ to show where the

warning was created)

workbench.desktop.main.js:53307

[Extension Hostl (node:35598) [DEP0040]

DeprecationWarning: The ‘punycode’ module is deprecated. Please use a userland alternative instead.

(Use ‘Cursor Helper (Plugin) -trace-deprecation …’ to show where the warning was created)

workbench.desktop.main.js:56225

[transport] Connect error in unary AI

connect ConnectError: [unauthenticated] You must be a team member to access this resource

at t (workbench.desktop.main.js:53343:7841)

at async Object.getTeamCommands (workbench.desktop.main.js:43773:4386) at async qqd. loadTeamCommands (workbench.desktop.main.js:60821:5944)

  • Object i arch: “arm64”
    causeCode: undefined causeErrno: undefined causeSyscall: undefined channel: “stable”
    client_version: “3.0.9”
    code: 16

  • error: {message: ‘You must be a team member to access this resource’

• S

• errorDetails: K}]

errorDetailsDebug: "{\“error\”:\ “ERROR_UNAUTHORIZED\”, \“details\”: {\"ti errorMessage: undefined errorName: “ConnectError”

layout: “unifiedAgent” method: “GetTeamCommands”

platform: “darwin”

requestId: “not-found”

service: “aiserver.v1.DashboardService”

timeoutMs: “undefined”

  • [[Prototypell: Object

  • constructor: f Object()

  • hasOwnProperty: f hasOwnProperty()

  • isPrototype0f: f isPrototypeOf()

  • propertyIsEnumerable: f propertyIsEnumerable()

  • toLocaleString: f toLocaleString()

  • toString: f toString()

  • valuef: f valueOf()

_defineGetter_: f _ _defineGetter_()

defineSetter_: f _defineSetter_()

_LookupGetter_: f _lookupGetter_()

_LookupSetter_

:f—

_lookupSetter_()

proto_: (… )

b get _protol: 7 _protol()

•set lprotol: 7 lprotol()

workbench.desktop.main.js: 60821

Failed to load team commands:

ConnectError: [unauthenticatedl You must be a team member to access this resource

at t (workbench.desktop.main.js:53343:7841)

at async Object.getTeamCommands (workbench.desktop.main.js:43773:4386) at async qqd. loadTeamCommands (workbench.desktop.main.js:60821:5944)

workbench.desktop.main.js: 56543

[HOOKS] Failed to parse project hooks

configuration undefined

Just saw your answer inbetween :slight_smile:

udo@xx cursor-socket % ls -la “/Applications/Cursor.app/Contents/Resources/app/extensions/cursor-socket/”
total 16
drwxr-xr-x@ 6 udo admin 192 Apr 3 15:42 .
drwxr-xr-x@ 114 udo admin 3648 Apr 3 04:31 ..
’drwxr-xr-x@ 3 udo admin 96 Apr 3 04:31 dist
-rw-r–r–@ 1 udo admin 182 Apr 3 04:31 extension.webpack.config.js
lrwxr-xr-x 1 udo admin 4 Apr 3 15:42 out → dist
-rw-r–r–@ 1 udo admin 477 Apr 3 04:31 package.json

No change (“No first token received”)

I see the symlink moved the issue. Waiting for extension host is gone, but now you’re getting No first token received. That’s progress, the extension host is loading now.

A couple things to try:

  1. After creating the symlink, do a Reload Window: Cmd+Shift+P > Developer: Reload Window. This isn’t the same as restarting Cursor.

  2. Try turning off Codebase Indexing: Cursor Settings (not VS Code settings) > Indexing & Docs > turn off Codebase Indexing. Another user with the same bug fixed it with symlink plus turning off indexing: Cursor Extension Host crashes repeatedly && cursor-socket extension is malformed

  3. If No first token received still happens, run Cursor Settings (not VS Code settings) > Network > Run Diagnostics and paste the result here.

Let me know how it goes.

But in the chat window it still says: “Waiting for extension host”

1.: “Waiting for extension host”

2.: I can’t turn it off, but delete the index. “Waiting for extension host”

3.: No first token received still happens.
Under network diagnostics all checkmarks apart from:
Agent
Bidirectional streaming is not supported by the http2 proxy in your network environment”

(Log:
[2026-04-03T15:20:49.355Z] Starting stream
[2026-04-03T15:20:49.355Z] Pushing first message
[2026-04-03T15:20:51.625Z] Response: ‘foo’ in 2270ms
[2026-04-03T15:20:52.125Z] Pushing next message
[2026-04-03T15:20:52.179Z] Response: ‘foo’ in 554ms
[2026-04-03T15:20:52.681Z] Pushing next message
[2026-04-03T15:20:52.737Z] Response: ‘foo’ in 558ms
[2026-04-03T15:20:53.239Z] Pushing next message
[2026-04-03T15:20:53.296Z] Response: ‘foo’ in 559ms
[2026-04-03T15:20:53.796Z] Pushing next message
[2026-04-03T15:20:53.859Z] Response: ‘foo’ in 563ms
[2026-04-03T15:20:53.859Z] Result: Error: Bidirectional streaming is not supported by the http2 proxy in your network environment
)

Not sure what proxy it’s referring to. My network environment didn’t change over the last few days.

Looks like you’ve got two separate issues right now:

  1. cursor-socket
    The symlink should’ve fixed this, and based on post #9 the extension host started loading since the error changed to No first token received. If the chat still shows Waiting for extension host, try Developer: Reload Window after creating the symlink. Use Cmd+Shift+P then run Developer: Reload Window.

  2. HTTP/2 proxy
    The diagnostics are pretty clear: Bidirectional streaming is not supported by the http2 proxy in your network environment. That’s the reason for No first token received. Go to App Settings with Cmd+,, search for HTTP/2, and enable Disable HTTP/2. Then restart Cursor.

Even if your network setup hasn’t changed, sometimes ISPs or routers push updates and start handling HTTP/2 differently. Disabling HTTP/2 is a standard workaround for this.

Let me know if it helped.

I reloaded the window as well as disabled HTTP/2.

Still: Waiting for extension host

(I also double-checked all my network settings and disabled the encrypted DNS)

Try disabling codebase indexing, it worked for me as @deanrie stated earlier

Like I mentioned above, there is no option to turn it off?

Ah, well actually I edited settings.json directly from Terminal. Here’s the modus operandi:

  1. open settings.json:

    ```bash
    -e ~/Library/Application\ Support/Cursor/User/settings.json
    ```

  2. add these two lines inside the {}

    ```json
    “cursor.codebaseIndexing.enabled”: false,
    “cursor.indexRepos.enabled”: false
    ```

  3. To verify they’re still active:

    ```bash
    grep -E “codebaseIndexing|indexRepos” ~/Library/Application\ Support/Cursor/User/settings.json
    ```

    should return:
    “cursor.codebaseIndexing.enabled”: false,
    “cursor.indexRepos.enabled”: false,

    If nothing returns → they might have been wiped and need re-adding. (guessing only here)

Hope that helps! :saluting_face: