Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
I’m running Cursor on macOS behind a corporate TLS-inspecting proxy that re-signs HTTPS with a custom root CA. Cursor’s updater service reports the proxy-signed certificate as unrecognized in the diagnostics output, even though the CA is trusted system-wide and every other tool on the machine (including curl) recognizes and accepts the cert without extra configuration. The rest of Cursor works normally — this is scoped to the updater.
To be clear: this is not a TLS handshake failure. The cert is valid and signed by a CA that’s explicitly trusted in the macOS System keychain. The updater simply doesn’t recognize the cert as one it trusts and flags it in diagnostics.
What I’ve already done:
- Installed the custom root CA in my macOS System keychain and explicitly marked it “Always Trust.” curl and every other tool on the
machine recognize the cert without extra flags. - Launched Cursor from the terminal with every env var I could find documented:
NODE_REJECT_UNAUTHORIZED=0 \
NODE_EXTRA_CA_CERTS=/path/to/root-ca.pem
cursor - Tried these individually and in combination. Diagnostics still flag the cert as unrecognized.
- Already have these in Cursor settings:
“http.experimental.systemCertificatesV2”: true,
“cursor.general.disableHttp2”: true,
“cursor.general.disableHttp1SSE”: true
Expected behavior:
The updater should recognize certificates signed by CAs in the system keychain, just like the rest of macOS does by default and like other Cursor subsystems appear to. Failing that, NODE_EXTRA_CA_CERTS should provide a supported escape hatch. http.experimental.systemCertificatesV2: true strongly implies the OS trust store is supposed to be consulted.
Actual behavior:
Diagnostics report the proxy-signed cert as unrecognized by the updater. Behavior is identical with or without any of the env vars above. The rest of Cursor (chat, Tab, etc.) works fine against the same proxy, which suggests the updater uses a separate code path that isn’t consulting the same trust sources.
What I suspect is going on:
- http.experimental.systemCertificatesV2 appears to cover some Cursor subsystems but not the updater.
- The updater likely makes its HTTPS call through a code path that doesn’t consult NODE_EXTRA_CA_CERTS or the system keychain, so any CA
the proxy re-signs with is unknown to that path regardless of how it’s installed. - cursor.general.disableHttp2 / disableHttp1SSE exist because Cursor has clearly hit MITM-proxy issues before, but they don’t change this
behavior.
Ask:
- Is there a supported way to get the updater to recognize a custom root CA on macOS, short of NODE_REJECT_UNAUTHORIZED=0?
- If not, can we get a first-class setting for this — e.g. cursor.tls.customCACerts: [“/path/to/ca.pem”], or a ~/.cursor/ca-certs/
directory that Cursor loads on startup? Working from behind a TLS-inspecting proxy is table stakes for most enterprise environments. - Is systemCertificatesV2 expected to cover the updater path, or is that a known gap?
Steps to Reproduce
- Set up a TLS-inspecting HTTPS proxy that re-signs traffic with a custom root CA (e.g. mitmproxy, Zscaler, or any corporate
SSL-inspection gateway). - On a clean macOS machine, route traffic through that proxy.
- Export the proxy’s root CA as a .pem file.
- Import the CA into the macOS System keychain via Keychain Access and set it to “Always Trust.”
- Verify trust outside Cursor: curl -v https:// succeeds with no extra flags and shows the proxy-signed cert chain.
- Open Cursor and add the following to settings.json:
“http.experimental.systemCertificatesV2”: true,
“cursor.general.disableHttp2”: true,
“cursor.general.disableHttp1SSE”: true - Fully quit Cursor (Cmd+Q, not just close the window).
- Relaunch Cursor from a terminal with:
NODE_REJECT_UNAUTHORIZED=0
NODE_EXTRA_CA_CERTS=/path/to/root-ca.pem \
cursor - Let the updater run (or trigger a check for updates from the menu) and open Cursor’s diagnostics.
- Observe: diagnostics flag the proxy-signed certificate as unrecognized by the updater, even though curl to the same endpoint from the same shell accepts it and the rest of Cursor works normally.
Expected Behavior
Expected: Updater recognizes the cert, since the CA is trusted system-wide and NODE_EXTRA_CA_CERTS is set.
Actual: Diagnostics list the updater’s cert as unrecognized.
Operating System
MacOS
Version Information
Version: 3.1.17 (Universal)
VSCode Version: 1.105.1
Commit: fce1e9ab7844f9ea35793da01e634aa7e50bce90
Date: 2026-04-19T19:33:58.189Z
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.2.0
Does this stop you from using Cursor
Sometimes - I can sometimes use Cursor
