Files
leookun 2f47f02497 chore(cursor-proxy-debugger): enhance traffic capture for Fork Chat and update README
- Added support for capturing and decoding Fork Chat traffic, including `ForkBackgroundComposer`, `NotifyConversationClone`, and `UploadConversationBlobs`.
- Updated the README to reflect new features and usage instructions for Fork Chat traffic.
- Modified `.gitignore` to include `proto/extensions-cursor-app/`.
- Refactored `Taskfile.yml` to improve error messages related to Cursor extensions.
- Introduced new tests for decoding functionality in `cursor-proxy-debugger`.
2026-08-05 01:17:01 +08:00
..

Cursor Protocol Debugger

中文 | English

This standalone local HTTPS debugging proxy captures Cursor's BidiAppend, RunSSE, and Fork Chat traffic. It does not modify Cursor, the system proxy, or the installed client.

Start

Run the following command from the repository root:

go run ./cmd/cursor-proxy-debugger

Default addresses:

  • HTTP/HTTPS proxy: 127.0.0.1:9090
  • Debugging UI: http://127.0.0.1:9091
  • MITM target: api2.cursor.sh

The debugging UI opens automatically after startup.

Configure Cursor

The tool does not modify Cursor automatically. After starting it, configure Cursor manually:

  1. Open Cursor's proxy settings and set the proxy to the address printed by the tool. The default is http://127.0.0.1:9090.
  2. Open Cursor's Network settings and enable HTTP/1.1.
  3. Download the proxy CA certificate from http://127.0.0.1:9091/api/ca.crt and make sure Cursor trusts it.

Restore the original Cursor proxy and Network settings after debugging to avoid affecting normal network requests.

Build

go build -o bin/cursor-proxy-debugger ./cmd/cursor-proxy-debugger

Options

-proxy-addr       Proxy listen address; default: 127.0.0.1:9090
-ui-addr          Debugging UI listen address; default: 127.0.0.1:9091
-target-host      Host to decrypt and capture; default: api2.cursor.sh
-max-exchanges    Maximum number of exchanges retained in memory; default: 200
-open             Open the browser after startup; default: true

Data Handling

  • HTTPS MITM is applied only to target-host; other CONNECT traffic passes through unchanged.
  • RunSSE is decoded incrementally using the 5-byte Connect frame header and supports per-frame gzip decompression.
  • BidiAppendRequest.data is further decoded as agent.v1.AgentClientMessage.
  • Fork Chat's ForkBackgroundComposer, NotifyConversationClone, and UploadConversationBlobs traffic is decoded bidirectionally as protobuf JSON.
  • Local Fork Chat is primarily client-side and only emits NotifyConversationClone and UploadConversationBlobs when clone blob synchronization is enabled and privacy settings allow it.
  • Requests can be sorted chronologically or in reverse chronological order and filtered by protocol request_id.
  • The UI supports Simplified Chinese and English, follows the browser language, and remembers a manual selection.
  • Captured traffic is stored only in process memory and is discarded when the process exits.
  • Sensitive HTTP headers such as Authorization, Cookie, and Set-Cookie are hidden in the UI by default.
  • Raw bodies are retained up to 2 MiB per side by default; forwarded traffic is never truncated.