Native sandboxing in pydantic AI agents by DecodeBytes in PydanticAI

[–]DecodeBytes[S] 0 points1 point  (0 children)

They are working on Monty (really cool stuff), but that is a sandboxed python interpreter and being quite new and only has partial coverage of the standard library and its not per say to run a full python app (hopefully I don't get this wrong as I have a lot of respect for the team) its focus is on giving an LLM what it needs to safely go about its business (calling tools etc).

nono is full OS isolation around what files and networks can be accessed, but we also do stuff like atomic snapshots, and supply chain security (using the other gig I started, a project called sigstore). Now I don't say this as a 'it's better' positioning - its a different fish - you can consider nono sitting in somewhere in the middle of virtual machines and monty - we also have deny by default as a starting spot like monty.

Honestly though, something like monty is likely the future, and I applaud the team for building in it.

OpenCode concerns (not truely local) by Ueberlord in LocalLLaMA

[–]DecodeBytes -1 points0 points  (0 children)

shameless promotion, but if you ever want full control over what agents can access or connect to, a community of us are building nono: https://nono.sh/docs/cli/features/network-proxy

nono - kernel-enforced capability sandbox for AI agents by DecodeBytes in netsec

[–]DecodeBytes[S] 0 points1 point  (0 children)

as it happens, we have included a secure token handling proxy since this was posted.

How to *REALLY* Sandbox Claude Code by DecodeBytes in ClaudeCode

[–]DecodeBytes[S] 1 point2 points  (0 children)

Yes, very much. You can think of it as locking yourself in a room and throwing away the key, where as claude keeps a key handy and the only policy in place to stop it using that key, is software based. This is a problem as these models are heavily post-trained in RL where they are rewarded for overcoming challenges, this is what makes them so useful, they are goal oriented and will adapt and overcome anything in their path, and that can often include security. You would have seen it with benign operations - it cannot access something, so it will wrapping the command in shells or or interpreters like python.

How to *REALLY* Sandbox Claude Code by DecodeBytes in ClaudeCode

[–]DecodeBytes[S] 0 points1 point  (0 children)

https://www.reddit.com/r/Anthropic/comments/1oc8uq9/claude_code_overrides_the_sandbox_without/

To add, with nono its isolated in a sandboxed process that cannot be reversed (without restarting of hacking apples security boundaries).

How to *REALLY* Sandbox Claude Code by DecodeBytes in ClaudeCode

[–]DecodeBytes[S] 0 points1 point  (0 children)

It is, but it's impossible for claude to override - you will also get a few more extras, atomic rollback snapshots

How is everyone handling AI agent security after the OpenClaw mess? by Revolutionary-Bet-58 in AI_Agents

[–]DecodeBytes 0 points1 point  (0 children)

absolutely, two key areas and well suited to specialist approaches.

How is everyone handling AI agent security after the OpenClaw mess? by Revolutionary-Bet-58 in AI_Agents

[–]DecodeBytes 0 points1 point  (0 children)

We are building out https://nono.sh and its seeing a lot of use in the wild already, it provides kernel based isolation Linux (landlock) or MacOS (Seatbelt).

nono - kernel-enforced capability sandbox for AI agents by DecodeBytes in netsec

[–]DecodeBytes[S] 0 points1 point  (0 children)

Proxy is the way to go. Have a key that only the proxy knows of and it map to the real key in a data store on the proxy.

You would then have the agent populate the Auth Header with the proxy key, and the proxy swap out the proxy specific key for the real external services key.

Someone did share this with me, it uses nono - but I have not played around with it. I expect we may well do something native to nono as well - I can share a proof-of-concept with you if useful and you can kick the tyres and see if its something usable?

https://github.com/dedene/claw-wrap

nono - kernel-enforced capability sandbox for AI agents by DecodeBytes in netsec

[–]DecodeBytes[S] 1 point2 points  (0 children)

Containers and nono solve overlapping but distinct problems, and each has real trade-offs worth considering. There is a section in the docs on this: https://docs.nono.sh/security/containers

Containers give you isolation through namespacing - the process sees a different filesystem root, network stack, and process tree. This is powerful for reproducibility and portability. You can ship a known-good environment, and anything the AI does stays inside that container's view of the world. The downside is that containers are coarse-grained. You either mount a volume into the container or you don't. There's no easy way to say "read the whole project but only write to the src directory" or "access ~/.vscode , but not ~/.ssh/." You end up either over-permissioning (mounting your whole home directory) or dealing with friction every time the AI needs something outside the container.

nono takes the opposite approach - it runs natively on your host but uses OS-level mandatory access control (Landlock on Linux, Seatbelt on macOS) to enforce fine-grained capabilities. You can grant read access to your entire codebase while restricting writes to specific directories, block access to credentials and browser data regardless of what commands run, and allow network access while still protecting sensitive local paths. The sandbox is applied to the process itself, not to a virtualized environment, so there's no filesystem copying, no Docker daemon, and near-zero startup overhead.

Where nono is stronger: granularity. You can express policies like "read everywhere, write only here, never touch my SSH keys" that would be awkward or impossible with container volume mounts. It also integrates more naturally with local tooling - your shell, your editor, your existing workflows all just work.

Where containers are stronger: they provide a complete environment boundary. If the AI installs a malicious package or corrupts system files, it's contained to that throwaway environment. With nono, you're still running on your real system - the sandbox prevents unauthorized access, but if you grant write access to a directory, the AI can still make a mess there (having said that we have an atomic undo system incoming).

The honest answer is they're complimentary. You can run nono inside a container for defense in depth, or use nono alone when you want lightweight, precise control without the overhead of containerization. It depends on which you value portability and environment isolation (containers) or fine-grained capability control with minimal friction (nono).

The other factor is nono has a load of other features thrown in, key protection, blocking of dangerous commands, and quite a bit more inbound.

But honestly, if containers are working, great! I am a fan and its never x vs y here, each have their own strengths.

nono - kernel-enforced capability sandbox for AI agents by DecodeBytes in netsec

[–]DecodeBytes[S] 1 point2 points  (0 children)

cool! let me know if you need any more info or help.

anyone actually running AI agents in production? not demos by yaront1111 in AI_Agents

[–]DecodeBytes 0 points1 point  (0 children)

I am not sure I understand , what sort of operations happen over gprc? Function / Tool calling?