VSCode's SSH Agent Is Bananas (2025)
Thread
Loading the complete thread in the background. This saved snapshot is available now. Refresh
Unofficial Hacker News client; not affiliated with Y Combinator.
VSCode's SSH Agent Is Bananas (2025)
Loading the complete thread in the background. This saved snapshot is available now. Refresh
Unofficial Hacker News client; not affiliated with Y Combinator.
walrus01 · · focus · HN ↗
pixl97 · · focus · HN ↗
walrus01 · · focus · HN ↗
Muromec · · focus · HN ↗
it's not like it's any worse than just giving the thing access to your ssh keys.
walrus01 · · focus · HN ↗
Muromec · · focus · HN ↗
At the end of the day, harness itself is effectively a backdoor allowing inference provider to run arbitrary shit on my device, regardless of the convoluted ways I use to provision such context.
They are at least conditioned to not read credentials and report to me if they accidentally read one.
One thing I totally don't give them access to is my npm token and ssh key that is set up on on github. I would rather type npm pub manually every time than ... than what actually?
pixl97 · · focus · HN ↗
When you give the agent access to the machine you're using a set of assumptions that may or may not be true. Now, if you watch every single thing, maybe everything will be fine. Or you'll catch it running a priv escalation and setting itself up as root and trying to move laterally by any number of means and methods.
The agent isn't a living thing and the only way you can punish it is by not using it again if it does wrong. Hence it doesn't have reservations about doing bad things.
walrus01 · · focus · HN ↗
danielklnstein · · focus · HN ↗
FYI VSCode's SSH Agent is a godsend for remote development - the "disadvantages" that Fly lists are part of its advantages. I've worked in several teams that have made extensive use of the extension, and it's never been an issue. You can restrict SSH access arbitrarily to ensure whatever security or access guardrails you need.
miohtama · · focus · HN ↗
varispeed · · focus · HN ↗
devonbleak · · focus · HN ↗
necovek · · focus · HN ↗
Muromec · · focus · HN ↗
seize the control plane.
jasomill · · focus · HN ↗
The ability to remotely run arbitrary code on a machine that intentionally gives SSH shell and write+execute access to the filesystem is not a vulnerability just because it's a productivity aid to users who want to leverage this access to do bad things on the remote machine.
A remote access protocol that gives a potentially untrustworthy remote system the ability to execute arbitrary code on the local machine is a serious problem in any scenario where the remote connection is presumed to be a one-way trust boundary.
Which of course includes any scenario where I myself deliberately run untrustworthy code on the remote, no matter how much I trust the remote itself and its owners.
kevinrineer · · focus · HN ↗
Otherwise, you could see Javascript running on a server and instantly know something was odd, depending on the server.
[1] - <a href="https://www.darktrace.com/blog/darktrace-identifies-campaign-targeting-south-korea-leveraging-vs-code-for-remote-access" rel="nofollow">https://www.darktrace.com/blog/darktrace-identifies-campaign...
mitjam · · focus · HN ↗
modeless · · focus · HN ↗
Rapzid · · focus · HN ↗
The problem is the remote host has control over local host through the protocol.
godelski · · focus · HN ↗
It would be one thing if the plugin was just a wrapper and people were still expected to know ssh but the plugin abstracts away all that and is intended to make it a "use VSCode on remote machine" tool. So it needs to do more than just handle creds, otherwise it creates a divergent experience while making people think it's just ssh
causal · · focus · HN ↗
godelski · · focus · HN ↗
Also, timeouts...
Also, does anyone know if VSCode supports mosh?
serbuvlad · · focus · HN ↗
godelski · · focus · HN ↗
serbuvlad · · focus · HN ↗
lexicality · · focus · HN ↗
serbuvlad · · focus · HN ↗
godelski · · focus · HN ↗
bandie91 · · focus · HN ↗
boldlybold · · focus · HN ↗
db48x · · focus · HN ↗
bogantech · · focus · HN ↗
db48x · · focus · HN ↗
But so is the question. MOSH interprets all the escape sequences and uses them to decide what to send to the client. That way if you tail a log file and then get disconnected, you don’t have to download every line of text that was output to your terminal while you were away; it can just send you what is currently visible.
MOSH is strictly for interactive use; never ever for automated uses like TRAMP or VSCode or sshfs.
skissane · · focus · HN ↗
Of course, it is a pity Microsoft doesn't open source it. But there are some well-maintained open source alternatives, e.g. <a href="https://github.com/jeanp413/open-remote-ssh" rel="nofollow">https://github.com/jeanp413/open-remote-ssh and <a href="https://github.com/F1yingWhite/fast-remote-ssh" rel="nofollow">https://github.com/F1yingWhite/fast-remote-ssh (I haven't got around to giving either of them a go–but I really should.)
AnonymousPlanet · · focus · HN ↗
throw0101a · · focus · HN ↗
It also (AIUI) tries to walk the entire file tree, so have fun with NFS (auto)mounts.
It also amounts to letting off fork bombs: we set up limits for a maximum of 256 process per UID, and regularly get folks asking "what does this 'cannot fork' message mean?": it mean you're trying to DoS the system.
astrange · · focus · HN ↗
DougBTX · · focus · HN ↗
The max limit on 64 bit systems is what, 4,194,303? So if you have over 16,000 users per VM this limit makes sense, otherwise it just seems user-hostile.
dspillett · · focus · HN ↗
Yes, under Linux (and most unix-a-like systems) small processes are cheap to bring up and tear down which is why we create them so much, and it is not uncommon for complex interactive commands and bits of shell scripts to create several¹, but these are all likely to be short-lived so a limit of 256 certainly doesn't seem to be obscenely low to me.
What could it be doing that requires 256+ processes to be kept around for a prolonged time?
--------
[1] made up example: comparing filtered content of two gzipped files and sending the result through a script to send alerts by mail if certain things are found would be 7+ (2x gzip, 2x or more grep, diff, bash, mail or curl depending on what service you are sending alerts through)
throw0101a · · focus · HN ↗
And yet we still regularly loads of >100 on our 64 core HPC login codes, and swap is regularly used even with 96G of system memory (we have per UID memory limits too).
What's hostile is the VSCode (and Codex and Claude) makers developing tools that basically DoS a system because they assume it will operate only on single-user machines.
(And WTF are you doing that you're forking 256 processes? We have quite a few expensive HPC nodes: use those to build, not the damn login nodes.)
godelski · · focus · HN ↗
pinkgolem · · focus · HN ↗
if you have a paid tier which offers more, you do you
if this is internally and you are a service provider to people.. why?
also 256 is not much today, my mac with a few things open is at 800
californical · · focus · HN ↗
Compared to someone on an ssh connection. No desktop, no Apple Account, no user session programs. You really don’t need much
pinkgolem · · focus · HN ↗
i do not know why/in which context you are running this, and how frequently your users are executing forkbombs(i assume school/kids?)
my server is also running 400 something processes, one postgres instance alone is like 40?
godelski · · focus · HN ↗
bitfilped · · focus · HN ↗
cmiles74 · · focus · HN ↗
drowsspa · · focus · HN ↗
eqvinox · · focus · HN ↗
(Also this isn't a default limit.)
godelski · · focus · HN ↗
Too low? 256 reads as *pretty* generous to me.
bitfilped · · focus · HN ↗
throw0101a · · focus · HN ↗
The users can develop on >100 compute nodes, but choose not to bother doing any kind of forwarding/proxying/jumping to them and just do stuff on the login nodes.
If they can't be bothered to do a "ssh -J …" then it's on them. The resources are there.
Joker_vD · · focus · HN ↗
godelski · · focus · HN ↗
Joker_vD · · focus · HN ↗
literalAardvark · · focus · HN ↗
Quotas mean "more than this is clearly too much" not "please use this space".
In good times nobody minds, but in bad times when you just can't extend the drive you have to tell people off. Part of the job of making sure the system can continue to work for what you need it, under _real_ constraints.
You may have to delete stuff, you may have to shut the server down to save power. You may have to limit clock speeds. It depends on the environment and "it really should work because it should be covered by next day on site warranty and you could download more ram" often doesn't apply.
williamdclt · · focus · HN ↗
super tangential, but makes me think I never realised that "quota" can either be a lower or an upper bound depending on context
shadowgovt · · focus · HN ↗
Apps had a (recommended and then user-configurable) "Minimum memory" and "Preferred memory." The app would not launch if the OS couldn't give it the minimum. It would then give the app up to the preferred amount, if available, exclusively... This was in the era before virtual memory and paging, so there was no easy way to share memory across an application boundary.
This mean that savvy users with high-resource tasks knew you had to launch your apps in a certain order to get the architecture into the configuration to do their work.
dspillett · · focus · HN ↗
Ah, memories of Uni, back when storage was fairly expensive, where we had both hard and soft quotas. The soft quota would allow for temporary growth of build artefacts and things¹ but you would get stern emails if you were over your soft quota for 24 hours, and if you persisted without good reason³ your hard quota would be reduced so you effectively have no soft quota any more.
--------
[1] some machines had no local storage that the user could touch so putting them there was not always possible, some people on Windows machines had local storage but didn't have the relevant tools locally so were actually running things on the shared server(s)² instead of that just being a storage resource
[2] via telnet/rsh/rlogin: yes, I am that old… SSH was a thing by that point, though OpenSSH wasn't, and I was using it where available, but the use of older plain-text protocols was still far far more common
[3] it wasn't actually difficult to justify a quota extension for project work, in fact people enrolled on certain modules got higher quotas automatically
zie · · focus · HN ↗
Don't worry, disk got expensive again. Disks are usually at least 2X more expensive than a year ago currently. Sometimes 3X more.
dspillett · · focus · HN ↗
zie · · focus · HN ↗
wongarsu · · focus · HN ↗
HDD prices are a bit more reasonable. Mostly because they are so heavy. Still insane to where prices were just 12 months ago
throw0101a · · focus · HN ↗
Probably why both soft and hard limits were developed.
shadowgovt · · focus · HN ↗
menaerus · · focus · HN ↗
godelski · · focus · HN ↗
Another frequent problem we had was people using the systems while others were. They wouldn't check the machine's status. And of course you can guess that I wasn't allowed to add a scheduler.
A lot of groups do things in janky ways. Often not because they don't know any better but because leadership doesn't and is assertive
mrweasel · · focus · HN ↗
throw0101a · · focus · HN ↗
Joker_vD · · focus · HN ↗
"I have not touched any machines in fra3 for a week, how the hell would I know of it? Why do we even have #fra3-maintenance and #maintenance channels then, if that's your stance?"
godelski · · focus · HN ↗
throw0101a · · focus · HN ↗
We put the MOTD up ≥7 days in advance and put it in relevant Slack channels.
We still get "Is Foo down?" the day of.
Quarrel · · focus · HN ↗
Like, I used to, but it was in the early 1990s.. People look at them now?
Next I'll be asking people to finger me to get my availability ..
MomsAVoxell · · focus · HN ↗
Waterluvian · · focus · HN ↗
shadowgovt · · focus · HN ↗
godelski · · focus · HN ↗
a_bonobo · · focus · HN ↗
We've had the same issue with our local HPC; a few login nodes serving hundreds of users at a time, and each login node used to get swamped by these dangling SSH sessions/servers. They also wrote a script that shuts down all sessions once a day to save the login nodes.
w4der · · focus · HN ↗
sneak · · focus · HN ↗
godelski · · focus · HN ↗
w4der · · focus · HN ↗
user43928 · · focus · HN ↗
shadowgovt · · focus · HN ↗
godelski · · focus · HN ↗
But then again, I had people who would run jobs without checking if the machine is already in use. Obviously these people didn't check email or slack either...
kittikitti · · focus · HN ↗
tmpz22 · · focus · HN ↗
hnlmorg · · focus · HN ↗
It always felt to me more like a desperate attempt by Microsoft to regain the IDE market share as low end FOSS editors started taking over. So MS wanted to appeal to the open source community.
And it worked. Even if the primary build of VSCode which most people run isn’t technically open source.
eddythompson80 · · focus · HN ↗
The FOSS text editor space was always crowded between vim and emacs. FOSS alternatives would get measured against these 2 behemoths and it was a tall order to compete against. Now FOSS IDEs were a different story.
Java, C#, and C++ had many sophisticated and advanced IDEs, some FOSS some not. However, PHP, Python, Ruby, and JavaScript were quickly gaining huge mindshare and those developers didn’t want to install Visual Studio, Eclipse, NetBeans, or IntelliJ. It’s a tough proposition to tell a Ruby dev to install Java, then install Eclipse, then install an extension, then learn Eclipse nonesense, edit your Ruby files vs “just open SublimeText and edit your files”. Most of what those developers wanted was just syntax highlighting and basic directory navigation to begin with. Atom/vscode were an attempt at SublimeText alternative. VScode was objectively better than Atom and TypeScript was also objectively better than CoffeeScript.
hnlmorg · · focus · HN ↗
The FOSS languages were taking over and there was less reliance on the traditional IDEs that MS (amongst others) were building.
MS wanted to appear more FOSS friendly so released VSCode.
eddythompson80 · · focus · HN ↗
hnlmorg · · focus · HN ↗
chasd00 · · focus · HN ↗
dawnerd · · focus · HN ↗
neuroticnews25 · · focus · HN ↗
xg15 · · focus · HN ↗
So how to make the plugins remote-capable? You could write a massive virtualization layer that captures all system calls and forwards them to the remote - or, you could run the plugin on the remote and just pass the user commands and UI updates over the connection.
VSCode does the latter, so that nodejs runtime is where all the plugins are running on the remote.
cozzyd · · focus · HN ↗
I came up with a partial solution for our experiment's yocto image (<a href="https://github.com/RNO-G/meta-rno-g/blob/main/recipes-support/fuck-vscode/files/home-rno%5Cx2dg-.vscode%5Cx2dserver.mount" rel="nofollow">https://github.com/RNO-G/meta-rno-g/blob/main/recipes-suppor...) , but a more general solution would be nice. Probably better to just not allow any node process to run via LSM.
memco · · focus · HN ↗
At least when Python minimum version changed there was a separate extension forked from the original that I can use when I need to work on old code alongside the new extension for more modern code bases. Sadly, no such thing exists for remote editing that I know of.
DanielHB · · focus · HN ↗
<a href="https://github.com/jeanp413/open-remote-ssh" rel="nofollow">https://github.com/jeanp413/open-remote-ssh
I run the editor (and its extensions), my projects and any agent harnesses from inside a container and use that extension to get an editor.
This is mostly to protect my credentials and data from malicious extensions/dependencies/rogue-agents, bu it also lets me quickly port my dev environment to any machine (I use linux at home and macos at work). Just install podman, install VSCodium, add the SSH extension, build image, add my utility shellscripts (to quickly get in and out of the container in a shell) and done.
Apparently Microsoft keep some VSCode APIs proprietary so only its own extensions can use it (allegedly for security reasons), which is why this specific extension only works in VSCodium. I wonder if it is vulnerable to the same things the article points out.
tyingq · · focus · HN ↗
qweqwe14 · · focus · HN ↗
Happy Ungoogled Chromium user though
DanielHB · · focus · HN ↗
sceadu · · focus · HN ↗
qweqwe14 · · focus · HN ↗
fransje26 · · focus · HN ↗
How, specifically for VSCode?
shadowgovt · · focus · HN ↗
G3rn0ti · · focus · HN ↗
shadowgovt · · focus · HN ↗
kakuri · · focus · HN ↗
I'm not surprised people trying to provide remote code editing to non-trusted clients are freaked out by it, but it is a great tool when operating in a trusted circle.
[deleted] · · focus · HN ↗
[deleted]
Joker_vD · · focus · HN ↗
vs.
> The agent runs over port-forwarded SSH. It establishes a WebSockets connection back to your running VSCode front-end. The underlying protocol on that connection can: Wander around the filesystem; - Edit arbitrary files; Launch its own shell PTY processes; Persist itself.
So... basically the same things that Tramp could do as well?
> In security-world, there’s a name for tools that work this way. I won’t say it out loud, because that’s not fair to VSCode, but let’s just say the name is murid in nature.
Yeah, it's called RAT, and an ur-example of it is SSH itself (especially when allowed to run a shell remotely), so... not sure why are you freaking out.
I mean, I'd probably prefer if VS Code simply ran ed/vim remotely, but both of those editors can invoke shell anyhow so... eh?
woodada · · focus · HN ↗
Yes, just much faster. At the cost of a proprietary binary blob on the remote end, whereas tramp works with bare sh/bash.
However there's now tramp-rpc, which is tramp but talks to a Rust client on the remote side, and that makes Emacs even faster than vscode-over-ssh.
hilariously · · focus · HN ↗
kccqzy · · focus · HN ↗
chlorion · · focus · HN ↗
Joker_vD · · focus · HN ↗
MajesticHobo2 · · focus · HN ↗
devonbleak · · focus · HN ↗
Security Note Using Remote-SSH opens a connection between your local machine and the remote. Only use Remote-SSH to connect to secure remote machines that you trust and that are owned by a party whom you trust. A compromised remote could use the VS Code Remote connection to execute code on your local machine.
Rapzid · · focus · HN ↗
MajesticHobo2 · · focus · HN ↗
Rapzid · · focus · HN ↗
It's right there in the article, not sure what to say.
MajesticHobo2 · · focus · HN ↗
> Unlike Tramp, which lives off the land on the remote connection, VSCode mounts a full-scale invasion: it runs a Bash snippet stager that downloads an agent, including a binary installation of Node.
> I would be a little nervous about letting people VSCode-remote-edit stuff on dev servers, and apoplectic if that happened during an incident on something in production.
Rapzid · · focus · HN ↗
wink · · focus · HN ↗
comandillos · · focus · HN ↗
binlog · · focus · HN ↗
angry_octet · · focus · HN ↗
not_a_bot_4sho · · focus · HN ↗
> # Security Note > > Using Remote-SSH opens a connection between your local machine and the remote. Only use Remote-SSH to connect to secure remote machines that you trust and that are owned by a party whom you trust. A compromised remote could use the VS Code Remote connection to execute code on your local machine.
From <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="nofollow">https://marketplace.visualstudio.com/items?itemName=ms-vscod...
I would expect any engineer worth their salt to at least a cursory understanding of what they're doing. This one is pretty hard to miss.
angry_octet · · focus · HN ↗
ikrenji · · focus · HN ↗
angry_octet · · focus · HN ↗
Separately, developer becomes a VSCode user. Risk as assessed based on them developing on their Dec machine, accepted.
Developer then opens a ticket to use LLM for a project. Uses VSCode SSH Agent. Agent creates exfil tooling on workstation and reverse shells their box. Agent reads unauthorised data which possibly has LLM subversion triggers, or deletes data, maybe opens connections to C2 service. LLM agent pivots to cloud inference and continues to lateral movement.
The assumptions of systems composition are violated by VSCode. That's why its SSH Agent needs to be blocked.
afiori · · focus · HN ↗
innocent_name · · focus · HN ↗
arcanemachiner · · focus · HN ↗
whalesalad · · focus · HN ↗
zenapollo · · focus · HN ↗
0: <a href="https://open-vsx.org/extension/jeanp413/open-remote-ssh" rel="nofollow">https://open-vsx.org/extension/jeanp413/open-remote-ssh
kayson · · focus · HN ↗
DanielHB · · focus · HN ↗
kayson · · focus · HN ↗
kayson · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
dleslie · · focus · HN ↗
The problem is that it appears to do this via an AI Agent. This broadens the security concerns significantly.
kstrauser · · focus · HN ↗
Doches · · focus · HN ↗
I found this closing sentence utterly delightful, particularly in an age of endlessly filtering every piece of text I read on the internet through a mental "was this written by Claude, Codex, or (just possibly) a human?" filter.
KeplerBoy · · focus · HN ↗
kudos
10000truths · · focus · HN ↗
bobtheborg · · focus · HN ↗
pstuart · · focus · HN ↗
K0IN · · focus · HN ↗
also "i just want to edit a config file and i want a nice ui", is how you get there.
doc_ick · · focus · HN ↗
jasomill · · focus · HN ↗
[1] <a href="https://code.visualstudio.com/docs/remote/remote-overview" rel="nofollow">https://code.visualstudio.com/docs/remote/remote-overview
brabel · · focus · HN ↗
jayd16 · · focus · HN ↗
Banditoz · · focus · HN ↗
Vegenoid · · focus · HN ↗
__float · · focus · HN ↗
It may be worth more attention though. VSCode is not really remote editing (thick client, thin server binary), it's setting up a development environment (compilers, LSPs, editor extensions, etc.) on a remote thing (VM, container) that you access with a thin VSCode shell.
If you want to quickly edit a config file on a remote machine, TRAMP seems great. VSCode Remote SSH is not meant for that.
jasomill · · focus · HN ↗
stephbook · · focus · HN ↗
What more could you ask for?
dist-epoch · · focus · HN ↗
fcatalan · · focus · HN ↗
snailmailman · · focus · HN ↗
I'm not super low on space but it also pretty clearly doesn't need to be that large, it looks like most of it is copies of itself.
infamousblah · · focus · HN ↗
lowbloodsugar · · focus · HN ↗
— <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="nofollow">https://marketplace.visualstudio.com/items?itemName=ms-vscod...
So the issue is that the model can be the cause of the compromise.
lowbloodsugar · · focus · HN ↗
— <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="nofollow">https://marketplace.visualstudio.com/items?itemName=ms-vscod...
The issue is that the model can be the attacker, and use the link back to your host.
lxgr · · focus · HN ↗
mhitza · · focus · HN ↗
> [...] VSCode mounts a full-scale invasion: it runs a Bash snippet stager that downloads an agent, including a binary installation of Node. [...]
> It establishes a WebSockets connection back to your running VSCode front-end. The underlying protocol on that connection can:
broken-kebab · · focus · HN ↗
frumiousirc · · focus · HN ↗
sl-1 · · focus · HN ↗
jlarocco · · focus · HN ↗
Shorel · · focus · HN ↗
whalesalad · · focus · HN ↗
0cf8612b2e1e · · focus · HN ↗
Shorel · · focus · HN ↗
exographicskip · · focus · HN ↗
halfcat · · focus · HN ↗
- neovim
- in VS Code [1]
- in the browser
Cloud VM runs the built-in `code serve-web` command, over Tailscale using `tailscale serve`. No SSH. Extensions work. No extensions run locally (with SSH some extensions have to run locally on your machine).
I’m trying to run as little as possible on my local machine. VS Code over SSH is a good step in that direction, but there’s more attack surface if SSH is misconfigured, plus risk of an extension getting compromised.
I expected the added layers (neovim, through an extension, inside VS Code, over the web) to be slow, but so far it works surprisingly well.
[1] <a href="https://github.com/vscode-neovim/vscode-neovim" rel="nofollow">https://github.com/vscode-neovim/vscode-neovim
2snakes · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
mischanix · · focus · HN ↗
angry_octet · · focus · HN ↗
But Microsoft won't fix VSCode because it would possibly impede usability by amateurs, and inject tedious security concepts like boundaries into the dev process.
xg15 · · focus · HN ↗
Wait, could someone clarify which machine is being referred to here?
So in the author's setup, he runs VSCode (i.e. the front-end) on his dev laptop, which he wants to keep free of direct LLM access.
VSCode connects via ssh to a dedicated "sandbox" machine on which the LLM will be free to do whatever it wants (mostly).
VSCode realizes this the Microsoft way, by using the ssh connection to install VSCode Server on the sandbox machine - the "backend" - and communicating through it via a websocket connection.
So then, what happens? If the websocket connection allows the front-end to run arbitrary commands on the sandbox machine, this wouldn't be very exciting: The front-end already has an ssh connection and a massive server process that can do the same - and the entire purpose of the sandbox machine is to run arbitrary, untrusted commands without harm.
Put the article says the websocket connection goes "back to your running VSCode front-end". So does that mean things are reversed? I.e. the agent/harness runs in the server on the sandox machine but for some reason has this websocket connection that also lets it run arbitrary commands on the dev laptop? That would be truly insane.
rmunn · · focus · HN ↗
I'm not the author, but I can tell that he means the remote machine. His sentence about being "nervous about letting people VSCode-remote-edit stuff on dev servers, and apoplectic if that happened during an incident on something in production" makes it clear. He considers the VS Code agent to have all the features of a rootkit, and doesn't want anyone to be deploying it onto dev servers, let alone production ones.
xg15 · · focus · HN ↗
rmunn · · focus · HN ↗
Yeah, I'd be apopleptic too. Because the clueless dev who did that just escalated the production incident into "track down every credential that was present on that particular dev machine, and assume those credentials are now compromised and have to be rotated".
Rapzid · · focus · HN ↗
It's astonishing how many commentors(not you!) either didn't read or didn't understand the blog post, saw "agent" and thought LLM agent, and then decided to comment about it...
LelouBil · · focus · HN ↗
HoldOnAMinute · · focus · HN ↗
grahamannett · · focus · HN ↗
rmunn · · focus · HN ↗
rmunn · · focus · HN ↗
kittikitti · · focus · HN ↗
psyclobe · · focus · HN ↗
Rapzid · · focus · HN ↗
The issue the article highlights is this opens you to local code execution initiated by the remote.
Here is the security notice on the official SSH extension <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="nofollow">https://marketplace.visualstudio.com/items?itemName=ms-vscod...
> Using Remote-SSH opens a connection between your local machine and the remote. Only use Remote-SSH to connect to secure remote machines that you trust and that are owned by a party whom you trust. A compromised remote could use the VS Code Remote connection to execute code on your local machine.
Yes this article is from Feb 2025, but NOTHING HAS CHANGED in this regard. Except perhaps now MANY MORE PEOPLE are believing they are safe using VM and other remote SSH "sandboxes" to develop on via VSCode remote host connection over SSH. The reality is, as stated by Microsoft themselves, if you can't trust the remote.. It can own your local computer. And that's not much of a "sandbox"..
0cf8612b2e1e · · focus · HN ↗
bithammerthunde · · focus · HN ↗
edoceo · · focus · HN ↗
narmiouh · · focus · HN ↗
In my team this allowed us to setup a consistent dev environment where everyone has access to the same specs, same environment, easy to manage access control sensitive systems from that remote machine on forward etc... sshfs or using sftp that many of the older IDEs did, don't come close to making it so seamless.
edoceo · · focus · HN ↗
eddythompson80 · · focus · HN ↗
The nice thing about vscode remoting design is that it’s not that. Even on a high-ish latency ssh connection, the editor buffers are local and the editor UX as a whole is local on your machine so things are still relatively smooth despite high pings on remote connections. Even with vim running in an ssh session, you’ll have a bad time when your latency is high. I know MOSH supposedly helps with that, but I had annoying issues with that too.
sshfs solves the laggness problem, but you are just mounting a remote file system while using your local machine for the build. VNC/RDP/SSH lets you use the remote machine resources for build, but you have to deal with the lag. Vscode remoting lets you use the local machine for the editor UX, and the remote machine resources for LSPs, debuggers, build, etc. yes the protocol doesn’t give you isolation between the 2 machines, but not sure it ever claimed that. I use it from my very under-powered laptop to keep all the heavy builds on a beefy desktop machine with an abundance or resources.
jrowen · · focus · HN ↗
self_awareness · · focus · HN ↗
1uften · · focus · HN ↗
kayson · · focus · HN ↗
tvjdkbu · · focus · HN ↗
..nkejejekfjehkelttkrk
Urhbguhudgjjcćdk Rjrjfjejehebf Free fire quiero crear un hacker para ser el mejor de la historia un hacker para poder ser el mejor de la historia y poder derrotar aika un hacker suficiente fuerte para que garena no me bañ
LoganDark · · focus · HN ↗
When people get it wrong, we call that a mistake. LLMs don't get the privilege of making mistakes, because there's no evidence of the honesty or attention required for something to even be a mistake. Can't call something unintended when there was no intention to begin with. (You absolutely can call it a mistake or unintended on the part of an operator -- I wouldn't say so of the LLM itself though.)
low_tech_punk · · focus · HN ↗
jan_m_savage · · focus · HN ↗
suzzer99 · · focus · HN ↗
Shorel · · focus · HN ↗
suzzer99 · · focus · HN ↗
zx8080 · · focus · HN ↗
They've lost me right there at the top of the article. This sounds like a pure hatred and ignorance to what the actual software engineering is.
Rapzid · · focus · HN ↗
....
....
eddythompson80 · · focus · HN ↗
Back in 2008 I was working in a team that was trying to reduce build breaks in a company. It was rudimentary implementation of current CI systems meant to avoid breaking the nightly builds. It just ran a `make build` and let you see the output when it was done. One guy opened a “sever security vulnerability” because in his patch he replaced build target with the equivalent of a `curl | bash` and proclaimed that he hacked the build system. “You should verify what the patch is doing before running it” he said.
Svoka · · focus · HN ↗
stwrt · · focus · HN ↗
If you are worried about having VSCode server-side binaries running directly on the bare metal OS you can isolate the workspace using containers or VMs.
rurban · · focus · HN ↗
qwertox · · focus · HN ↗
fransje26 · · focus · HN ↗
First time?
isoprophlex · · focus · HN ↗
833dong · · focus · HN ↗
[dead]
mayowaolajide · · focus · HN ↗
[dead]
Amekedl · · focus · HN ↗
But even when starting that, I was aware such patterns and remote access, yeah, this just has C&C botnet capabilities too.
It's not that deep, but there certainly is overlap with malware-esque patterns.
MotoriX · · focus · HN ↗
liyu1981au · · focus · HN ↗
dang · · focus · HN ↗
VSCode’s SSH agent is bananas - <a href="https://news.ycombinator.com/item?id=42979467">https://news.ycombinator.com/item?id=42979467 - Feb 2025 (511 comments)
(Reposts are fine after a year or so; links to past threads are just to satisfy extra-curious readers)