Daemon-less, rootless kernel-level sandbox and policy enforcement runtime for AI coding agents (Claude Code, OpenAI Codex CLI, Cursor, Gemini, Aider). Vetto injects immutable security boundaries directly between fork() and execve() with sub-4ms initialization latency.
Proof Before Promises
Autonomous agents execute non-deterministic code. Untrusted dependency hooks, prompt injections, or hallucinated commands can compromise host credentials (~/.ssh, ~/.aws, .env) or damage the filesystem. Under Vetto, unauthorized system calls are blocked deterministically:
> Reading ~/.ssh/id_rsa... BLOCKED (secret mask, EACCES)
> Opening raw socket... BLOCKED (net namespace, EAFNOSUPPORT)
> Spawning detached daemon... TERMINATED (process tree extinction, exit 125)
Fail-Closed Contract (Exit 125)
If an isolation boundary is violated or if required kernel primitives cannot be enforced, execution is terminated immediately with exit code 125. Descendant process trees and orphaned subprocesses are reaped synchronously. Guarantees that the underlying OS cannot enforce are reported as unsupported—security is never silently downgraded.
Quick Start
1. Install
Via package managers:
# npm
# Homebrew
# Cargo
Or download via standalone installer:
|
2. Transparent Agent Sandboxing
Enable zero-configuration sandboxing for your coding agent once. Vetto installs a non-destructive shim in ~/.vetto/shims with priority in PATH:
3. Direct Execution & MCP Quarantine
Execute standalone scripts under strict default isolation:
Quarantine a Model Context Protocol (MCP) server binary with isolated paths and disabled network egress:
Inspect security events and verify platform enforcement:
Platform Guarantees
Vetto enforces an immutable three-tier boundary model based on kernel capabilities available to unprivileged userspace:
| Platform / Tier | Filesystem Isolation | Network Isolation | Process Lifecycle | Status |
|---|---|---|---|---|
| Linux (Native)Tier 1 | Landlock LSM (ABI 1–6)Inode-level VFS masking over ~/.ssh, ~/.aws, .env |
Network Namespaces (CLONE_NEWNET)Loopback isolation + local TCP/TLS broker |
PID Namespaces (CLONE_NEWPID)Deterministic process tree teardown |
Production |
| Linux (WSL2)Tier 1 | Landlock LSM via WSL2 kernelFull inode restriction | Network Namespaces inside VMIsolated broker egress | PID Namespaces + /proc sweepFull tree extinction |
Production (Recommended for Windows) |
| macOS (Darwin)Tier 2 | Seatbelt (SBPL)Write confinement to $PROJECT and /tmp |
Network Lockdown--net=off via (deny network*) rules |
Process Group Sweepingkqueue watchdog supervision | Standard (Requires Full Disk Access for ~/Documents) |
| Windows NativeTier 3 | AppContainer & LPACDACL token restriction | Capability LockdownRestricted network SIDs | Job ObjectsJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE |
Guardrail (Use WSL2 for Tier 1 kernel namespaces) |
Binary Integrity & Attestation
Releases are built via automated GitHub Actions workflows with public cryptographic verification:
- SLSA Level 3 Provenance: In-toto build attestations generated for all release binaries.
- Minisign Signatures: Published with each release archive under public key
75ECEC9B5080C590. - Cryptographic Checksums: Standalone SHA256 hashes generated and verified during installation.
Documentation
- Platform Backends & Boundary Specs
- Agent Presets & Registry
- Threat Model & Security Assumptions
- Exit Codes & Failure Modes
- Vulnerability Reporting (SECURITY.md)
Contributing
Contributions are welcome. Please branch from main. All boundary assertions must include corresponding kernel validation test cases. Pull requests are validated against Linux and macOS kernel runners in GitHub Actions CI.
License
Licensed under the Apache License, Version 2.0 (LICENSE).