Why Profiles?
Manually specifying capabilities for every tool is tedious and error-prone:Profile Sources
Profiles can come from three sources, in order of precedence:| Source | Location | Trust Level |
|---|---|---|
| CLI flags | Command line | Highest - explicit user intent |
| User profiles | ~/.config/nono/profiles/ | Medium - user-defined |
| Built-in profiles | Compiled into binary | Base - audited defaults |
Profile Format
Profiles use TOML format:Working Directory Section
The[workdir] section controls whether and how the current working directory is automatically shared with the sandboxed process. This is set per-profile so each application can declare its own CWD requirements.
| Value | Meaning |
|---|---|
none | No automatic CWD access (default if section omitted) |
read | Read-only access to CWD |
write | Write-only access to CWD |
readwrite | Full read+write access to CWD |
[workdir] access level, nono will prompt the user to confirm CWD sharing (unless --allow-cwd is used to skip the prompt).
Secrets Section
The[secrets] section maps keystore account names to environment variable names. Secrets are loaded from the system keystore (macOS Keychain / Linux Secret Service) before the sandbox is applied, then injected as environment variables.
--secrets flag:
Environment Variables
Profiles support these environment variables in path values:| Variable | Expands To |
|---|---|
$WORKDIR | Current working directory (from --workdir or cwd) |
$HOME | User’s home directory |
$XDG_CONFIG_HOME | XDG config directory (default: ~/.config) |
$XDG_DATA_HOME | XDG data directory (default: ~/.local/share) |
$TMPDIR | System temporary directory |
$UID | Current user ID |
Creating User Profiles
-
Create the profiles directory:
-
Create a TOML file:
-
Use the profile:
Profile Verification
Built-in profiles are compiled into the nono binary. User profiles can optionally be signed using minisign for integrity verification.Built-in Profile Policies
These profiles are compiled into nono and can be used without any configuration. Each section documents the exact permissions granted.claude-code
[workdir]) and ~/.claude, read+write to ~/.claude.json, full network access.
opencode
[workdir]) and OpenCode config/cache/data directories, full network access.
openclaw
[workdir]), read+write to OpenClaw config, state, local data, and temp directories, full network access.
Overriding Built-in Profiles
CLI flags always take precedence over profile settings:Requesting New Built-in Profiles
If you’d like a built-in profile for a tool not listed here:- Open an issue on the nono GitHub repository
- Include:
- Tool name and repository URL
- Required filesystem access patterns
- Network requirements
- Any special considerations
