Dynamic Permission Expansion
Approve, deny, or inject credentials at runtime. On Linux, seccomp-notify intercepts system calls and enables transparent file descriptor passing so agents access new resources without retry logic.
Beyond static sandboxes
A static sandbox defines permissions upfront: the agent can access these files, these network hosts, these commands. But real-world agent workflows are dynamic. An agent might discover it needs to read a configuration file in a sibling project, or access a new API endpoint it was not originally granted.
The runtime supervisor sits between the agent and the kernel sandbox, intercepting requests that would otherwise be denied. It presents the request to the human operator (via terminal prompt, webhook, or API) and, if approved, dynamically expands the sandbox scope for that session. The expansion is session-scoped and does not persist after the agent exits.
seccomp-notify on Linux
On Linux, nono uses seccomp-notify to intercept system calls that would violate the sandbox. The supervisor receives the intercepted syscall, prompts for approval, and if granted, passes the file descriptor directly to the agent process. The agent does not need retry logic — the syscall completes transparently.
Credential Injection
Secrets are loaded from the system keystore (macOS Keychain, Linux Secret Service) and injected via a reverse proxy (--proxy-credential) or as environment variables (--env-credential). The reverse proxy approach ensures the agent never sees raw API tokens.
# Enable supervised mode with capability expansion$ nono run --supervised --allow ~/projects/myapp -- claude# Combine with credential injection via reverse proxy$ nono run --supervised \--allow ~/projects/myapp \--proxy-credential openai \--proxy-credential anthropic \-- claude# Or inject credentials as environment variables$ nono run --supervised \--allow ~/projects/myapp \--env-credential openai_api_key,anthropic_api_key \-- claude
# Agent requests access to a new file# nono intercepts via seccomp-notify on openat/openat2[nono] Agent requests: FILE_WRITE ~/projects/other/config.yamlApprove? [y/N/always] y[nono] Expanding sandbox to include:~/projects/other/config.yaml (write)Session-scoped. Will not persist after session ends.# seccomp-notify passes the file descriptor directly# via SCM_RIGHTS - no retry logic needed in the agent.
Supervisor Capabilities
File Expansion
Dynamically grant access to new files and directories. Pattern-based rules constrain what the supervisor can approve.
Network Expansion
Approve connections to new hosts at runtime. Denied by default, approved per-session with optional domain pattern matching.
Command Approval
Approve execution of commands not in the original allow-list. Session-scoped approval with full audit trail logging.
Get started with nono
Runtime safety infrastructure that works on macOS, Linux, and in CI.