calva 2025-12-09

sorry if this is common, can’t find it in the history but I’m getting a notification in Cursor that it can’t download the clojure-lsp package: “Failed to download clojure-lsp server. Error: Error downloading clojure-lsp, version: 2025.11.28-12.47.43, from https://github.com/clojure-lsp/clojure-lsp/releases/download/2025.11.28-12.47.43/clojure-lsp-native-macos-aarch64.zip”

I see this now and then. Don’t remember if we ever have filed an issue about it. Please check if the download succeeds when you do Developer: Reload Window.

Calva probably should have a exponential retry logic since network can affect that

is it possible this is causing it or is this the symptom? 2025-12-09 12:12:10.417 [error] [Window] [Extension Host] Could not read clojure-lsp version file. ENOENT: no such file or directory, open ‘/Users/dyang/.cursor/extensions/betterthantomorrow.calva-2.0.541-universal/clojure-lsp-version’

I tried the Developer Reload Window and had the same notification

try rm -rf /Users/dyang/.cursor/extensions/betterthantomorrow.calva-2.0.541-universal/clojure-lsp* and reload window

this is from the Output -> Window log

no luck - deleted the whole /Users/dyang/.cursor/extensions/betterthantomorrow.calva-2.0.541-universal/ directory and reinstalled extension and then reloaded window

Agree, @ericdallo. I have held back on adding that because of this bug that I have never figured out. Once we do the right things, I think exponential backoff would be great.

👍 1

is it possible Microsoft/Github is doing something weird with Cursor (maybe Cursor sends a User-Agent and they’re starting to reject it or something)?

“This bug*. I am actually not sure that David is experiencing the bug I see now and then. Sounds more persistent!

I don’t think they fight this battle using such tricks. 😃

☝️ 1

yeah VS Code seems to start up fine and downloda the clojure-lsp so I don’t think it’s a network config issue. Where is this notification dialog coming from? I don’t see it in any of the Output windows

I now tried with Cursor. First had version 2.0.77, and then after update I had 2.1.50. My first attempt I got the download error. Reloading the window, the download worked fine. Then full restart, because of the update, the download worked fine again. Do you have many windows open? I don’t in Cursor, but in VS Code proper I have tons of them, and maybe it is that they stomp on each other…

That would explain why I see it at restart, but a single window reload works.

Then again, reload didn’t work for you…

I don’t have many in Cursor, closing the Cursor app and then reloading it gets me back to the error

maybe I’ll try reinstalling cursor - I’m doing some funny stuff with symlinks for Cursor’s settings to sync it between two machines

man - reinstall, got rid of settings (.cursor) - still getting that download error - any other ideas?

can I download it manually and put it in the extensions folder?

You can configure calva to point to a downloaded clojure-lsp

Pick what VS Code downloads and place it in the Cursor folder. If you include the version file I think you should be good.

And like Eric says, you can also configure a path and manage the download yourself. But that’s boring. 😃

Check in the developer console if you can see some error thrown there that could shed some light on the situation.

Also, I think Copilot is pretty awesome. I wonder if Cursor really can hold a candle to it these days.

looks like this: [Extension Host] Error downloading file from [object Object]: unable to get issuer certificate

Unable to get issuer certificate. What on earth could that mean? …

(I don't mean to hijack this thread but... what does Cursor give you that VS Code + Copilot doesn't these days?)

I still use the Cursor AI sidebar and have some muscle memory for it, but last week or so have been mostly using Opus 4.5

havent’ tried the new VSCode Copilot - I do’n’t love the autocomplete, I’m more of a chat with it kinda guy

I run with AI autocomplete disabled.

I use the AI completion on demand, with a keybinding. But lately I have been trying it on auto a bit, because they started to work on improving it, and I must say I am considering to use it more often. Especially the next edit suggestions are very good.

I'm still mostly using Sonnet 4 but VS Code / Copilot gives me access to all of these (as part of the $19/month Copilot sub):

With the same sub you also get Codex (not just the models). It is pretty awesome. I use it to review code and then give the reviews to Opus 4.5 to work on. 😃

alright, I guess until I figure out this clojure-lsp thing I have to switch back to VS Code 🙂

😂 1

I use NES a lot. I haven't figured out good keyboard shortcuts for it that don't clash with Calva / paredit tho'... I'm on the fence about completions -- they've definitely improved.

what’s confusing to me is that that error is saying, looking in the source of calva it looks like it should give me a different error

You mean the error popping up?

@seancorfield I use ctrl+right and alt´right. They seem to win over Paredit when there are suggestions to commit.

giving it a path to clojure-lsp works (though I have to go through the Privacy etc. to make it runnable)

yeah,I see the error in the popup but I don’t see where in the Output window it would be

Interesting. I don’t think I’ve needed to do any Privacy stuff. Don’t know what it is even. 😃 Maybe we’re on different OSs.

Calva never logs to that Window output channel. Except maybe by proxy.

Longshot. See if setting the clojure-lsp version to nightly makes a difference.

I asked the AI about the problem and it made this analysis: > • The [object Object] part of the log is coming from fetchFromUrl in src/utilities.ts (uses the url module object in the template string). That means the failure happened in the “fetch JSON” or “download file” path that calls our HTTPS helper. > • The underlying error unable to get issuer certificate is a TLS trust problem: the Node/Electron HTTPS client in the Cursor extension host does not trust the certificate chain it sees when hitting GitHub. This is typical when traffic is MITM’d by a corporate proxy or when the host’s root CAs differ. > • Why it only hits Cursor and not VS Code: Cursor ships its own Electron/Node build and may be using a different CA bundle or TLS defaults than VS Code’s. Our downloader also does not honor VS Code’s http.proxyStrictSSL/custom CA settings, so if the user lowered strict SSL or configured a proxy in VS Code, that isn’t reflected in our follow-redirects requests. Cursor might additionally be running with sandboxed cert access, so the system root CA isn’t being picked up. > • The error fires before the artifact download completes—either when calling GitHub releases API (getLatestVersion via util.fetchFromUrl) or during the actual artifact https.get. Both use the same HTTPS stack, so a TLS trust failure anywhere would abort the process. > • Likely scenarios: (1) corporate proxy inserting a cert not trusted by Cursor’s Node; VS Code may be using a different cert store or respecting http.proxy settings that we ignore; (2) missing intermediate CA in Cursor’s trust store; (3) custom CA available via NODE_EXTRA_CA_CERTS in VS Code but not in Cursor. > > What to ask/try to confirm: > 1. From Cursor’s DevTools console, print process.versions (especially node and electron) and process.env.NODE_EXTRA_CA_CERTS. > 2. Check whether the user has http.proxy/http.proxyStrictSSL configured in settings; VS Code may have those disabled while our code ignores them, causing stricter TLS in Cursor. > 3. From Cursor’s extension host (DevTools), try require(‘https’).get(‘https://github.com’, res => console.log(res.statusCode)).on(‘error’, console.error); to see if plain TLS works. > 4. Ask if they’re behind Zscaler/Corp proxy and whether GitHub downloads work in a plain Node REPL outside Cursor. > 5. If they can set NODE_EXTRA_CA_CERTS to the corporate root and restart Cursor, see if the error disappears—this would confirm a trust-store mismatch. It seems we can make the downloader more robust in the face of corporate proxies and such, but before we go that way, I’d like to understand if the analysis is anywhere near the problem we see. I*ve made a small fix to the logging, so that we don’t print [object Object], but instead the URL that fails. It’s on dev and you can either build it yourself, or pick up the VSIX here: • https://app.circleci.com/pipelines/github/BetterThanTomorrow/calva/9221/workflows/ab7466b6-c5a4-4741-9bcd-41010eb7a0c8/jobs/53926/artifacts Not sure it is worth it, it is just an URL. But anyway. Maybe it is the version check that fails even.

👍 1

thanks @pez - I’m on a pretty traditional network so I don’t think anything funny is going on, I saw some other similar concerns with expired certs in the Keychain but I checked that problem and don’t see any. I don’t want to take more of your time if this is something random since I can use a separateinly installed clojure-lsp… I tried the extension but am not seeing anything in the Calva says Output wdinow. Is there somewhere else I’m supposed to be looking?

Even before I was seeing this as a popup window in the lower right: Failed to download clojure-lsp server. Error: Error downloading clojure-lsp, version: 2025.11.28-12.47.43, from https://github.com/clojure-lsp/clojure-lsp/releases/download/2025.11.28-12.47.43/clojure-lsp-native-macos-aarch64.zip

but that link works fine.

The console.log’s in downloadClojureLsp, where would they be?

Those are in the developer console (which you checked earlier and found [Extension Host] Error downloading file from [object Object]: unable to get issuer certificate).

You are absolutely not taking up my time, @david.g.yang. It’s great that you have workarounds, but I worry about all people who run into this and do not find their way here to get help. Even if we don’t solve this mystery I think we can provide better help. Like providing the link to download and inform about the hardcoded config option. Please file an issue about this. One of these days I’ll find some time to improve the Ux (or someone else will, findable issues are good like that).

I see this:

workbench.desktop.main.js:8917 Failed to download clojure-lsp server. Error: Error downloading clojure-lsp, version: 2025.11.28-12.47.43, from 
onDidChangeNotification	@	workbench.desktop.main.js:8917
(anonymous)	@	workbench.desktop.main.js:8917
_deliver	@	workbench.desktop.main.js:49
_deliverQueue	@	workbench.desktop.main.js:49
fire	@	workbench.desktop.main.js:49
addNotification	@	workbench.desktop.main.js:7023
notify	@	workbench.desktop.main.js:7023
(anonymous)	@	workbench.desktop.main.js:6392
_showMessage	@	workbench.desktop.main.js:6392
$showMessage	@	workbench.desktop.main.js:6392
_doInvokeHandler	@	workbench.desktop.main.js:7026
_invokeHandler	@	workbench.desktop.main.js:7026
_receiveRequest	@	workbench.desktop.main.js:7026
_receiveOneMessage	@	workbench.desktop.main.js:7026
(anonymous)	@	workbench.desktop.main.js:7026
_deliver	@	workbench.desktop.main.js:49
fire	@	workbench.desktop.main.js:49
fire	@	workbench.desktop.main.js:6394
(anonymous)	@	workbench.desktop.main.js:8973
but I don’t see that “Failed to download” message anywhere in the calva opensource repo

The link is downloadable for me from the network and I don’t think I have any firewalls on my machine or special certs installed for github

Strange. I wonder if Cursor may be sending vscode.window.showErrorMessage stuff to the console.

VS Code also downloads the link, so the AI may be right that something about how Cursor wires things up is involved. Or the binaries somehow have different environments. Or something.