Code change:
From version 1.80 onwards, we've been getting CI failures when testing our vscode extension with this error message: "Error while encrypting the text provided to safeStorage.encryptString. Encryption is not available." I suspect this is related to the move off keytar described in the release notes of 1.80 and here For the purposes of testing our extension, we pass additional launchArgs to VSCode, notably . As I understand it, this instructs VSCode to use some sort of in memory keytar so that the secrets are not actually persisted to disk? This is the desired behaviour for us so that no secrets persist after the the test suite concludes. This has been working well until now, and based on a quick search for on GitHub, it seems like a popular approach when testing VSCode extensions. Notably this only seems to happen in our linux CI. Mac and Windows continue to work without a problem (as also demonstrated below) <!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: , Same issue happens on 1.80.1 OS Version: Ubuntu 22.04.2 Steps to Reproduce: I've created a minimal repro here: The line that ends up resulting in the error: GitHub Actions Build showing the error: PR demonstrating no errors happened on :
When encryption isn't available, we use an in-memory store instead so I think the current behavior should give you the desired behavior, no? Or does it actually throw instead and cause the extension to not function?
Yeah exactly, it just throws right now (on linux). Same code works without issue on 1.79
I think this is because you see a dialog in the product to ask you to do something. I need to make that dialog non-blocking. In the meantime, you can do this: And configure basic text encryption which is fine because the container will be destroyed after.
Thanks! I to the launchArgs, but seem to be getting the same error:
I think maybe you want not . I just tried on my Ubuntu machine and worked.
FYI I have opened to track allowing an in memory secret storage. If we get you unblocked with I'll dupe this to that.
thanks for continuing to look into this! I applied your suggestion ( without the quotes) but looks like on GitHub Actions (ubuntu) it still results in the same issue:
it should be instead of in , without that will not be called and causes the above error to be thrown.
Setting seems to do the trick for me – thank you!
FYI, I will change it to be to align with what Electron actually accepts.

Related discussion:
text: @ILogService private readonly logService: ILogService ) { // if this commandLine switch is set, the user has opted in to using basic text encryption <del> if (app.commandLine.getSwitchValue('password-store') === 'basic_text') { </del> <ins> if (app.commandLine.getSwitchValue('password-store') === PasswordStoreCLIOption.basic) { </ins> safeStorage.setUsePlainTextEncryption?.(true); } }