Cursor app cannot connect on SFR hotspot (web works)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Cursor desktop app cannot connect on SFR hotspot (France).
It works on my home Wi-Fi.
Issue is reproducible every time on SFR hotspot.
Switching HTTP/1.1 did not help.
Cloudflare WARP did not help.
Please advise required network endpoints and debug steps.

Steps to Reproduce

  1. Connect Mac to SFR hotspot.
  2. Open Cursor desktop app.
  3. Cursor cannot connect.
  4. Switch to home Wi-Fi.
  5. Cursor works normally.

Expected Behavior

Cursor should connect on SFR hotspot the same way it connects on home Wi-Fi

Operating System

MacOS

Version Information

Cursor IDE desktop app on macOS.
Issue is reproducible on SFR hotspot (France) and does not occur on home Wi-Fi.
HTTP/1.1 mode did not fix it. Cloudflare WARP did not fix it.

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Additional context:

I found a similar report here:

In my case, the issue still happens on SFR hotspot even after:

  • switching Cursor to HTTP/1.1
  • trying Cloudflare WARP

Home Wi-Fi works normally.
If useful, I can provide more diagnostics/logs.

Hey, this is almost certainly the SFR hotspot blocking or filtering the traffic Cursor needs to connect, like gRPC or HTTP/2 streaming. SFR hotspots are known for restrictive network policies like port blocking, deep packet inspection, and transparent proxies.

A few things to try:

  1. Run Cursor’s network diagnostics: Cursor Settings > Network > Run Diagnostics. Share the results here. It’ll show exactly where the connection breaks.

  2. Try these curl tests from the SFR hotspot to narrow it down:

    # 1. Basic connectivity test to the Cursor API
    curl -I -v https://api2.cursor.sh
    
    # 2. HTTP/2 test (if this fails, it points to an HTTP/2 issue)
    curl -I --http2 -v https://api2.cursor.sh
    
    # 3. Force HTTP/1.1
    curl -I --http1.1 -v https://api2.cursor.sh
    
    # 4. Check the TLS certificate
    openssl s_client -connect api2.cursor.sh:443 -servername api2.cursor.sh < /dev/null 2>&1 | grep -A2 "subject="
    
  3. Use a real VPN, not just WARP. Cloudflare WARP in free mode may only proxy DNS and may not tunnel all your traffic. You need a full VPN, like Mullvad, ProtonVPN, or WARP+ in full tunnel mode, to bypass SFR filtering.

If the HTTP/1.1 toggle didn’t help, it could be because some internal Cursor components still use HTTP/2 no matter that setting. That’s a known limitation we’re tracking.

Let me know the diagnostics results and whether a full VPN helps.

Hi Cursor Support,

I’m seeing a paradoxical connectivity issue on my MacBook Pro when using my SFR hotspot (and sometimes hospital Wi-Fi): Cursor appears unable to connect/sign in, but Network Diagnostics shows all checks as Success.

What I tested:

  • Cursor Run Diagnostics (while on SFR hotspot, during the issue):

    • DNS: Success

    • HTTP/2: Success

    • SSL: Success

    • API / Ping / Chat / Agent: Success

    • Authentication / Marketplace / Agent endpoint / Codebase indexing: Success

  • Terminal tests on the same network:

    • curl -I -v https://api2.cursor.sh → HTTP/2 200

    • curl -I --http2 -v https://api2.cursor.sh → HTTP/2 200

    • curl -I --http1.1 -v https://api2.cursor.sh → HTTP/1.1 200

  • VPN tests: with my VPN enabled, behavior is not better; in some cases Cursor is also blocked even on personal Wi-Fi.

So transport-level connectivity seems fine, but Cursor UI/session still fails to connect.
Could this be a client-side auth/session state issue or a known bug where diagnostics pass but app connection still fails?

I can provide the full diagnostics logs if needed.

Hey, this is an interesting update. If diagnostics and curl both pass, then the SFR hotspot isn’t actually blocking traffic. That changes the picture.

A few things I need from you to narrow this down:

  1. What exactly does the Cursor UI show when it “fails to connect”? A screenshot of the error would really help.

  2. Open Help > Developer Tools, reproduce the issue, and share what shows up in the Console tab. That’ll tell us what’s actually failing at the app level.

  3. What Cursor version are you on? (Cursor > About Cursor > Copy)

  4. You mentioned VPN also breaks things on personal Wi‑Fi now. Does Cursor work reliably on home Wi‑Fi without VPN? This matters because if it’s also failing at home now, it may be a session or auth issue rather than a network one.

Also, try this to rule out a stale session:

  • Cursor Settings > sign out completely
  • Quit Cursor fully Cmd+Q
  • Reopen and sign back in

Let me know what you find.

Hi, thanks for your follow-up.
Here are the requested items point by point.

1) What Cursor UI shows when it fails to connect

When the issue happens, Cursor shows it cannot establish/maintain the remote connection (connection attempt then failure/close).
I attached a screenshot of the failure state and a screenshot of DevTools Console during reproduction.

2) DevTools Console findings (Help > Developer Tools > Console)

During reproduction, I consistently see app-level errors including:

  • socket errors / socket close events

  • Extension host stack traces

  • unhandled/rejected promise entries

  • InvalidStateError: lock request could not be registered

  • “Error getting cursor error”

This suggests a Cursor app/extension-host/socket path failure, not a basic internet outage.

3) Cursor version info

Version: 2.6.19
VSCode Version: 1.105.1
Commit: 224838f96445be37e3db643a163a817c15b36060
Date: 2026-03-12T04:07:27.435Z
Build Type: Stable
Release Track: Default
Electron: 39.4.0
Chromium: 142.0.7444.265
Node.js: 22.22.0
V8: 14.2.231.22-electron.0
OS: Darwin arm64 24.6.0

4) Network/VPN matrix (important)

  • Home Wi-Fi (SFR local) without VPN: works reliably

  • Home Wi-Fi with VPN: blocked

  • SFR hotspot without VPN: blocked

  • SFR hotspot with VPN: blocked

  • Non-Cursor diagnostics and curl tests pass

So connectivity at raw network level appears available, while Cursor app path fails in specific contexts.

5) Full sign-out + Cmd+Q + sign-in test

I performed:

  • Sign out from Cursor

  • Quit app fully (Cmd+Q)

  • Reopen and sign in again

  • Re-test in failing context

Result: still blocked in failing contexts (SFR hotspot; and VPN-enabled scenario).

6) Request for next diagnostic steps

Given the above, could you please tell me exactly which logs you want next and the preferred export method, e.g.:

  • renderer logs

  • extension host logs

  • net logs/socket logs

  • auth/session logs

I can provide them immediately.

Thanks for such a thorough follow-up. The screenshot and console logs are super helpful.

From the screenshot, I can see you’re using Remote-SSH to connect to an Ubuntu server at 51.75.124.82. That’s the key detail. The issue isn’t Cursor failing to reach our API. That’s what the diagnostics test checks, and it passes. The issue is that the SSH tunnel to your remote server is dropping on those networks.

The console errors match this chain:

  1. The SSH multiplex connection drops (“remote server not configured”, “read ECONNRESET”, “Failed to ping remote server”)
  2. The remote extension host loses contact (“Extension host became UNRESPONSIVE”)
  3. Everything downstream fails (“ETIMEDOUT”, “InvalidStateError: lock()”)

That explains the weird part. Diagnostics pass because they test Mac → Cursor API directly. But your workflow breaks because it goes through the SSH tunnel.

French mobile carriers (SFR, Bouygues, Orange) often use Carrier-Grade NAT on hotspots, and that can kill idle TCP connections in as little as 5 seconds. That’s almost certainly what’s dropping your SSH tunnel.

A key test to narrow this down:

Can you keep a plain SSH session stable on the SFR hotspot? Open Terminal.app (not Cursor) and run:

ssh -v [email protected]
# once connected, leave it idle for 30+ seconds, then run a command

If that also drops, then it’s fully a network issue, not Cursor.

Either way, add this to your ~/.ssh/config:

Host 51.75.124.82
    ServerAliveInterval 4
    ServerAliveCountMax 22
    TCPKeepAlive no
    IPQoS none
  • ServerAliveInterval 4 sends keepalives every 4 seconds, since CG-NAT on French carriers can drop connections after ~5 seconds of inactivity
  • TCPKeepAlive no avoids false disconnects from packet loss, and relies on SSH keepalives instead
  • IPQoS none disables DSCP marking that some hotspots or CG-NAT setups drop or deprioritize

Also:

  • What SSH port are you using, 22 or custom? SFR is known to do DPI on some ports
  • Can you share your current SSH config for this host, including any ControlMaster, ControlPersist, ProxyJump settings?
  • Which VPN are you using? Some VPNs with split tunneling can break SSH routing even on a good network

Let me know what happens with the plain SSH test. That will tell us if this is just the network or something Cursor specific in the SSH layer.

Hi Cursor Support Team,

Quick follow-up: we successfully fixed the issue. Your diagnosis was correct — this was not API reachability, but SSH transport instability on some mobile networks (SFR hotspot / CG-NAT behavior).

What we changed:

  • Kept Cursor Remote-SSH workflow, but hardened SSH transport settings.

  • Added aggressive SSH keepalives on the client side (ServerAliveInterval, ServerAliveCountMax, TCPKeepAlive no, IPQoS none).

  • We could not use SSH on port 443 because HTTPS/Nginx already occupies IPv4:443 on the server.

  • So we moved SSH to a dedicated alternate port (2222) and updated the SSH host config accordingly.

  • On the server, we updated systemd socket listening config to include 2222 (in addition to 22), then reloaded/restarted SSH/socket units.

  • Added security hardening:

    • key-based auth only (password auth disabled),

    • fail2ban enabled for SSH on port 2222,

    • UFW limit rule on 2222.

Validation results:

  • Stable in home Wi-Fi.

  • Stable in SFR hotspot (including idle/reconnect checks).

  • Cursor Remote-SSH now reconnects and stays usable in both contexts.

Thanks again — your guidance on the SSH tunnel/network layer was exactly what unlocked the resolution.

Best regards,

Glad to hear it’s working now! Nice work setting up full hardening with fail2ban and UFW, on top of the SSH config changes.

If another user runs into similar issues on mobile carrier hotspots with CG-NAT, here’s the key takeaway:

  • Use aggressive SSH keepalives ServerAliveInterval 4, TCPKeepAlive no, IPQoS none
  • Move SSH to a different port if the carrier is doing DPI on port 22

Marking this as solved. Let us know if anything else comes up.

Thanks a lot for your help and quick diagnosis.
Confirmed resolved on our side.

Final working setup:

  • SSH keepalives: ServerAliveInterval 4, TCPKeepAlive no, IPQoS none

  • SSH moved to alternate port (2222)

  • Security hardening applied: key-only auth, fail2ban, and ufw limit on 2222

Validated in real conditions:

  • home Wi-Fi

  • SFR hotspot (office + mobility)

Your guidance about CG-NAT/mobile hotspot behavior was exactly right.

1 Like