HNHacker News
TopNewBestAskShowJobs

borenstein

41 karma · joined January 13, 2026

Princeton PhD, ex-Etsy ML platform. Building things.
submissionscomments
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
SUPER interesting! You just earned star #508. Going to take a look at this.
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
1. It's designed to give you an experience identical to using the Claude Code CLI in every respect, but with a much smaller blast radius. It's not currently set up to to work with your IDE. In that sense, it's a niche solution: I made it because I was trying to use a lot of agents at once, and I found that the rate-limiting factor was my ability to review and respond to permission pop-ups.

2. The VM is, in some sense, packaging. The main value adds are the two indirections between the agent and the outside world. Its access to `git` and `gh` are both mediated by a rules-based dispatcher that exercises fine-grained control in excess of what can be achieved with a PAT. HTTP requests pass through a middleware that block requests based on configurable rules.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Ah, let me clarify: I'm only using this to help me code faster. There are zero agents in the runtime for the financial tool.

As a matter of fact, the tool is zero-knowledge by design: state is decrypted in your browser and encrypted again before it leaves. There are no account integrations. The persistence layer sees noise. There are a couple of stateless backend tools that transiently see anonymous data to perform numerical optimizations.

But that's a story for another Show HN...

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
No shame in this! When you're using Claude code (or Cursor, or similar), you get these pop-ups rather frequently. "May I do XYZ web search?" "May I run this command?" "May I make this HTTP request?" This is for security, but it becomes the limiting step in your workflow if you're trying to use parallel agents.

These tools generally offer the ability to simply shut off these guardrails. When you do this, you're in what has come to be called "yolo mode."

I am arguing that, sandboxed correctly, this mode is actually safer than the standard one because it mitigates my own fatigue and frustration. These threats surface every hour of every day. Malicious actors are definitely a thing, but your own exhaustion is a far more present danger.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
> How safe do you think this solution would be to let users execute untrusted code inside while being able to pip install and npm install all sorts of libraries

It's designed to be fairly safe in exactly that situation, because it's sandboxed twice over: once in a container and once in a VM. You start to layer on risk when you punch holes in it (adding domains to the whitelist, port-forwarding, etc).

> how do you deploy this inside AWS Lambda/Fargate for the same usecase These both seem like poor fits. I suspect Lambda is simply a non-starter. For Fargate, you'd be running k8s inside a VM inside a pod inside k8s. As an alternative, you could construct an AMI that runs the yolo-cage microk8s cluster without the VM, and then you could deploy it to EC2.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
On that note, yolo-cage is pretty heavyweight. There are much lighter tools if your main concern is "don't nuke my laptop." yolo-box was trending on HN last week: https://news.ycombinator.com/item?id=46592344
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Totally agreed, but that level of attack sophistication is not a routine threat for most projects. Making sense of any information so exfiltrated will generally require some ad-hoc effort. Most projects, especially new ones, simply aren't going to be that interesting. IMO if you're doing something visible and sensitive, you probably shouldn't be using autonomous agents at all.

("But David," you might object, "you said you were using this to build a financial analysis tool!" Quite so, but the tool is basically a fancy calculator with no account access, and the persistence layer is E2EE.)

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Thank you, nice catch. I will patch that today. And cutoff date is almost certainly why it happened.

It wasn't "vibe coded" in the sense that I was just describing what I want and letting the agent build it. But it definitely was built indirectly, and in an area that is not my primary focus. A charitable read is that I am borrowing epistemic fire from the gods; an uncharitable one is that I am simply playing with fire.

I am not apologetic about this approach, as I think it's the next step in a series of abstractions for software implementation. There was a time when I sometimes took some time to look at Java bytecode, but doing so today would feel silly.

Abstracting to what is in essence a non-deterministic compiler is going to bring with it a whole new set of engineering practices and disciplines. I would not recommend that anyone start with it, as it's a layer on top of SWE. I compare it to visual vs instrument flight rules.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Docker isn't virtualization; it's not that hard to infiltrate the underlying system if you really want to. But as for VMs--they are enough! They're also a lot of boilerplate to set up, manage, and interact with. yolo-cage is that boilerplate.
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
IMO, you should treat your agent's environment as pre-compromised. In that reading, your goal becomes security-in-depth.

Anthropic is trying to earn developer trust; they have a strong incentive to make sure that private keys and other details that the agent sees do not leak into the training data. But the agent itself is just a glorified autocomplete, and it can get confused and do stupid stuff. So I put it in a transparent prison that it can see out of but can't leave.

That definitely helps with the main failure modes I was worrying about, but it's just one layer. You definitely want to make sure that your production secrets are in an external vault (Hashicorp Vault, Google Secret Store, GitHub secrets, etc) that the agent can't access.

The things that agent is seeing should be dev secrets that maybe could be used as the start of a sophisticated exploit, but not the end of it. There's no such thing as perfect security, only very low probabilities of breach. Adding systems that are very annoying to breach and have little offer when you do greatly lowers the odds.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
The credential have been a PITA. I was working on a PR this morning before work; I should have it tonight. You have to be careful because if you look like you're spoofing the client, you can get banned.

For Claude specifically, there are two places where it tracks state:

~/.claude.json -- contains a bunch of identity stuff and something about oauth

~/claude/ -- also contains something about oauth, plus conversation history, etc

If they're not _both_ present and well-formed, then it forces you back through the auth flow. On an ordinary desktop setup, that's transparent. But if you want to sandbox each thread, then sharing just the token requires a level of involvement that feels icky, even if the purpose is TOS-compliant.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
I'm with you here! The idea with yolo-cage is that the worst the LLM can realistically do is open an awful PR and waste your time. (Which, trust me, it will.) Claude suggested the phrase: "Agent proposes, human disposes."
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Thank you! Rate limits are an interesting topic with Claude Code right now. The Max subscription has them, and the API does not; but the Max subscription is an all-you-can-eat buffet, and the API is not. yolo-cage was built to be compatible with the Max subscription while remaining TOS-compliant because it wraps the official CLI with no modifications. That has so far meant for me that the experience is _too_ rate limited.

That said, I have not yet started playing with MCP servers. I suspect that they are completely broken inside yolo-cage right now, as they almost certainly get stopped by the proxy.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
The leakage issue is real. Before there was a way to use "GPT Pro" models on enterprise accounts, I had a separate work-sponsored Pro-tier account. First thing I did was disable "improve models for everyone." One day I look and, wouldn't you know it, it had somehow been enabled again. I had to report the situation to security.

As far as lock-in, though, that's been much less of a problem. It's insanely easy to switch because these tools are largely interchangeable. Yes, this project is currently built around Claude code, but that's probably a one-hour spike away from flexibility.

I actually think the _lack_ of lock-in is the single biggest threat to the hyperscalers. The technology can be perfectly transformative and still not profitable, especially given the current business model. I have Qwen models running on my Mac Studio that give frontier models a run for their money on many tasks. And I literally bought this hardware in a shopping mall.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
This was 100% not AI generated! Honestly, though, I've been talking to AI chatbots so much in the last year that I'm sure their style has rubbed off on me. At some point, I did a little math and determined that I had probably exchanged an order of magnitude more words back and forth with AIs than I will with my spouse over the course of our entire lives.
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
It probably is. Some of this stuff will hang around because power users want control. Some of it will evolve into more sophisticated solutions that get turned into products and become easier to acquihire than the build in house. A lot of it will become obsolete when the OEMs crib the concept. But IMO all of those are acceptable outcomes if what you really want is the thing itself.
borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
You are correct both that the AI wrote 100% of the code (and 90% of the raw text). You are also correct that I want a safety guardrail for the process by which I build software that I believe to be safe and reliable. Let's take a look at each of these, because they're issues that I also wrestled with throughout 2025.

What's my role here? Over the past year, it's become clear to me that there are really two distinct activities to the business of software development. The first is the articulation of a process by which an intent gets actualized into an automation. The second is the translation of that intent into instructions that a machine can follow. I'm pretty sure only the first one is actually engineering. The second is, in some sense, mechanical. It reminds me of the relationship between an architect and a draftsperson.

I have been much freer to think about engineering and objectives since handing off the coding to the machine. There was an Ars Technica article on this the other day that really nails the way I've been experiencing this: https://arstechnica.com/information-technology/2026/01/10-th...

Why do I trust the finished product if I don't trust the environment? This one feels a little more straightforward: it's for the same reason that construction workers wear hard hats in environments that will eventually be safe for children. The process of building things involves dangerous tools and exposed surfaces. I need the guardrails while I'm building, even though I'm confident in what I've built.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
I know, right? The day I initially thought about posting this, there was another one called `yolo-box`. (That attempt--my very first post--got me instantly shadow-banned due to being on a VPN, which led to an unexpected conversation with @dang, which led to some improvements, which led to it being a week later.)

I think it's the convergence of two things. First, the agents themselves make it easier to get exactly what you want; and second, the OEM solutions to these things really, really aren't good enough. CC Cloud and Codex are sort of like this, except they're opaque and locked down, and they work for you or they don't.

It reminds me a fair bit of 3D printer modding, but with higher stakes.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Thank you, good question! My original implementation was actually a bunch of manifests on my own microk8s cluster. I was finding that this meant a lot of ad-hoc adjustments with every little tweak. (Ironic, given the whole "pets vs cattle" thing.) So I started testing the changes in a VM.

Then I was talking to a security engineer at my company, who pointed out that a VM would make him feel better about the whole thing anyway. And it occurred to me: if I packaged it as a VM, then I'd get both isolation and determinism. It would be easier to install and easier to debug.

So that's why I decided to go with a Vagrant-based installation. The obvious downside is that it's harder now to integrate it with external systems or to use the full power of whatever environment you deploy it in.

borenstein··on Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets
Hi, thanks for your feedback! I can see this from a couple of different perspectives.

On the one hand, you're right: those commit messages are proof positive that the security is not perfect. On the other hand, the threat model is that most threats from AI agents stem from human inattention, and that agents powered by hyperscaler models are unlikely to be overtly malicious without an outside attacker.

There are some known limitations of the security model, and they are limitations that I can accept. But I do believe that yolo-cage provides security in depth, and that the security it provides is greater than what is achieved through permission prompts that pop up during agent turns in Claude Code.

borenstein··on Show HN: Yolobox – Run AI coding agents with full sudo without nuking home dir
That's an excellent idea! I will give it a shot.
borenstein··on Show HN: Yolobox – Run AI coding agents with full sudo without nuking home dir
It depends what your threat model is and where the container lives. For example, k8s can go a long way towards sandboxing, even though it's not based on VMs.

The threat with AI agents exists at a fairly high level of abstraction, and developing with them assumes a baseline level of good intentions. You're protecting against mistakes, confusion, and prompt injection. For that, your threat mitigation strategy should be focused on high-level containment.

I've been working on something in a similar vein to yolobox, but the isolation goal has more to do with secret exfiltration and blast radius. I'd love some feedback if you have a chance!

https://github.com/borenstein/yolo-cage

borenstein··on Show HN: Yolobox – Run AI coding agents with full sudo without nuking home dir
This is great - I've been working on a related but different approach called yolo-cage (https://github.com/borenstein/yolo-cage) that addresses a different threat model.

Yolobox protects your local machine from accidental damage (crucial if you're worried about rm -rf ~). yolo-cage focuses on secret exfiltration and multi-agent coordination: it runs in Kubernetes, scans all egress traffic for secrets (API keys, tokens, SSH keys), enforces git branch isolation so multiple agents can work in parallel, and ensures agents can't merge their own PRs. "Agent proposes, human disposes."

The escape testing framework has a meta twist: there's a canned prompt that asks Claude to try to escape its own containment, and that prompt lives inside the repository. The agent verifies the prompt is legitimate by finding it in the repo it's auditing - the cage contains its own escape room instructions.

(I tried to post this as a separate Show HN but my account is too new - happy to discuss the tradeoffs between local sandboxing vs. server-side containment here.)