HN🔥 12
💬 8

Claude Codeの暴走を阻止!賢く権限を管理するコンテキスト対応ガード「nah」

schipperai
3か月前

ディスカッション (6件)

0
schipperaiOP
👍123か月前

「--dangerously-skip-permissions」を使いたいけれど、未追跡のファイルを勝手に消されたり、秘密鍵を抜かれたり、マルウェアを仕込まれたりするのは避けたい。そんなエンジニアのために「nah」を作りました。\n\nClaude Codeの標準的な権限システムはツールごとの「許可か拒否か」ですが、これではスケーリングしません。「一部のファイル削除はいいが、git checkoutはダメ」といった細かな判断が必要だからです。たとえ権限を絞っても、IQ 200を誇るOpus(AI)ならガードをすり抜ける方法を見つけ出してしまうかもしれません。ブラックリストを手動で更新し続けるのは、まさに不毛な作業です。\n\nnahはPreToolUseフックとして機能し、ミリ秒単位で動作する決定論的分類器を用いて、すべてのツール実行をその「実際の内容」に基づいて分類します。コマンドをfilesystem_read、package_run、db_write、git_history_rewriteなどのアクションタイプにマッピングし、「許可」「コンテキスト(対象に依存)」「要確認」「ブロック」といったポリシーを適用します。\n\nすべてを自動分類できるわけではありませんが、曖昧なものはオプションでLLMに判断を仰ぐことも可能です。判断できなかったものはその場で承認でき、次からは聞かれないように構成できます。\n\n設定不要でそのまま使えますし、必要に応じてフルカスタマイズも可能です。依存関係なしのPython標準ライブラリのみで動作するMITライセンスのツールです。\n\npip install nah && nah install\n\nGitHub: https://github.com/manuelschipper/nah

1
schipperai
3か月前

HNのみんな、こんにちは。作者です。質問があれば何でも答えるよ。

4
stingraycharles
3か月前

ちょっと混乱してるんだけど、教えて。

「untrackedファイルを全消去したり、キーを盗み出したり、マルウェアをインストールしたりしないような --dangerously-skip-permissions のようなものが必要だった」

とあって、その直後に

「--dangerously-skip-permissions は使わないで。バイパスモードだとフックが非同期で実行されるから、nahがブロックする前にコマンドが実行されてしまう」

とあるよね。これって、--dangerously-skip-permissions のようなものじゃなくて、「default」モードでの使用に限定されるってことなのかな?

とはいえ、よく考えられたプロジェクトだと思うし、名前も最高!

5
jc-myths
3か月前

これ、まさにずっと欲しかったものだよ。Claude Codeをメインの開発ツールとして使ってるけど、パーミッションの承認疲れは本当に問題なんだよね。100回も承認してると、内容を読まずにただ「はい」を押すようになっちゃう。これじゃ何の意味もないし。

決定論的な分類器を使うアプローチは賢いね。アクションタイプでパターンマッチングする方が、別のLLMに「これ安全?」って聞くよりずっと信頼できるよ。タクソノミーのアイデア(filesystem_readとかpackage_run、db_writeとか)は、リスクを考える時の自分の感覚ともよく一致してる。

一つ質問なんだけど、連鎖的な操作はどうやって扱うの?例えばClaudeがgit checkoutをして、それ自体は問題ないとしても、それが連続した操作の一部で、最終的にuntrackedファイルを全消去してしまうようなケース。