Hacker Newsnew | past | comments | ask | show | jobs | submit | l9o's commentslogin

Is it really a VM? I thought CC’s sandbox was based on bubblewrap/seatbelt which don’t use hardware virtualization and share the host OS kernel?


Turns out it's a full Linux container run using Apple's Virtualization framework: https://gist.github.com/simonw/35732f187edbe4fbd0bf976d013f2...

Update: I added more details by prompting Cowork to:

> Write a detailed report about the Linux container environment you are running in

https://gist.github.com/simonw/35732f187edbe4fbd0bf976d013f2...


Honestly it sounds like they went above and beyond. Does this solve the trifecta, or is the network still exposed via connectors?


Looks like the Ubuntu VM sandbox locks down access to an allow-list of domains by default - it can pip install packages but it couldn't access a URL on my blog.

That's a good starting point for lethal trifecta protection but it's pretty hard to have an allowlist that doesn't have any surprise exfiltration vectors - I learned today that an unauthenticated GET to docs.google.com can leak data to a Google Form! https://simonwillison.net/2026/Jan/12/superhuman-ai-exfiltra...

But they're clearly thinking hard about this, which is great.


> Does this solve the trifecta, or is the network still exposed via connectors?

Having sandboxes and VMs still doesn't mean the agent can still escape out of all levels and still exfiltrate data.

It just means the attackers need more vulnerabilities and exploits to chain together for a VM + sandbox and permissions bypass.

So nothing that a typical Pwn2Own competition can't break.


It feels like a weird tension: we worry about AI alignment but also want everyone to have unrestricted local AI hardware. Local compute means no guardrails, fine-tune for whatever you want.

Maybe the market pricing people out is accidentally doing what regulation couldn't? Concentrating AI where there's at least some oversight and accountability. Not sure if that's good or bad to be honest.


> market pricing people out

For now. Chinese supply chains include DRAM from CXMT (sanctioned) and NAND from YMTC (not sanctioned, holds patents on 3D stacking that have been licensed by Korean memory manufacturers).


They may not be sanctioned for selling, but they're sanctioned because they can't buy modern fab machinery.


The people who worry about “alignment” are very much not the same people who want anyone to have local AI hardware. They are the people who would force every computer legally allowed to be sold to the hoi polloi to be as locked down as an iPhone if they could.


I actually find that nixpkgs being a monorepo makes it even better. The code is surprisingly easy to navigate and learn if you've worked in large codebases before. The scaling issues are good problems to have, and git has gotten significantly better at handling large repos than it was a decade ago, when Facebook opted for Mercurial because git couldn't scale to their needs. If anything, it's GitHub issues and PRs that are probably showing its cracks.


Out of curiosity, what would be an ideal UX for you? I'm working on a Rust library for this exact problem (CLI and language bindings should be easy to add).

It uses KVM directly on Linux and Virtualization.framework on macOS, with a builder API for VM configuration. For AI sandboxing specifically, it has a higher-level "sandbox" mode with a guest agent for structured command execution and file I/O over vsock. You get proper exit codes and stdout/stderr without console scraping.

Also supports pre-warmed VM pools for fast startup and shared directories via virtio-fs.

I'm planning to support OCI images, but not sure if that's important to people. I typically just build my own root disks with Nix.


I'm after this too.

I want to have a "container" (used in the conceptual sense here - I'm aware of the differences between container and other solutions) that I can let an AI agent run commands in but is safely sandboxed from the rest of my computer.

For me this is primarily file access. I don't want it inadvertently deleting the wrong things or reading my SSH keys.

But the way the agent uses it is important too. They generally issue the commands they want to run as strings, eg:

  bash ls
  sed -i 's/old_string/new_string/g' filename.py
I need a way to run these in the "container". I can `ssh command` but open to other options too.


If you provide your own functions/tools to the AI agent, wouldn't that let you do exactly that?

ie "Here AI, call this function -> local_exec(commmand_name, {param1, param2, [etc]})" to execute functions.

And you'd wire up your local_exec() function to run the command in the container however you choose. (chroot, namespace, ssh to something remote, etc)


This will work fine for bash commands, but most Agent implementations also have read/write file functions that are implemented using local file operations.


Awesome, this sounds cool.

In terms of UX, I kinda want something to paper over the inconsistencies of the different tools I need to use to set up the network etc. (Kinda like the `docker` CLI tool).

When I looked at it the first thing I thought was "the tun/tap setup seems fiddly, and I bet I won't leave things in a consistent state (note, I just glanced at this blog[0]). The copy on write filesystem stuff looks cool too, but also fiddly.

The more I think about it the more I just come up with "just docker but VMs".

[0] https://harryhodge.co.uk/posts/2024/01/getting-started-with-...


If you have a link to your project that you could share I'd be interested in following it - this sounds like something I might want to use one day.


Not yet! But I will make sure to link here once it's up in a few days (or post to HN? not sure what the etiquette around self-promotion is these days). It's somewhat functional but not usable by anyone other than me at this point most likely (:


RAM requirements stay the same. You need all 358B parameters loaded in memory, as which experts activate depends on each token dynamically. The benefit is compute: only ~32B params participate per forward pass, so you get much faster tok/s than a dense 358B would give you.


The benefit is also RAM bandwidth. That probably adds to the confusion, but it matters a lot for decode. But yes, RAM capacity requirements stay the same.


I wonder if LLMs can help here to some extent. I agree with others that cooldowns aren't helpful if everyone is doing it.

I've been working on automatic updates for some of my [very overengineered] homelab infra and one thing that I've found particularly helpful is to generate PRs with reasonable summaries of the updates with an LLM. it basically works by having a script that spews out diffs of any locks that were updated in my repository, while also computing things like `nix store diff-closures` for the before/after derivations. once I have those diffs, I feed them into claude code in my CI job, which generates a pull request with a nicely formatted output.

one thing I've been thinking is to lookup all of those dependencies that were upgraded and have the LLM review the commits. often claude already seems to lookup some of the commits itself and be able to give a high level summary of the changes, but only for small dependencies where the commit hash and repository were in the lock file.

it would likely not help at all with the xz utils backdoor, as IIRC the backdoor wasn't even in the git repo, but on the release tarballs. but I wonder if anyone is exploring this yet?


We built and launched this product about 2 months ago, HN thread here: https://news.ycombinator.com/item?id=45439721

Totally agree that AI is great for this, it will work harder and go deeper and never gets tired of reading code or release notes or migration guides. What you want instead of summaries is to find the breaking changes, figure out if they matter, then comment on _that_.


this looks really polished, congrats! in your opinion, how does it compare with alternatives like actualbudget [0]? I've been using Quicken for a long time and might be in the market for a subscription-less alternative that is ideally self-hosted. Quicken has been running into lots of issues syncing some of my accounts lately (mostly duping assets).

[0] https://actualbudget.org/


I've used actualbudget for several years now after switching from Quicken. Actual is great for budgeting but my strategy has been to use a separate investment tracker to get a nice dashboard to look at. I haven't found one yet that handles account syncing seamless as I'd like... I've used Ghostfolio but I'm going to give this a try.

On a side note; SimpleFIN works well with actual, and the person that runs the bridge is great.


I've been working on something similar, a typed shell scripting language called shady (hehe). haven't shared it because like 99% of the code was written by claude and I'm definitely not a programming language expert. it's a toy really.

but I learned a ton building this thing. it has an LSP server now with autocompletion and go to definition, a type checker, a very much broken auto formatter (this was surprisingly harder to get done than the LSP), the whole deal. all the stuff previously would take months or a whole team to build. there's tons of bugs and it's not something I'd use for anything, nu shell is obviously way better.

the language itself is pretty straightforward. you write functions that manipulate processes and strings, and any public function automatically becomes a CLI command. so like if you write "public deploy $env: str $version: str = ..." you get a ./script.shady deploy command with proper --help and everything. it does so by converting the function signatures into clap commands.

while building it I had lots of process pipelines deadlocking, type errors pointing at the wrong spans, that kind of thing. it seems like LLMs really struggle understanding race conditions and the concept of time, but they seem to be getting better. fixed a 3-process pipeline hanging bug last week that required actually understanding how the pipe handles worked. but as others pointed out, I have also been impressed at how frequently sonnet 4.5 writes working code if given a bit of guidance.

one thing that blew my mind: I started with pest for parsing but when I got to the LSP I realized incremental parsing would be essential. because I was diligent about test coverage, sonnet 4.5 perfectly converted the entire parser to tree-sitter for me. all tests passed. that was wild. earlier versions of the model like 3.5 or 3.7 struggled with Rust quite a bit from my experience.

claude wrote most of the code but I made the design decisions and had to understand enough to fix bugs and add features. learned about tree-sitter, LSP protocol, stuff I wouldn't have touched otherwise.

still feels kinda lame to say "I built this with AI" but also... I did build it? and it works? not sure where to draw the line between "AI did it" and "AI helped me do it"

anyway just wanted to chime in from someone else doing this kind of experiment :)


"because I was diligent about test coverage, sonnet 4.5 perfectly converted the entire parser to tree-sitter for me. all tests passed."

I often suspect that people who complain about getting poor results from agents haven't yet started treating automated tests as a hard requirement for working with them.

If you don't have substantial test coverage your coding agents are effectively flying blind. If you DO have good test coverage prompts like "port this parser to tree-sitter" become surprisingly effective.


yes, completely agree. having some sort of guardrails for the LLM is extremely important.

in the earlier models I would sometimes write tests for checking that my coding patterns were being followed correctly. basic things like certain files/subclasses being in the correct directories, making sure certain dunder methods weren't being implemented in certain classes where I noticed models had a tendency to add them, etc.

these were all things that I'd notice the models would often get wrong and would typically be more of a lint warning in a more polished codebase. while a bit annoying to setup, it would vastly improve the speed and success rate at which the models would be able to solve tasks for me.

nowadays many of those don't seem to be as necessary. it's impressive to see how the models are evolving.


What do you consider "General Intelligence" to be?


A good start would be:

1. Robust to adversarial attacks (e.g. in classification models or LLM steering).

2. Solving ARC-AGI.

Current models are optimized to solve the current problem they're presented, not really find the most general problem-solving techniques.


I like to think I'm generally intelligent, but I am not robust to adversarial attacks.

Edit: I'm trying arc-agi tests now and it's looking bad for me: https://arcprize.org/play?task=e3721c99


"I like to think I'm generally intelligent, but I am not robust to adversarial attacks. I'm trying arc-agi tests now and it's looking bad for me."

One man's modus ponens is another man's modus tollens.

"I'm trying arc-agi tests now and it's looking bad for me. I am not robust to adversarial attacks. I think I'm not generally intelligent."


I forgot what modus ponens/tollens are, but you get get it - I think I'm not generally intelligent

For people coming after me, or for anyone who took discrete math a decade ago and need a quick refresher:

Modus ponens (affirming): if P, then Q. P is true, therefore Q.

If it is raining, the grass is wet. It is raining. Therefore the grass is wet.

Modus tollens (denying): if P, then Q. Q is false. Therefore P is false.

If it is raining, then the grass is wet. The grass is not wet. Therefore, it is not raining.


Personally, I think this might be an even better approach. The Nest Gen1/2 UI was pretty slick. It would be a shame to have to use a custom firmware.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: