Cursor Agent always returns ConnectError: Protocol error (ERR_HTTP2_ERROR) — requesting download link for working version 2025.08.22-82fb571

Where does the bug appear (feature/product)?

Cursor CLI

Describe the Bug

Cursor CLI Agent cannot complete any responses. Every time I start a conversation, the agent immediately aborts the turn and returns the following error:

ConnectError: “Protocol error”
Cause: ERR_HTTP2_ERROR (errno: -505)
code: 13

This happens 100% of the time, even on different networks, with or without Zscaler running, and after a fresh reinstall.

I have validated that my network fully supports HTTPS + HTTP/2 to Cursor’s API endpoints using curl — TLS is not intercepted and ALPN negotiates h2 successfully. So this appears to be a regression in the current Cursor Agent build, not a network issue.

Steps to Reproduce

  1. Run cursor-agent --debug
  2. Open the debug URL (http://127.0.0.1:43111)
  3. Send any message (e.g., “hi”)
  4. Conversation aborts immediately
  5. Debug window shows:

stopUiConversation: lastTurn: agent, restoredInput: hi
Error: {“name”:“ConnectError”,“rawMessage”:“Protocol error”,“code”:13,
“cause”:{“code”:“ERR_HTTP2_ERROR”,“errno”:-505}}

  1. Issue reproduces in any folder (git or non-git), any network, and after reinstalling Cursor CLI AND logging in and out of Cursor CLI.

Expected Behavior

Cursor Agent should open a streaming HTTP/2 session to the backend and return model responses. Instead, it fails immediately with an internal HTTP/2 protocol error.

This makes Cursor Agent completely unusable.

Screenshots / Screen Recordings

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2025.11.25-d5b3271

For AI issues: which model did you use?

All models experience the same issue

Does this stop you from using Cursor

Yes - Cursor is unusable

2 Likes

@deanrie Tagging you as I saw your input on a similar issue which is referenced in this report: Cursor-agent returns no response, OTLPExporterError

Hey, thanks for the report. The ERR_HTTP2_ERROR looks like a regression in the current Cursor Agent version - the HTTP/2 stream breaks when trying to connect to the backend.

Temporary workaround: roll back to the previous version:

  • rm -rf ~/.local/share/cursor-agent/versions/latest_installed_version
  • cursor-agent --version

Could you please share:

  • The full debug log from http://127.0.0.1:43111 (the entire session.log or what’s visible in the debug window after reproduction)
  • Try disabling Zscaler completely and reproduce (I know you’ve tested it already, but it’s important to confirm the result)
  • The result of the command: curl -v --http2 https://api2.cursor.sh

If version 2025.08.22-82fb571 works, it’ll confirm the regression in the new build. I’ll pass this to the team.

Hi @deanrie , thanks for your swift response.

I only installed cursor cli this week whilst the latest version was already released which means I don’t have any previous local versions to revert back to.

Below is all of the information you requested:

Full Debug Log (When replicating issue):

Cursor Agent Debug Session
live
Raw

Download
Clear (view)
--- Cursor Agent Debug Session 2025-12-02T12:06:54.133Z ---
2025-12-02T12:06:54.135
debug-session-start
{
  "event": "debug-session-start",
  "port": 43111,
  "basePort": 43111,
  "attempts": 1,
  "ephemeralFallback": false,
  "directory": "/var/folders/k9/3n4vs4ys6ks3dqbtvynr6tgm0000gp/T/cursor-agent-debug-rsIhgM",
  "logFile": "/var/folders/k9/3n4vs4ys6ks3dqbtvynr6tgm0000gp/T/cursor-agent-debug-rsIhgM/session.log",
  "pid": 76543,
  "startTime": "2025-12-02T12:06:54.135Z"
}
2025-12-02T12:06:55.050
Loading existing conversation
2025-12-02T12:06:56.581
Loaded team commands: 0
2025-12-02T12:06:59.734
otel.error {"stack":"OTLPExporterError: Bad Request\n at IncomingMessage.<anonymous> (/Users/cole.miles/.local/share/cursor-agent/versions/2025.11.25-d5b3271/7184.index.js:25031:31)\n at IncomingMessage.emit (node:events:519:35)\n at IncomingMessage.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1701:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)","message":"Bad Request","code":"400","name":"OTLPExporterError","data":"{\"error\":\"Trace spans collection is not enabled for this user\"}"}
2025-12-02T12:07:08.437
stopUiConversation: numTurns: 0, abortedState.completedTurns.length: 1, abortedState.pendingTurn: false
2025-12-02T12:07:08.438
stopUiConversation: lastTurn: agent, restoredInput: Hi
2025-12-02T12:07:08.439
Error: {"name":"ConnectError","rawMessage":"Protocol error","code":13,"metadata":{},"details":[],"cause":{"code":"ERR_HTTP2_ERROR","errno":-505}}
2025-12-02T12:07:08.664
otel.error {"stack":"OTLPExporterError: Bad Request\n at IncomingMessage.<anonymous> (/Users/cole.miles/.local/share/cursor-agent/versions/2025.11.25-d5b3271/7184.index.js:25031:31)\n at IncomingMessage.emit (node:events:519:35)\n at IncomingMessage.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1701:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)","message":"Bad Request","code":"400","name":"OTLPExporterError","data":"{\"error\":\"Trace spans collection is not enabled for this user\"}"}
2025-12-02T12:07:14.002
otel.error {"stack":"OTLPExporterError: Bad Request\n at IncomingMessage.<anonymous> (/Users/cole.miles/.local/share/cursor-agent/versions/2025.11.25-d5b3271/7184.index.js:25031:31)\n at IncomingMessage.emit (node:events:519:35)\n at IncomingMessage.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1701:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:90:21)","message":"Bad Request","code":"400","name":"OTLPExporterError","data":"{\"error\":\"Trace spans collection is not enabled for this user\"}"}

Confirmation that ZScaler was disabled before this session:

Result of curl command you provided (With ZScaler disabled):

user@ZAMD4 order-service % curl -v --http2 https://api2.cursor.sh
* Host api2.cursor.sh:443 was resolved.
* IPv6: (none)
* IPv4: 3.216.199.174, 13.216.178.242, 52.23.91.238, 18.207.36.191, 54.211.235.48, 44.222.54.154, 3.220.36.67, 3.89.169.113
*   Trying 3.216.199.174:443...
* Connected to api2.cursor.sh (3.216.199.174) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
*  CAfile: /Users/cole.miles/zscaler.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=api2.cursor.sh
*  start date: Nov 12 00:00:00 2025 GMT
*  expire date: Dec 11 23:59:59 2026 GMT
*  subjectAltName: host "api2.cursor.sh" matched cert's "api2.cursor.sh"
*  issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M01
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://api2.cursor.sh/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: api2.cursor.sh]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> GET / HTTP/2
> Host: api2.cursor.sh
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
< HTTP/2 200
< date: Tue, 02 Dec 2025 12:12:30 GMT
< content-type: text/plain
< content-length: 137
< vary: Origin
< access-control-allow-credentials: true
< access-control-expose-headers: Grpc-Status, Grpc-Message, Grpc-Status-Details-Bin, Content-Encoding, Connect-Content-Encoding, traceparent, backend-traceparent, x-amzn-trace-id, x-request-id
<
* Connection #0 to host api2.cursor.sh left intact
Welcome to Cursor. From 20251202-060210-main-3a93dce945311ab44176592d5e54ecfff1f82e9e (gvkhr5ztewstwb7r52ak9) in 0.0032999999821186066ms.%
cole.miles@ZAMD42J0XVFJK order-service %

Confirmation of current cursor cli version:

user@ZAMF ~ % cursor-agent -v
2025.11.25-d5b3271

NOTE:

  • I have tried to use cursor cli in 2 different terminals as well as the terminal within the Cursor IDE.
  • I am logged into my corporate cursor account which is the same account I’m using in my Cursor IDE which works flawlessly.

Thanks for the detailed logs and tests. Looks like a regression - HTTP/2 stream breaks on connect to the backend, even though curl connects successfully, did the previous version work fine?

All Cursor Agent versions remain after upgrading to a new one, if you didn’t delete them manually they should all be here:

~/.local/share/cursor-agent/versions/

Just delete the latest one and the previous should work by default.

I’ll pass it on to the team.

Thanks Dean. The issue for me right now is that I do not have any previous versions of Cursor CLI installed so I am stuck until a new version that fixes this issue is released.

1 Like

@deanrie Hi dean, sorry to bother again. Just wanted to know if there is a channel I can use to monitor when a fix for this is released?

Thanks for the follow-up. There’s no public tracking for this bug - we’re handling it in an internal channel. Once the fix is released, I’ll update this thread.

1 Like

Thank you. The support is much appreciated.

@deanrie Apologies for being a pain again. I am really needing to get cursor cli running. Since this is a pretty common issue based on what I’ve seen from the forum posts, is there any way the devs can provide us with a link to manunally download the last working version until an update is released?

@deanrie Hi Dean, apologies to bother you again. I found the issue, it is nothing to do with Cursor or the latest version, it was a ZScaler config issue.

You can inform the team that this issue is no longer valid. Thank you for your time and effort.

1 Like