Skip to content

Taxonomy Profiles

Profiles control how much built-in classification nah starts with. Set in global config:

# ~/.config/nah/config.yaml
profile: full      # full | none

full (default)

Comprehensive coverage across all tool categories.

  • 31 classification files covering shell builtins, coreutils, git, package managers, containers, databases, browser/agent tools, network tools, and more
  • Built-in classifier functions for commands that need flag-, wrapper-, or execution-aware classification
  • All safety lists populated with defaults (known registries, exec sinks, sensitive basenames, decode commands)
  • All sensitive paths active

Best for: most users. Start here and tune as needed.

none

Blank slate. Clears everything:

  • Empty classify tables — no commands are recognized
  • Built-in classifier functions disabled — no flag-, wrapper-, or execution-aware classification
  • All safety lists cleared — no known registries, exec sinks, decode commands, or sensitive basenames
  • Sensitive directories cleared — no built-in sensitive paths (hook self-protection still active)
  • Content patterns cleared — no built-in content inspection
  • Project boundary check disabled

Everything falls to unknownask unless you explicitly classify it.

Best for: users who want full control and will build their own taxonomy.

profile: none

# Build up from scratch
classify:
  filesystem_delete:
    - "rm -rf"
    - "rm -r"
  git_history_rewrite:
    - "git push --force"

actions:
  filesystem_delete: ask
  git_history_rewrite: block

known_registries:
  - pypi.org
  - github.com

How profiles interact with user rules

Your classify: entries in global config are always Phase 1 (checked first), regardless of profile. They override both built-in tables and built-in classifier functions.

The profile controls what's available in Phase 2 (built-in classifier functions) and Phase 3 (built-in tables):

Phase Source full none
1 Global config classify: active active
2 Built-in classifier functions active skipped
3 Built-in tables full set empty
3 Project config classify: active active

This means even with profile: none, your global and project classify entries still work.

Note

Only full and none are supported. Older configs that still say minimal are treated as full with a warning; use none when you want to build your own taxonomy from a blank slate.