HNHacker News
TopNewBestAskShowJobs

corv

1,232 karma · joined August 23, 2014

submissionscomments
corv··on Anthropic tries to hide Claude's AI actions. Devs hate it
When their questionnaire asked me for feedback I specifically mentioned that I hoped they would not reduce visibility to the point of Github Actions.

I guess that fell on deaf ears.

corv··on Vitamin D and Omega-3 have a larger effect on depression than antidepressants
I’ve heard this before that common doses are unnecessarily high but why is that? Patents?
corv··on Meet the Alaska Student Arrested for Eating an AI Art Exhibit
Really goes to say something about starving artists
corv··on Running Claude Code dangerously (safely)
I happen to use a Mac, even when targeting Linux so I'd have to use a container or VM anyways. It's nice how lightweight bubblewrap would be however.

Consider one wanted to replicate the human-approval workflow that most agent harnesses offer. It's not obvious to me how that could be accomplished by dropping privileges without an escape hatch.

corv··on Running Claude Code dangerously (safely)
I like the bubblewrap approach, it just happens to be Linux-only unfortunately. And once privileges are dropped for a process it doesn't appear to be possible to reinstate them.
corv··on Running Claude Code dangerously (safely)
You're right that blocking on every operation would defeat the purpose! Shannot is able to auto-approve safe operations for this reason (e.g. read-only, immutable)

So the agent can freely explore, check logs, list files, inspect service status. It only blocks when it wants to change something (install a package, write a config, restart a service).

Also worth noting: Shannot operates on entire scripts, not individual commands. The agent writes a complete program, the sandbox captures everything it wants to do during a dry run, then you review the whole batch at once. Claude Code's built-in controls interrupt at each command whereas Shannot interrupts once per script with a full picture of intent.

That said, you're pointing at a real limitation: if the fix genuinely requires a write to test a hypothesis, you're back to blocking. The agent can't speculatively install a package, observe it didn't help, and roll back autonomously.

For that use case, the OP's VM approach is probably better. Shannot is more suited to cases where you want changes applied to the real system but reviewed first.

Definitely food for thought though. A combined approach might be the right answer. VM/scratch space where the agent can freely test hypotheses, then human-in-the-loop to apply those conclusions to production systems.

corv··on Running Claude Code dangerously (safely)
Thank you, good to know it landed :)
corv··on Running Claude Code dangerously (safely)
I'm pursuing a different approach: instead of isolating where Claude runs, intercept what it wants to do.

Shannot[0] captures intent before execution. Scripts run in a PyPy sandbox that intercepts all system calls - commands and file writes get logged but don't happen. You review in a TUI, approve what's safe, then it actually executes.

The trade-off vs VMs: VMs let Claude do anything in isolation, Shannot lets Claude propose changes to your real system with human approval. Different use cases - VMs for agentic coding, whereas this is for "fix my server" tasks where you want the changes applied but reviewed first.

There's MCP integration for Claude, remote execution via SSH, checkpoint/rollback for undoing mistakes.

Feedback greatly appreciated!

[0] https://github.com/corv89/shannot

corv··on JuiceFS is a distributed POSIX file system built on top of Redis and S3
Looks like the underdog beats it handily and easier deployment to boot. What's the catch?
corv··on Ask HN: What are you working on? (January 2026)
I’m building Shannot, a human-in-the-loop sandbox for AI agents on production systems.

Instead of filtering commands with heuristics (which agents work around), it dry-runs entire scripts in a PyPy sandbox, captures every command and file operation, then shows you exactly what will happen before anything executes.

I’ve just added checkpoint/rollback so you can undo changes if something goes wrong. Currently working on example scripts for common sysadmin tasks (nginx config, log cleanup, cert audits, etc.)

https://github.com/corv89/shannot

corv··on Sandboxing Untrusted Python
The gist dismisses sandbox-2 as “might as well use Docker or VMs” but IMO that misses what makes it interesting. The PyPy sandbox isn’t just isolation, it’s syscall interception with a controller in the loop.

I’ve been building on that foundation: script runs in sandbox, all commands and file writes get captured, human-in-the-loop reviews the diff before anything executes. It’s not adversarial (block/contain) but collaborative (show intent, ask permission).

Different tradeoff than WASM or containers: lighter than VMs, cross-platform, and the user sees exactly what the agent wants to do before approving.

WIP, currently porting to PyPy 3.8 to unlock MacOS arm64 support: https://github.com/corv89/shannot

corv··on Observed Agent Sandbox Bypasses
Great documentation of the problem! The bypasses logged all stem from the same root problem: policy sandboxes give agents constraints to optimize against.

I’ve been exploring a different model: capture intent instead of blocking actions. Scripts run in a PyPy sandbox providing syscall interception so all commands and file writes get recorded. Human reviews the full diff before anything touches the real system.

No policies to bypass because there’s nothing to block! The agent does whatever it wants in the sandbox, you just see exactly what it wanted to mutate before approving.

WIP but core works: https://github.com/corv89/shannot

corv··on Show HN: A Claude Code plugin that catch destructive Git and filesystem commands
I’ve been working on a different approach to this problem: syscall-level interception via PyPy sandbox rather than command filtering. This captures all operations at the OS level, so tmp.sh scripts and Makefile edits get queued for human review before executing.

It’s still WIP but the core sandbox works. Feedback greatly appreciated: https://github.com/corv89/shannot

corv··on Google boss says AI investment boom has 'elements of irrationality'
When AI and robots take care of everything there is more time to make babbies
corv··on The Paranoid Guide to Running Copilot CLI in a Secure Docker Sandbox
Absolutely. I’ll send you an email
corv··on The Paranoid Guide to Running Copilot CLI in a Secure Docker Sandbox
Interesting! The sandboxing space definitely deserves more attention.

On the other side of the spectrum, we're working on a lightweight approach that augments user namespaces with libseccomp to filter syscalls via BPF.

https://github.com/corv89/shannot

corv··on Living Dangerously with Claude
We've been exploring libseccomp/BPF filters on top of bubblewrap namespaces for LLM sandboxing - the BPF layer lets you go beyond read-only mounts to syscall restrictions. Open to collaboration on pushing this further: https://github.com/corv89/shannot
corv··on Using Podman, Compose and BuildKit
I've replaced my OrbStack usage entirely with Podman Desktop and have zero issues with it, unlike with OrbStack.

In particular the 1TB VM disk image OrbStack uses wreaks havok with deduplicating backups. Their disk cache also caused me hours of debugging why my assets weren't up-to-date.

Admittedly the OrbStack GUI is super snappy tho.

corv··on Dev Compass – Programming Philosophy Quiz
Seeing Treeform here immediately made me think of Nim, and lo-and behold that's what the Javascript is generated from, cool!
corv··on nimbme – Nim bare-metal environment
Happy to see it get more attention here - it really is versatile
corv··on Show HN: Chawan TUI web browser
Awesome and in Nim!
corv··on Airhull lets electric boats glide on a layer of air
> There’s also a Russian torpedo that uses a similar concept to “fly” at supersonic speeds underwater.

Supercavitation

corv··on How I set up new MacBooks
The missing magic incantation to create your Brewfile:

brew bundle dump

corv··on Development on Apple Silicon with UTM
It's really good but the fs caching has bit me a couple times before I realized what was going on.
corv··on Introducing a terms of use and updated privacy notice for Firefox
Adieu Mozilla!
corv··on Tactility: OS for the ESP32 Microcontroller Family
I’m glad to see M5Stack is supported!
corv··on DuckDuckGo for Mac is now open source
This is great to hear but I’ve found Kagi’s Orion to be so good that I’m unlikely to switch
corv··on Apple releases eight small AI language models aimed at on-device use
You can map ChatGPT to the action button and talk to it from the lock screen.
corv··on Tell Congress: Stop the TikTok Ban. Instead, Protect Our Data No Matter Who
Another way of going about it would be to require transparent algorithms.

Any mass media platform could be problematic regardless of who owns it.

corv··on Top Best OpenWrt Routers for VPN in 2023
I get why one would flash OpenWrt on hardware that is no longer manufacturer supported but is there any indication that security is improved or at least equal before then?
← PreviousPage 2 of 12Next →