nah : Un garde d'autorisation contextuel pour Claude Code

Ce que fait nah
nah est un garde-permission basé sur Python qui s'intercale entre Claude Code et l'exécution des outils. Il répond aux limites du système de permission binaire autoriser-ou-refuser de Claude en ajoutant une prise de décision contextuelle. L'outil intercepte chaque appel d'outil avant son exécution et le classe en fonction de ce qu'il fait réellement.
Comment ça fonctionne
Chaque appel d'outil passe d'abord par un classifieur structurel déterministe (aucun LLM requis) qui s'exécute en millisecondes. Le classifieur associe les commandes à des types d'action comme :
- filesystem_read
- filesystem_delete
- package_run
- db_write
- git_history_rewrite
- lang_exec
Pour chaque type d'action, nah applique l'une des quatre politiques : autoriser, contexte (dépend de la cible), demander ou bloquer. La même commande reçoit des décisions différentes selon le contexte :
rm dist/bundle.js(dans le projet) → Autoriserrm ~/.bashrc(en dehors du projet) → Demandergit push --force→ Demander (réécriture de l'historique)base64 -d | bash→ Bloquer (décodage + pipe d'exécution)
Ce qu'il protège
nah vérifie différents aspects selon l'outil :
- Bash : Classification structurelle des commandes — type d'action, composition des pipes, déballage du shell
- Read : Détection des chemins sensibles (~/.ssh, ~/.aws, .env, ...)
- Write : Vérification du chemin + limite du projet + inspection du contenu (secrets, exfiltration, charges destructives)
- Edit : Vérification du chemin + limite du projet + inspection du contenu sur la chaîne de remplacement
- Glob : Protège la recherche récursive dans les emplacements sensibles
- Grep : Détecte les modèles de recherche d'identifiants en dehors du projet
- MCP tools : Classification générique pour les serveurs d'outils tiers (mcp__*)
Installation et utilisation
Installez avec : pip install nah && nah install
Désinstallez avec : nah uninstall && pip uninstall nah
L'outil fonctionne immédiatement avec des paramètres par défaut raisonnables, sans nécessiter de configuration. Vous pouvez exécuter une démo de sécurité dans Claude Code avec : /nah-demo qui parcourt 25 cas en direct sur 8 catégories de menaces, y compris l'exécution de code à distance, l'exfiltration de données et les commandes obfusquées.
Options de configuration
Lorsque vous souhaitez personnaliser le comportement, vous pouvez configurer via :
~/.config/nah/config.yaml(global).nah.yaml(par projet, ne peut que resserrer les permissions)
Exemple de configuration :
actions:
filesystem_delete: ask # toujours confirmer les suppressions
git_history_rewrite: block # jamais autoriser les force push
lang_exec: allow # faire confiance aux scripts inline
sensitive_paths:
~/.kube: ask
~/Documents/taxes: block
Couche LLM facultative
Pour les commandes que le classifieur déterministe ne peut pas résoudre, nah peut optionnellement consulter un LLM. Le flux est : Appel d'outil → nah (déterministe) → LLM (facultatif) → permissions de Claude Code → exécuter. La couche déterministe s'exécute toujours en premier — le LLM ne résout que les décisions "demander" restantes. Si aucun LLM n'est configuré ou disponible, la décision reste "demander" et l'utilisateur est invité. Les fournisseurs pris en charge incluent Ollama, OpenRouter, OpenAI, Anthropic et Snowflake Cortex.
Notes importantes
Les développeurs mettent spécifiquement en garde contre l'utilisation du drapeau --dangerously-skip-permissions de Claude Code. En mode contournement, les crochets se déclenchent de manière asynchrone — les commandes s'exécutent avant que nah puisse les bloquer. Au lieu de cela, ils recommandent d'autoriser des outils comme Bash, Read, Glob et Grep et de laisser nah les protéger.
📖 Read the full source: HN AI Agents
👀 See Also

Demande de Fonctionnalité pour Claude Desktop : Crochet de Démarrage de Session pour l'Initialisation Automatique
Un développeur créant des systèmes de contexte persistant pour Claude Desktop identifie un manque : le champ Préférences utilisateur n'injecte des instructions que lorsque l'utilisateur envoie le premier message, nécessitant des déclencheurs manuels pour l'initialisation. Il propose d'ajouter un champ d'exécution "Au démarrage de la session" qui s'exécute automatiquement à l'ouverture d'une nouvelle conversation.

La suite MCP open-source améliore la qualité de la génération de code de Claude de 15 à 20 %.
Une suite MCP open-source composée de trois serveurs locaux et d'une compétence de prompt résout le problème des 'mauvais tokens' dans la génération de code par IA, avec un client rapportant une amélioration de qualité de 15 à 20 % pour Claude Code.

10.33 t/s sur Qwen 3.5 35B avec un ordinateur portable à 300 $ : Répartition complète de l'optimisation
Un développeur atteint 10,33 t/s sur Qwen 3.5 35B Q4_K_S avec un Lenovo Ideapad Slim 3i à 300 $ en utilisant ik_llama.cpp, le core pinning, le décodage spéculatif MTP et un réglage BIOS des performances.

Claude a écrit 3 000 lignes de code au lieu d'importer pywikibot — une étude de cas sur les agents IA ignorant les bibliothèques existantes
Un développeur a confié à Claude Code (Opus 4.7) la correction de fautes sur des wikis Fandom. Le modèle a écrit ~3 000 lignes de Python réimplémentant pywikibot, mwparserfromhell et les règles RETF au lieu de les importer. L'article explore pourquoi cela se produit et comment une recherche de deux minutes a réduit la base de code à 1 259 lignes.