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-cwd -- claude
Allow Claude to read your global config:
nono run --allow-cwd --read-file ~/.claude/config.json -- claude
Start an interactive shell inside the sandbox:
nono shell --allow .

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 --path ~/.ssh/id_rsa --op read
# Output: DENIED - sensitive_path (SSH keys and config)

# JSON output for programmatic use
nono why --json --path ~/.aws --op read
# {"status":"denied","reason":"sensitive_path","category":"AWS credentials",...}

Check with capability context

# Would ./src be writable if we use --allow .?
nono why --path ./src --op write --allow .
# Output: ALLOWED - Granted by: --allow .

# Check against a profile
nono why --path ./src --op read --profile claude-code

Query from inside a sandbox

# AI agents can query their own capabilities
nono run --allow-cwd -- nono why --self --path /tmp --op write --json
# {"status":"denied","reason":"not_in_allowed_paths",...}

Check network access

# Network is allowed by default
nono why --host api.openai.com --port 443
# Output: ALLOWED - network allowed by default

# Check with network blocked
nono why --host api.openai.com --net-block
# Output: DENIED - network_blocked

Build Tools

Cargo (Rust)

# Full build with all access
nono run --allow-cwd -- 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-cwd -- npm install

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

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

Make

nono run --allow-cwd -- 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-cwd -- 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-cwd -- git status
nono run --allow-cwd -- git commit -m "message"

# Push/pull (network allowed by default)
nono run --allow-cwd -- 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-cwd --read ~/.local/share/my-tool -- my-tool

Debugging and Testing

Dry Run

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

Verbose Output

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

Testing Sandbox Enforcement

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

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

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

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

Shell Scripts

Running a Script

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

Inline Commands

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

Configuration Files

Read-Only Config

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

Multiple Config Files

nono run --allow-cwd \
  --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

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-cwd \
  --net-block \
  -- make release