VSCode's SSH Agent Is Bananas (2025)
Rapzid
183 points
116 comments
September 23, 2026
Related Discussions
Found 5 related stories in 82.6ms across 7,510 title embeddings via pgvector HNSW
- Open-source memory for coding agents, synced over SSH vshulcz · 117 pts · July 15, 2026 · 52% similar
- I Found a Self-Propagating Worm Hiding Inside [.vscode] in My Own Commits syumei · 11 pts · September 05, 2026 · 52% similar
- Oh-my-pi: A coding agent with the IDE wired in lwhsiao · 28 pts · July 21, 2026 · 50% similar
- Show HN: Clawk – Give coding agents a disposable Linux VM, not your laptop celrenheit · 187 pts · July 13, 2026 · 48% similar
- Show HN: Watch bots interact with an SSH honeypot in real time tusksm · 151 pts · July 17, 2026 · 47% similar
Discussion Highlights (20 comments)
walrus01
When I give an agent ssh access to something I want to be able to watch and fully understand what it's doing. I want it to essentially only "type" things into the CLI that I could have typed myself, I can comprehend what it's doing, and am not surprised by the results. Opencode and a smart LLM (qwen 3.8-flash-next, deepseek v4 0731 or smarter) do relatively well with this in my experience.
danielklnstein
Missing a (2025) 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.
Joker_vD
> Emacs hosts the spiritual forebearer of remote editing systems, a blob of hyper-useful Elisp called “Tramp”. If you can hook Tramp up to any kind of interactive environment — usually, an SSH session — where it can run Bourne shell commands, it can extend Emacs to that environment. 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?
MajesticHobo2
This part of VSCode's architecture is acceptable to me. The reverse direction, where a compromised remote can do whatever it wants to my local machine, is not.
comandillos
This extension and devcontainers is basically the way to go for large dev teams inmho
binlog
The agent is supposed to run on a remote dev box. The purpose is to make the remote machine an extension of your local one, to run extensions, containers, install packages, test deployments, forward ports and tons more. Tunneling is part of the feature set. If you are installing it on production servers and are surprised by its behavior that’s on you.
innocent_name
Moreover, it explicitly breaks in VSCodium and no good alternatives exist.
dleslie
The problem isn't that it can edit remote files or run remote shell commands. The problem is that it appears to do this via an AI Agent. This broadens the security concerns significantly.
Doches
> It turns out we don’t have to care about any of this [...], so none of this matters in any kind of deep way, but: we’ve decided to just be a blog again, so: we had to learn this, and now you do too. 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
off topic, but I feel this observation was quite early in feb' 2025: "LLM-generated code is useful in the general case if you know what you’re doing. But it’s ultra-useful if you can close the loop between the LLM and the execution environment (with an “Agent” setup)." kudos
10000truths
So a program that is specifically designed to edit files and run arbitrary commands on a remote machine... can do so. Not sure where the bananas part comes in. Sending a binary over SSH/SFTP might sound weird at first glance, but VSCode can't assume that your remote machine can access the wider internet, and it needs a reliable way to bootstrap the agent on the remote. Shipping it over the SSH tunnel is the natural solution.
Shorel
For my own agent one of the design constraints is that it can't get out of the work directory, and it can't even try to guess the full path of that directory. Interesting that VSC has gone the other way entirely.
whalesalad
I avoided Zed for a long time because of the SSH feature in VScode. Then I realized Zed has SSH remote too. Just flagging this for anyone else who relies on vscode-over-ssh and is sick of the bloat.
halfcat
I’m currently experimenting with running: - 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 see how little I can run 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] https://github.com/vscode-neovim/vscode-neovim
2snakes
I should call my dev machine the Fly Machine too
mischanix
This 2025-era rant seems quaint in comparison to how 2026 has gone.
xg15
> 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 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. But 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? Is that it? That would be truly insane!
HoldOnAMinute
Was author trying to avoid the word "rootkit"?
kittikitti
I think the last time I linked SSH to a few V'sM through VSCode it auto-installed node, npm, and hundreds of megabytes of npm packages, then it persisted a node service. It's bananas that it still does this. I have never used SSH through VSCode again.
psyclobe
Honestly now that I'm basically dictating ai on what to do I've really stopped using all guis. Terminal is all I need.