Skip to main content
Common usage patterns and recipes for nono.

AI Coding Agents

Claude Code

Run Claude Code with access limited to your project:
nono run --allow . -- claude
Allow Claude to read your global config:
nono run --allow . --read-file ~/.claude/config.json -- claude

OpenClaw

Run OpenClaw gateway with nono sandbox:
nono run --profile openclaw -- openclaw gateway
Or manually specify permissions:
nono run --allow ~/.openclaw -- openclaw gateway

Generic AI Agent

nono run --allow ./workspace -- my-ai-agent

Checking Path Access

Why is a path blocked?

# Check a sensitive path
nono why ~/.ssh/id_rsa
# Output: BLOCKED: ~/.ssh/id_rsa is a sensitive path

# Check with suggestions
nono why -s ~/.aws
# Output includes: nono run --read ~/.aws -- <command>

Check a project directory

nono why -s ./my-project
# Shows what flags would grant access

Build Tools

Cargo (Rust)

# Full build with all access
nono run --allow . -- cargo build

# Read source, write only to target
nono run --read ./src --read ./Cargo.toml --read ./Cargo.lock --allow ./target -- cargo build

npm/Node.js

# Install dependencies (requires network, allowed by default)
nono run --allow . -- npm install

# Run build (offline)
nono run --allow . --net-block -- npm run build

# Run tests
nono run --allow . -- npm test

Make

nono run --allow . -- make

Network Operations

curl/wget

# Download a file (network allowed by default)
nono run --write ./downloads -- curl -o ./downloads/file.tar.gz https://example.com/file.tar.gz

# API request
nono run --allow . -- curl -X POST https://api.example.com/data

Git Operations

# Clone (network allowed by default)
nono run --allow ./repos -- git clone https://github.com/user/repo.git

# Local operations
nono run --allow . -- git status
nono run --allow . -- git commit -m "message"

# Push/pull (network allowed by default)
nono run --allow . -- git push

Multi-Directory Access

Separate Source and Output

nono run --read ./src --allow ./dist -- webpack build

Multiple Projects

nono run --allow ./project-a --allow ./project-b -- my-tool

Shared Dependencies

nono run --allow . --read ~/.local/share/my-tool -- my-tool

Debugging and Testing

Dry Run

Preview what access would be granted:
nono run --allow . --read /etc --dry-run -- my-agent

Verbose Output

# Maximum verbosity
nono run -vvv --allow . -- command

Testing Sandbox Enforcement

# Should succeed - writing to allowed path
nono run --allow . -- sh -c "echo test > ./allowed.txt"

# Should fail - writing outside allowed path
nono run --allow . -- sh -c "echo test > /tmp/blocked.txt"

# Should succeed - network allowed by default
nono run --allow . -- curl https://example.com

# Should fail - network blocked with --net-block
nono run --allow . --net-block -- curl https://example.com

Shell Scripts

Running a Script

nono run --allow . -- ./my-script.sh

Inline Commands

nono run --allow . -- sh -c "echo hello && ls -la"

Configuration Files

Read-Only Config

nono run --allow . --read-file ~/.config/myapp/config.toml -- myapp

Multiple Config Files

nono run --allow . \
  --read-file ~/.gitconfig \
  --read-file ~/.npmrc \
  -- my-tool

Using Profiles

Built-in Profiles

# Claude Code profile
nono run --profile claude-code -- claude

# OpenClaw profile
nono run --profile openclaw -- openclaw gateway

# Cargo build profile
nono run --profile cargo-build -- cargo build

Profile with Extra Permissions

nono run --profile claude-code --read /tmp/extra -- claude

Profile with Custom Workdir

nono run --profile claude-code --workdir ./my-project -- claude

Real-World Scenarios

Code Review Agent

An agent that reads code and writes review comments:
nono run \
  --read ./src \
  --read ./tests \
  --write ./reviews \
  -- code-review-agent

Documentation Generator

An agent that reads source and generates docs:
nono run \
  --read ./src \
  --allow ./docs \
  -- doc-generator

Data Processing Pipeline

nono run \
  --read ./input \
  --write ./output \
  --read-file ./config.yaml \
  -- data-processor

Offline Build Environment

nono run \
  --allow . \
  --net-block \
  -- make release