Skip to main content
The nono profile command lets you inspect the group-based security policy, explore profiles, compare configurations, and validate user-defined profiles. Every subcommand supports --json for programmatic consumption.

Commands

nono profile groups

List all policy groups or show details for a specific group.
Example output:
Detailed view shows every path in the group, with variables expanded to their actual values:

Options

nono profile list

List all available profiles, showing built-in, package-provided, and user-defined profiles separately. User profiles that shadow a built-in profile are flagged. Package profiles always use fully-qualified names and cannot be shadowed by bare user-profile names.
Example output:
Malformed user profiles are surfaced with their error instead of being silently hidden:
Bare names resolve from the user profile directory first, then built-ins. Package profiles resolve only by their fully-qualified package name, such as nolabs-ai/claude, so a user claude.json does not shadow the package profile.

Options

JSON entries contain name, source, and either the loaded profile’s description and extends fields or an error. For package profiles, source is "pack" and name is already the fully-qualified package identity; there is no separate pack field.

nono profile show

Display a fully resolved profile, including all inherited groups, filesystem grants, network configuration, hooks, and rollback settings.
Example output:
The --raw flag shows path variables as written in the profile (e.g., $HOME/.claude) rather than their expanded values. This is useful for understanding what a profile declares versus what it resolves to on a specific machine.

Options

nono profile diff

Compare two profiles side-by-side. Shows additions, removals, and changes across all profile sections: groups, filesystem, policy patches, security settings, network, hooks, rollback, open URLs, env credentials, and custom credentials.
Example output:
For custom credentials and hooks, the diff detects value-level changes when two profiles share the same key but differ in configuration (e.g., different upstream URL or inject_mode):
When profiles are identical, the output shows (no differences).

Options

nono profile validate

Validate a user profile JSON file against the embedded policy. Catches common mistakes before they cause runtime failures.
Checks performed: Example output for a valid profile:
Example output for an invalid profile:
The command exits with a non-zero status when validation fails, making it suitable for CI pipelines.

Options

JSON Output

All subcommands support --json for integration with scripts, CI pipelines, and tools like jq.

Use Cases

Resolved effective rules

--format manifest emits the fully resolved effective rules as JSON, using the same extends + group resolution that nono run uses. This is useful for policy-as-code pipelines, diffing resolved rules across environments, or feeding the output into other tooling:

Auditing security posture

Review exactly what a profile grants before deploying it:

Debugging sandbox failures

When a sandboxed process fails because a path is blocked, trace the policy:

CI/CD validation

Validate custom profiles before they ship:

Detecting built-in overrides

Check whether built-in profiles have been shadowed by user files: