nah: Claude Code向けの文脈を考慮した権限ガード

nahの機能
nahはPythonベースのパーミッションガードで、Claude Codeとツール実行の間に位置します。コンテキストを考慮した意思決定を追加することで、Claudeの許可・拒否の二択パーミッションシステムの限界に対処します。このツールは、実行前にすべてのツール呼び出しを傍受し、実際の動作に基づいて分類します。
動作原理
すべてのツール呼び出しは、まず決定論的構造分類器(LLM不要)に送られ、ミリ秒単位で実行されます。分類器はコマンドを以下のようなアクションタイプにマッピングします:
- filesystem_read
- filesystem_delete
- package_run
- db_write
- git_history_rewrite
- lang_exec
各アクションタイプに対して、nahは4つのポリシーのいずれかを適用します:許可、コンテキスト(ターゲット依存)、確認、ブロック。同じコマンドでもコンテキストによって異なる決定が下されます:
rm dist/bundle.js(プロジェクト内)→ 許可rm ~/.bashrc(プロジェクト外)→ 確認git push --force→ 確認(履歴書き換え)base64 -d | bash→ ブロック(デコード+実行パイプ)
保護対象
nahはツールに応じて異なる側面をチェックします:
- Bash:構造的コマンド分類 — アクションタイプ、パイプ構成、シェルアンラッピング
- Read:機密パス検出(~/.ssh、~/.aws、.envなど)
- Write:パスチェック+プロジェクト境界+コンテンツ検査(シークレット、外部流出、破壊的ペイロード)
- Edit:パスチェック+プロジェクト境界+置換文字列のコンテンツ検査
- Glob:機密場所のディレクトリスキャンガード
- Grep:プロジェクト外での認証情報検索パターンの捕捉
- MCPツール:サードパーティツールサーバー(mcp__*)の汎用分類
インストールと使用方法
インストール:pip install nah && nah install
アンインストール:nah uninstall && pip uninstall nah
このツールは設定不要で、すぐに使用可能な適切なデフォルトで動作します。Claude Code内でセキュリティデモを実行できます:/nah-demo — リモートコード実行、データ流出、難読化コマンドなど8つの脅威カテゴリーにわたる25の実際のケースを網羅します。
設定オプション
動作をカスタマイズする場合、以下の方法で設定できます:
~/.config/nah/config.yaml(グローバル).nah.yaml(プロジェクトごと、権限を厳格化のみ可能)
設定例:
actions:
filesystem_delete: ask # 削除は常に確認
git_history_rewrite: block # 強制プッシュは絶対に許可しない
lang_exec: allow # インラインスクリプトを信頼
sensitive_paths:
~/.kube: ask
~/Documents/taxes: block
オプションのLLMレイヤー
決定論的分類器で解決できないコマンドに対して、nahはオプションでLLMに問い合わせることができます。フローは:ツール呼び出し → nah(決定論的) → LLM(オプション) → Claude Codeパーミッション → 実行。決定論的レイヤーは常に最初に実行され、LLMは残った「確認」決定のみを解決します。LLMが設定されていないか利用できない場合、決定は「確認」のままとなり、ユーザーにプロンプトが表示されます。サポートプロバイダーにはOllama、OpenRouter、OpenAI、Anthropic、Snowflake Cortexが含まれます。
重要な注意点
開発者は特に、Claude Codeの--dangerously-skip-permissionsフラグの使用を警告しています。バイパスモードでは、フックは非同期で発火するため、nahがブロックする前にコマンドが実行されてしまいます。代わりに、Bash、Read、Glob、Grepなどのツールを許可し、nahに保護させることを推奨しています。
📖 Read the full source: HN AI Agents
👀 See Also

ローカルLLMによる自律的コード生成のテスト:品質と速度のベンチマーク
ある開発者が、実際のGoコード生成タスクでローカルLLMをテストするためのハーネスを構築し、コンパイル成功率、フィールド抽出精度、スループットを測定しました。結果は、品質と速度の観点からモデルを比較しています。

ベンチマーク:24GB Mac MiniでのGemma4 12Bと量子化版Qwen3 8Bの比較
開発者がGemma4 12BとQwen3:8b-q4_K_Mを24GB Mac Miniで2つのプロンプトを使ってテストしました。Qwen3はプロンプト処理が4〜5倍速く、Gemma4は出力生成がわずかに速い結果でした。

RTX 5060 TiでQwen3を利用したローカル音声アシスタントの実装
RTX 5060 Ti上でQwen3 ASR、LLM、TTSを活用した完全ローカル型ホームオートメーションボイスアシスタント。モーガン・フリーマンの声クローン機能と多様な連携ツールを搭載。

トリノードメモリ:人間/エージェント金庫分離によるオープンソース永続エージェントメモリ
Tri-Node Memoryは、2つのObsidianボールトを使用してAIコーディングエージェントのメモリを人間の永続的なジャーナルから分離する軽量アーキテクチャです。エージェントは人間のボールトを読み取りますが、自分のボールトにのみ書き込み、明示的な許可なしに境界を越えることはありません。