権限ルールテスター
実際のコマンドに対して権限ルールを試し、どれが勝つかを正確に見ます。
ルールもコマンドも社内スクリプトやパスを含みがちです。すべてブラウザー内で評価され、送信されません。
そのツールにフックを足す
権限ルールテスター について
権限ルールは glob に見えて、実際にはもっと狭く動きます。厄介はそこから始まります。ルールは書かれたとおりのコマンドと突き合わされ、末尾に暗黙のワイルドカードはありません。テストコマンドを覆うルールは、同じコマンドに引数が一つ付いただけで覆わなくなります。拒否は確認に勝ち、確認は許可に勝ち、どれにも一致しないものはモードの既定に落ちます。言葉にすれば簡単ですが、十数個のルールを書きながら頭に保つのは難しい。ここでは実際に試せます。ルールを貼り、動かすつもりのコマンドを貼れば、一つずつの結果と、決め手になったルールが並びます。決して発火しないルール——広い拒否の下に置かれた許可も含めて——も見つけます。
機能
- 各コマンドの結果と、決め手になったルール
- 本物の解決順と同じ、拒否 > 確認 > 許可
- より広いルールに覆われて発火しないルールを検出
- 拒否によって到達不能になった許可ルールを検出
- そもそもルールでない行を報告
- 一致しなかったコマンドを推測せずそのまま表示
- ワイルドカードは書かれたとおり — 目に見えない末尾一致はなし
- settings.json の権限ブロックを出力
権限ルールテスター の使い方
- 許可・確認・拒否のルールを貼ります
- 実行するつもりのコマンドを貼ります
- 各結果と、決め手のルールを読みます
- 権限ブロックを settings.json にコピーします
例
入力
Bash(npm run test)
出力
npm run test:unit — no rule matched
暗黙のワイルドカードはありません。ルールはそのコマンドだけを覆います。
よくあるエラーとトラブルシューティング
- 想定したコマンドがルールに覆われない。 — 末尾のワイルドカードはありません。Bash(npm run test) はそのコマンドだけに一致します。派生まで含めるなら Bash(npm run test:*) です。
- 許可したはずのコマンドがまだ確認してくる。 — より優先度の高い何かが一致しています。各コマンドについて、一致したルールがすべて解決順に並びます。
- ルールの一つが到達不能と表示される。 — 同等以上の優先度を持つ、より広いルールがすでに全体を覆っています。広い拒否の下の許可が典型です。拒否が必ず勝つので、その許可は何もしません。
- ある行がルールでないと報告される。 — ルールは Tool か Tool(パターン) です。ツール接頭辞のない裸のコマンドはルールではなく、無視されます。
よくある質問
- パターンは glob ですか、正規表現ですか。
- どちらでもありません。* が任意の文字列を表すリテラル一致で、書かれたとおりのコマンドに適用されます。正規表現の記法はリテラルとして扱われるので、ドットを含むルールはドットにしか一致しません。
- どのルールにも一致しないコマンドはどうなりますか。
- 現在の権限モードの既定の挙動に落ちます。確認かもしれず、許可かもしれません。ここでは推測せず「一致なし」と表示します。答えはルールではなくモードで決まるからです。
- 複数が一致したときはどれが勝ちますか。
- 拒否、次に確認、次に許可です。各コマンドについて一致したものをすべて表示するので、何が上書きされたかを推測せずに見られます。
- なぜ拒否の下の許可が指摘されるのですか。
- その許可は決して効かないからです。拒否が必ず勝ちます。人は広い拒否への例外のつもりで書きますが、効かなかったことを知らせるエラーは出ません。
- 許可ルールと拒否ルール、どちらを主に書くべきですか。
- 効き目があるのは拒否です。許可リストは日常の作業を静かにします。拒否リストは「絶対に起きてほしくないこと」を止めるもので、ほかのすべてに勝ちます。
関連ツール
AI・エージェントの他のツール
AI・エージェントのツールをすべて見る · すべてのツール