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 unknown → ask 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.