Check the forum to ensure the issue hasn’t been reported already
Cannot find solution
Provide a clear description of the bug
First, I am doing remote server development behind corporate firewall. Usually I log into Cursor through my corporate Macbook and ssh into the linux server. Up to Wednesday, after setting the proxy and disable http2 request, I am able to do development using agent mode.
However, on Wednesday afternoon, the index stop working, and cannot be fixed by any means. The codebase indexing consistent stuck at setting up indexing and handshake failure.
Explain how to reproduce the bug (if known)
It stops working itself.
Attach screenshots or recordings (e.g.,
.jpg
, .png
, .mp4
).
Here is the log"
2025-04-27 18:49:58.269 [info] Creating Indexing Repo client: https://repo42.cursor.sh
2025-04-27 18:49:58.269 [info] Creating repo client with backend url: https://api2.cursor.sh
2025-04-27 18:50:17.500 [info] Creating Indexing Repo client: https://repo42.cursor.sh
2025-04-27 18:50:17.500 [info] Creating repo client with backend url: https://api2.cursor.sh
2025-04-27 18:50:21.704 [warning] Retrying handshake with timeout 128000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:50:21.705 [error] Handshake failed:
2025-04-27 18:50:21.705 [error] Error: timeout in handshake with retry
at A.RepoClientMultiplexer.tryHandshake (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1377017)
at async A.RepoClientMultiplexer.handshakeWithRetry (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1374638)
at async T.getServerStatus (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1386938)
at async T.startIndexingRepository (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1388545)
2025-04-27 18:50:21.706 [error] Handshake failed.
2025-04-27 18:50:21.706 [info] Indexing job successfully done or aborted.
2025-04-27 18:53:00.977 [error] Git command failed: git rev-parse --show-toplevel Command failed: git rev-parse --show-toplevel
fatal: not a git repository (or any of the parent directories): .git
2025-04-27 18:53:13.678 [info] multiCodebaseIndexingJob dispose
2025-04-27 18:53:13.678 [info] Aborting indexing job.
2025-04-27 18:53:13.678 [info] Doing a startup handshake.
2025-04-27 18:53:13.945 [info] Finished computing merkle tree in 164.46655700000701 ms.
2025-04-27 18:53:13.947 [info] Doing the initial handshake with hash: 3bb97679a1c5df3e8ef6d7450e4c31b19fef264f93d3866eec2d9b7de1ef01ea
2025-04-27 18:53:13.951 [info] Computed simhash vector of length: 256
2025-04-27 18:53:13.951 [info] Path key hash: 5fb463aeef14637efb12e466a197ad6cd4b20efb06264f673389ff1c27a6f8c0
2025-04-27 18:53:13.951 [info] Handshake start
2025-04-27 18:53:16.040 [warning] Retrying handshake with timeout 4000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:53:16.040 [info] Handshake start
2025-04-27 18:53:20.125 [warning] Retrying handshake with timeout 8000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:53:20.125 [info] Handshake start
2025-04-27 18:53:28.228 [warning] Retrying handshake with timeout 16000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:53:28.228 [info] Handshake start
2025-04-27 18:53:44.359 [warning] Retrying handshake with timeout 32000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:53:44.359 [info] Handshake start
2025-04-27 18:54:16.513 [warning] Retrying handshake with timeout 64000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:54:16.513 [info] Handshake start
2025-04-27 18:55:20.665 [warning] Retrying handshake with timeout 128000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:55:20.665 [error] Handshake failed:
2025-04-27 18:55:20.665 [error] Error: timeout in handshake with retry
at A.RepoClientMultiplexer.tryHandshake (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1377017)
at async A.RepoClientMultiplexer.handshakeWithRetry (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1374638)
at async T.getServerStatus (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1386938)
at async T.startIndexingRepository (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1388545)
2025-04-27 18:55:20.666 [error] Handshake failed.
2025-04-27 18:55:20.666 [info] Indexing job successfully done or aborted.
2025-04-27 18:58:00.905 [error] Git command failed: git log --pretty=format:"%H<|ENT|><|RY|>%s<|COM|><|MIT|>" -n 10 --author="$(git config user.email || git config user.name || whoami)" Command failed: git log --pretty=format:"%H<|ENT|><|RY|>%s<|COM|><|MIT|>" -n 10 --author="$(git config user.email || git config user.name || whoami)"
fatal: not a git repository (or any of the parent directories): .git
2025-04-27 18:58:00.905 [error] Error getting user commits: Command failed: git log --pretty=format:"%H<|ENT|><|RY|>%s<|COM|><|MIT|>" -n 10 --author="$(git config user.email || git config user.name || whoami)"
fatal: not a git repository (or any of the parent directories): .git
2025-04-27 18:58:00.986 [error] Git command failed: git rev-parse --show-toplevel Command failed: git rev-parse --show-toplevel
fatal: not a git repository (or any of the parent directories): .git
2025-04-27 18:58:13.679 [info] multiCodebaseIndexingJob dispose
2025-04-27 18:58:13.679 [info] Aborting indexing job.
2025-04-27 18:58:13.679 [info] Doing a startup handshake.
2025-04-27 18:58:13.919 [info] Finished computing merkle tree in 201.07186499994714 ms.
2025-04-27 18:58:13.921 [info] Doing the initial handshake with hash: 3bb97679a1c5df3e8ef6d7450e4c31b19fef264f93d3866eec2d9b7de1ef01ea
2025-04-27 18:58:13.926 [info] Computed simhash vector of length: 256
2025-04-27 18:58:13.926 [info] Path key hash: 5fb463aeef14637efb12e466a197ad6cd4b20efb06264f673389ff1c27a6f8c0
2025-04-27 18:58:13.926 [info] Handshake start
2025-04-27 18:58:16.013 [warning] Retrying handshake with timeout 4000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:58:16.014 [info] Handshake start
2025-04-27 18:58:20.099 [warning] Retrying handshake with timeout 8000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:58:20.099 [info] Handshake start
2025-04-27 18:58:28.201 [warning] Retrying handshake with timeout 16000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:58:28.201 [info] Handshake start
2025-04-27 18:58:44.288 [warning] Retrying handshake with timeout 32000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:58:44.288 [info] Handshake start
2025-04-27 18:59:16.423 [warning] Retrying handshake with timeout 64000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 18:59:16.423 [info] Handshake start
2025-04-27 19:00:20.530 [warning] Retrying handshake with timeout 128000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:00:20.530 [error] Handshake failed:
2025-04-27 19:00:20.530 [error] Error: timeout in handshake with retry
at A.RepoClientMultiplexer.tryHandshake (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1377017)
at async A.RepoClientMultiplexer.handshakeWithRetry (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1374638)
at async T.getServerStatus (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1386938)
at async T.startIndexingRepository (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1388545)
2025-04-27 19:00:20.530 [error] Handshake failed.
2025-04-27 19:00:20.530 [info] Indexing job successfully done or aborted.
2025-04-27 19:03:00.990 [error] Git command failed: git rev-parse --show-toplevel Command failed: git rev-parse --show-toplevel
fatal: not a git repository (or any of the parent directories): .git
2025-04-27 19:03:13.678 [info] multiCodebaseIndexingJob dispose
2025-04-27 19:03:13.678 [info] Aborting indexing job.
2025-04-27 19:03:13.678 [info] Doing a startup handshake.
2025-04-27 19:03:13.934 [info] Finished computing merkle tree in 115.68912100000307 ms.
2025-04-27 19:03:13.936 [info] Doing the initial handshake with hash: 3bb97679a1c5df3e8ef6d7450e4c31b19fef264f93d3866eec2d9b7de1ef01ea
2025-04-27 19:03:13.939 [info] Computed simhash vector of length: 256
2025-04-27 19:03:13.939 [info] Path key hash: 5fb463aeef14637efb12e466a197ad6cd4b20efb06264f673389ff1c27a6f8c0
2025-04-27 19:03:13.939 [info] Handshake start
2025-04-27 19:03:16.025 [warning] Retrying handshake with timeout 4000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:03:16.025 [info] Handshake start
2025-04-27 19:03:20.127 [warning] Retrying handshake with timeout 8000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:03:20.127 [info] Handshake start
2025-04-27 19:03:28.211 [warning] Retrying handshake with timeout 16000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:03:28.211 [info] Handshake start
2025-04-27 19:03:44.368 [warning] Retrying handshake with timeout 32000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:03:44.368 [info] Handshake start
2025-04-27 19:04:16.518 [warning] Retrying handshake with timeout 64000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:04:16.519 [info] Handshake start
2025-04-27 19:05:20.670 [warning] Retrying handshake with timeout 128000. Error: [internal] self-signed certificate in certificate chain
2025-04-27 19:05:20.670 [error] Handshake failed:
2025-04-27 19:05:20.670 [error] Error: timeout in handshake with retry
at A.RepoClientMultiplexer.tryHandshake (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1377017)
at async A.RepoClientMultiplexer.handshakeWithRetry (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1374638)
at async T.getServerStatus (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1386938)
at async T.startIndexingRepository (/home/zhoqiaoh/.cursor-server/cli/servers/Stable-0781e811de386a0c5bcb07ceb259df8ff8246a50/server/extensions/cursor-retrieval/dist/main.js:2:1388545)
2025-04-27 19:05:20.670 [error] Handshake failed.
2025-04-27 19:05:20.670 [info] Indexing job successfully done or aborted.
I tried to curl the two address:
curl -v https://repo42.cursor.sh
* Uses proxy env variable no_proxy == 'localhost,127.0.0.1,::1'
* Uses proxy env variable https_proxy == 'http://■■■.■■■.proxy:8080/'
* Host ■■■.■■■.proxy:8080 was resolved.
* IPv6: (none)
* IPv4: ■■.■■.X.■■, ■■.■■.■■.■■
* Trying ■■.■■.X.■■:8080...
* Connected to ■■■.■■■.proxy (■■.■■.X.■■) port 8080
* CONNECT tunnel: HTTP/1.1 negotiated
* allocate connect buffer
* Establish HTTP proxy tunnel to repo42.cursor.sh:443
> CONNECT repo42.cursor.sh:443 HTTP/1.1
> Host: repo42.cursor.sh:443
> User-Agent: curl/8.5.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 Connection Established
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /usr/lib/ssl/cert.pem
* CApath: /usr/lib/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519 / RSASSA-PSS
* ALPN: server accepted h2
* Server certificate:
* subject: CN=repo42.cursor.sh
* start date: Mar 6 00:00:00 2025 GMT
* expire date: Apr 5 23:59:59 2026 GMT
* subjectAltName: host "repo42.cursor.sh" matched cert's "repo42.cursor.sh"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M02
* SSL certificate verify ok.
* Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* Certificate level 2: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://repo42.cursor.sh/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: repo42.cursor.sh]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.5.0]
* [HTTP/2] [1] [accept: */*]
> GET / HTTP/2
> Host: repo42.cursor.sh
> User-Agent: curl/8.5.0
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 404
< server: awselb/2.0
< date: Sun, 27 Apr 2025 23:01:28 GMT
< content-type: text/plain; charset=utf-8
< content-length: 31
<
* Connection #0 to host ■■■.■■■.proxy left intact
and
curl -v https://api2.cursor.sh
* Uses proxy env variable no_proxy == 'localhost,127.0.0.1,::1'
* Uses proxy env variable https_proxy == 'http://■■■.■■■.proxy:8080/'
* Host ■■■.■■■.proxy:8080 was resolved.
* IPv6: (none)
* IPv4: ■■.■■.■■■.■■, ■■.■■.X.■■
* Trying ■■.■■.■■■.X:8080...
* Connected toXXX.■■■.proxy (■■.■■.■■■.■■■) port 8080
* CONNECT tunnel: HTTP/1.1 negotiated
* allocate connect buffer
* Establish HTTP proxy tunnel to api2.cursor.sh:443
> CONNECT api2.cursor.sh:443 HTTP/1.1
> Host: api2.cursor.sh:443
> User-Agent: curl/8.5.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 Connection Established
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /usr/lib/ssl/cert.pem
* CApath: /usr/lib/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: self-signed certificate in certificate chain
* Closing connection
curl: (60) SSL certificate problem: self-signed certificate in certificate chain
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
It seems the problem happen from the second address. The first one has correct Certificate but not the second one.
Tell us your operating system and your Cursor version (e.g.,
Windows, 0.x.x
).
Version: 0.49.6 (Universal)
VSCode Version: 1.96.2
Commit: 0781e811de386a0c5bcb07ceb259df8ff8246a50
Date: 2025-04-25T04:39:09.213Z
Electron: 34.3.4
Chromium: 132.0.6834.210
Node.js: 20.18.3
V8: 13.2.152.41-electron.0
OS: Darwin arm64 24.4.0
Tell us if the issue stops you from using Cursor.
It’s been almost a week, my last post about the issue has no response. If the problem doesn’t get fixed I will probably go back to copilot