I'd like to have a single action to simply install all local extensions on a remote host when using Remote - SSH, even if they're UI only. I have >100 extensions installed and I don't want to maintain multiple lists of them. I definitely won't be using them all at the same time, however I just want to eliminate the stopgaps I currently have when switching hosts.
@MOZGIII you can define the set of extensions you always want to have installed using the setting remote.SSH.defaultExtensions. Does this cover your needs.
even if they're UI only.
UI extensions are not installed in the remote host. Have you tried the settings sync extension to cover these extensions?
Hey @egamma! I'm using settings sync already, however it does not push the extensions I want to use to the remote host. It does a great job with syncing the usual, "local" extensions though. I assume it's not supposed to push local extensions to the remote host. If I could use it somehow to achieve that - please let me know.
What I don't want to do:
I'm looking for a long-term solution here, not the one-time fix.
If UI extensions, given they are only needed on the UI side, are not synced - that's ok with me. My point was just that I don't want to manage yet another list (like remote.SSH.defaultExtensions) with all extensions I use usually minus the UI extensions.
In my case, I'm using VS Code on multiple machines, and one of those is beefier than all the others (combined :smile:). I'm keeping my configuration in sync across all of the machines, but with this new remote feature tried working on some projects remotely on that beefy machine - even though there is a VS Code installation there already (fully configured). Not insiders version though. When I connected to the remote (using insiders version, after I pulled my settings and extensions via settings sync), my editor was clean, as if no extensions were installed. Then I figured there's this new thing - local/remote extensions.
Naively, I expected to be able to either use the extensions that are in the remote host installation already, or use extensions I have installed on my local/ui machine. It's clearly not the second case. The first case is in question though. If it's a thing, then the reason I didn't see my extensions is because I only had a non-insiders version installed on the host, and all I had to do was to just install insiders version on the remote host and sync settings on it.
However it may be neither - in which case there's a separate list of extensions that are explicitly installed per a vscode server - and I'd be ok with that too, if that's how it had to be implemented.
For the use case I described above it makes most sense to just keep all the extensions in sync at all times. That would include syncing my extensions list to the remote side (vscode server) from the editor, I'm currently working with.
My point is currently I can only install remote extensions one by one, but I don't want to hand-pick them. I don't see a point in only installing a subset of extensions that I'm using for local development for my workflow. More strictly - I don't see a point of using any other extensions set than the one I'm using for local development.
I'd be satisfied with a button to install all locally installed extensions on remote (I'd press it every once in a while, just like I do it with settings sync - no big deal). An alternative would be to somehow configure the editor to dynamically set the value of remote.SSH.defaultExtensions to a list of all installed extensions - ideally without explicitly enumerating them all in the config file.
@MOZGIII
I'd be satisfied with a button to install all locally installed extensions on remote (I'd press it every one in a while just like I do it with settings sync - no big deal). An alternative would be to somehow configure the editor to dynamically set the value of remote.SSH.defaultExtensions to a list of all installed extensions - ideally without explicitly enumerating them all in the config file.
I've changed the issue title accordingly.
Hey, any changes on this?
I'd be satisfied with a button to install all locally installed extensions on remote (I'd press it every one in a while just like I do it with settings sync - no big deal). An alternative would be to somehow configure the editor to dynamically set the value of remote.SSH.defaultExtensions to a list of all installed extensions - ideally without explicitly enumerating them all in the config file.
This or a setting like 'remote.SSH.defaultExtensions.syncOnConnect':true|false
That would be super. That way whenever I make changes to the list all I have to do is disconnect and reconnect and VS Code would remove/install as needed.
From @iconmaster5326 in #873:
The biggest problem with using this feature is the fact that I have to re-install workspace-class extensions every time I connect to a new remote, which happens fairly often for me. I know there is an extension whitelist (remote.extensionKind聽in general,聽remote.containers.defaultExtensions聽for Docker,聽remote.SSH.defaultExtensions聽for SSH, etc), but what if we had an option to install every extension on a new remote, and use an extension blacklist instead? Having to manually add every extension to a configuration setting is tedious to say the least, and is fragile in the case when I install or remove extensions. Just having all of them by default would make my life a lot easier.
Added a command to install local extensions on remote.

@sandy081 Thank you very much! Here's picture of a kitten!

Is it released already?
This will be available in tomorrow's insiders.
Action is also available in extensions viewlet's secondary actions

Most helpful comment
@sandy081 Thank you very much! Here's picture of a kitten!

Is it released already?