Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
Cursor appears to have a severe connection lifecycle management issue, resulting in massive TCP socket leaks (Zombie Connections). In an enterprise environment, this behavior exhausts the stateful firewall’s session tables (e.g., Sangfor AC), generating over 20,000 ESTABLISHED sessions from a single client IP within a few days.
Steps to Reproduce
Launch Cursor and actively use AI features (e.g., Copilot++, Chat, or Codebase Indexing) to establish multiple HTTPS connections to *.cursor.sh endpoints.
Simulate a sudden network disruption or state change. You can do this by abruptly toggling the Wi-Fi off and on, or by forcing the macOS to sleep and immediately waking it up.
Run a network capture tool (e.g., sudo tcpdump -i en0 -nn ‘tcp port 443’) or monitor the sockets via nettop.
Observe the abandoned TCP streams. You will notice that Cursor’s underlying Node.js/Electron network module fails to catch the exception or timeout.
Crucial observation: The application never issues a [FIN] or [RST] packet to tear down the dead socket. Instead, the socket leaks and is kept artificially alive purely by OS-level [TCP Keep-Alive] probes, remaining stuck in the ESTABLISHED state indefinitely.
Expected Behavior
Graceful Teardown: When a network request times out, fails due to jitter, or when the underlying microservice panics, Cursor’s network client must explicitly invoke socket.close() or .destroy() to ensure the OS sends a [FIN] or [RST] packet to the server.
Timeout Handling: The application should implement strict application-level timeouts for its API calls, rather than relying indefinitely on the OS’s TCP stack.
Firewall Friendly: Dead connections should not be left hanging. Properly tearing down dead sockets prevents “Zombie Connections” from accumulating and exhausting the session tables of enterprise stateful firewalls (which often hold ESTABLISHED connections for hours or days).
Operating System
MacOS
Version Information
Version: 3.1.15
VSCode Version: 1.105.1
Commit: 3a67af7b780e0bfc8d32aefa96b8ff1cb8817f80
Date: 2026-04-15T01:46:06.515Z
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 25.4.0
For AI issues: which model did you use?
N/A - Transport Layer Issue. > This is an underlying network module defect (TCP socket leak) in the Electron/Node.js client, independent of the specific AI model. However, the connection bursts were frequently observed while using Claude 3.5 Sonnet and Cursor Tab.
For AI issues: add Request ID with privacy disabled
N/a
Additional Information
N/A. > This is a cumulative connection lifecycle issue (missing FIN/RST packets), not an error with a specific AI generation request. Therefore, a single Request ID is not applicable. Please refer to the attached PCAP files and Wireshark screenshots for network-level evidence of the zombie connections.
Does this stop you from using Cursor
No - Cursor works, but with this issue
