Change:
<!-- 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/No (it's related to extensions, but I did try to turn all extensions on and off). <!-- 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: 1.74.0 OS Version: Mac Ventura 13.0.1 I am unsure how to have you reproduce this, besides perhaps adding extensions to your and seeing them marked as uninstalled (hopefully). We utilise remote development over SSH and since the new update, the extensions we install on the remote machine get . Local extensions get installed fine. When I navigate to I see the extensions there, but when opening vscode to the remote environment, I see: Having looked at the code, we think it's something to do with changes related to: I hope you can help out or guide us towards a solution, as it's affecting a lot of our users!
How are you adding those extensions that are marked as uninstalled?
We are using the CLI tools: We've been downloading the files to a directory () and then looping:
May I know if the version of code you are using to install from CLI is the latest version? After installing, may I know if there is a file called in extensions directory?
The itself has a bunch of information in it about the extensions we expect to see. Additionally: I've confirmed with other users who don't yet have 1.74 that they see the extensions we're used to seeing. Happy to provide anything else you might need!
Another thing to note, is that when we install the extensions, we use the VSCode installed on the remote machine. However, our users connect to the remote machine with their local VSCode (even though they're the same versions). When we run the script that installs the extensions on the remote machine, from the locally installed VSCode that is connected to the remote machine - the extensions show up again. So I think there's some discrepancy going on with the new VSCode update.
Update: we downgraded the vscode version (1.73.1) on the remote machine and it seems to work now (even though the local version is still 1.74).
I assume that is the path of the downloaded vsix right? - What installer is it and how did you get this? When you run this command , does the extension is getting to the file in folder or folder? Edit: As a workaround can you also add user-data-dir to the install command - and try?
May I also know why are you not using the server cli for installing extensions on server? If you use server cli then you can just do following Can you also please try this and let me know if it fixes?
This is interesting! Could you explain more for me? I'm unsure how to use/find/access the
Can you please help here to know how to get server bits
Thank you for fixing so fast! Looking forward to the next update! I'll let you know if the problem continues.
are there verification steps for this? alternatively, are you able to reproduce this on ?
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
To verify: Open any remote and install extensions in remote Make sure there is an file in the installed extensions folder and installed extensions are there. It will be generally in the following location - - If not you can find the location by opening the remote settings json and check it path.
I'm not seeing the folder: !
I think folder gets created after installing an extension.
I have several extensions installed: !
Sorry, the correct path is this -

Discussion:
import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { IUserDataProfilesService, UserDataProfilesService as BaseUserDataProfilesService, StoredUserDataProfile, StoredProfileAssociations } from 'vs/platform/userDataProfile/common/userDataProfile'; <del> export class UserDataProfilesService extends BaseUserDataProfilesService implements IUserDataProfilesService { </del> <ins> export class ServerUserDataProfilesService extends BaseUserDataProfilesService implements IUserDataProfilesService { </ins> constructor( <del> @IStateService private readonly stateService: IStateService, </del> @IUriIdentityService uriIdentityService: IUriIdentityService, <del> @INativeEnvironmentService private readonly nativeEnvironmentService: INativeEnvironmentService, </del> <ins> @INativeEnvironmentService protected readonly nativeEnvironmentService: INativeEnvironmentService, </ins> @IFileService fileService: IFileService, @ILogService logService: ILogService, ) { super(nativeEnvironmentService, fileService, uriIdentityService, logService); } <ins> protected override getDefaultProfileExtensionsLocation(): URI { return this.uriIdentityService.extUri.joinPath(URI.file(this.nativeEnvironmentService.extensionsPath).with({ scheme: this.profilesHome.scheme }), 'extensions.json'); } } export class UserDataProfilesService extends ServerUserDataProfilesService implements IUserDataProfilesService { constructor( @IStateService private readonly stateService: IStateService, @IUriIdentityService uriIdentityService: IUriIdentityService, @INativeEnvironmentService nativeEnvironmentService: INativeEnvironmentService, @IFileService fileService: IFileService, @ILogService logService: ILogService, ) { super(uriIdentityService, nativeEnvironmentService, fileService, logService); } </ins> protected override getStoredProfiles(): StoredUserDataProfile[] { return revive(this.stateService.getItem<UriDto<StoredUserDataProfile>[]>(UserDataProfilesService.PROFILES_KEY, [])); }

import { isWindows } from 'vs/base/common/platform'; import { IExtensionsScannerService } from 'vs/platform/extensionManagement/common/extensionsScannerService'; import { ExtensionsScannerService } from 'vs/server/node/extensionsScannerService'; <del> import { IUserDataProfilesService, UserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; </del> <ins> import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; </ins> import { ExtensionsProfileScannerService, IExtensionsProfileScannerService } from 'vs/platform/extensionManagement/common/extensionsProfileScannerService'; import { NullPolicyService } from 'vs/platform/policy/common/policy'; <ins> import { ServerUserDataProfilesService } from 'vs/platform/userDataProfile/node/userDataProfile'; </ins> class CliMain extends Disposable {

services.set(IUriIdentityService, uriIdentityService); // User Data Profiles <del> const userDataProfilesService = this._register(new UserDataProfilesService(environmentService, fileService, uriIdentityService, logService)); </del> <ins> const userDataProfilesService = this._register(new ServerUserDataProfilesService(uriIdentityService, environmentService, fileService, logService)); </ins> services.set(IUserDataProfilesService, userDataProfilesService); // Configuration

import { IExtensionsScannerService } from 'vs/platform/extensionManagement/common/extensionsScannerService'; import { ExtensionsScannerService } from 'vs/server/node/extensionsScannerService'; import { ExtensionsProfileScannerService, IExtensionsProfileScannerService } from 'vs/platform/extensionManagement/common/extensionsProfileScannerService'; <del> import { IUserDataProfilesService, UserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; </del> <ins> import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; </ins> import { NullPolicyService } from 'vs/platform/policy/common/policy'; import { OneDataSystemAppender } from 'vs/platform/telemetry/node/1dsAppender'; import { LoggerService } from 'vs/platform/log/node/loggerService'; import { URI } from 'vs/base/common/uri'; import { BufferLogService } from 'vs/platform/log/common/bufferLog'; <ins> import { ServerUserDataProfilesService } from 'vs/platform/userDataProfile/node/userDataProfile'; </ins> const eventPrefix = 'monacoworkbench';

services.set(IUriIdentityService, uriIdentityService); // User Data Profiles <del> const userDataProfilesService = new UserDataProfilesService(environmentService, fileService, uriIdentityService, logService); </del> <ins> const userDataProfilesService = new ServerUserDataProfilesService(uriIdentityService, environmentService, fileService, logService); </ins> services.set(IUserDataProfilesService, userDataProfilesService); // Configuration