nono profile command provides scaffolding and tooling for creating custom profiles. Instead of reverse-engineering the JSON structure from built-in profiles, you can generate skeleton files, get editor autocomplete via JSON Schema, and access an LLM-oriented authoring guide.
Generating a Profile
Usenono profile init to scaffold a new profile:
~/.config/nono/profiles/<name>.json. Use --force to overwrite an existing file.
Minimal Skeleton
A minimal skeleton includes the core sections most profiles need:Full Skeleton
With--full, additional sections are included as empty stubs for all additive fields:
Fields that would override inherited behavior are intentionally omitted from the skeleton:
network_profile (emitting null would clear an inherited proxy profile), open_urls (would replace inherited OAuth2 origins), and allow_launch_services (would override inherited browser-opening permissions). Add these explicitly only when you intend to change the inherited behavior.Validation
Theinit command validates inputs before writing:
- Profile name must be alphanumeric with hyphens (no leading/trailing hyphens)
--extendstarget must exist as a built-in or user profile--groupsare checked against the embedded policy groups
JSON Schema
nono ships with a JSON Schema for profile files. Use it for editor autocomplete and validation.Exporting the Schema
Editor Integration
Export the schema locally, then add a$schema field to your profile for automatic validation in editors that support JSON Schema (VS Code, IntelliJ, Neovim with LSP, etc.):
.vscode/settings.json:
Authoring Guide
nono includes an embedded authoring guide designed for LLM agents assisting with profile creation:Workflow
A typical profile authoring workflow:-
Scaffold the profile:
-
Edit the generated file in your editor (with schema autocomplete):
-
Validate the profile:
-
Inspect the resolved profile (after inheritance and group expansion):
-
Compare against a baseline:
-
Test the profile:
-
Use the profile:
Available Groups
Usenono policy groups to list all available security groups. To see details for a specific group:
security.groups field. See Profiles & Groups for the full group taxonomy and built-in group list.
Common Patterns
Agent with API Credentials
CI Build Environment
Override a Deny Rule
override_deny only removes the deny rule. You must also grant access via filesystem or policy.add_allow_* for the path to be accessible.Exclude Inherited Groups
CLI Reference
| Command | Description |
|---|---|
nono profile init <name> | Generate a skeleton profile |
nono profile init <name> --extends <base> | Inherit from a base profile |
nono profile init <name> --groups <g1>,<g2> | Pre-populate security groups |
nono profile init <name> --full | Include all optional sections |
nono profile init <name> --output <path> | Write to a specific file |
nono profile init <name> --force | Overwrite existing file |
nono profile init <name> --description <text> | Set the profile description |
nono profile schema | Output JSON Schema to stdout |
nono profile schema --output <path> | Write JSON Schema to a file |
nono profile guide | Print the authoring guide |