ArrayKit

権限ルールテスター

実際のコマンドに対して権限ルールを試し、どれが勝つかを正確に見ます。

権限ルールテスター

実際のコマンドに対して権限ルールを試し、どれが勝つかを正確に見ます。

ルールもコマンドも社内スクリプトやパスを含みがちです。すべてブラウザー内で評価され、送信されません。

そのツールにフックを足す

権限ルールテスター について

権限ルールは glob に見えて、実際にはもっと狭く動きます。厄介はそこから始まります。ルールは書かれたとおりのコマンドと突き合わされ、末尾に暗黙のワイルドカードはありません。テストコマンドを覆うルールは、同じコマンドに引数が一つ付いただけで覆わなくなります。拒否は確認に勝ち、確認は許可に勝ち、どれにも一致しないものはモードの既定に落ちます。言葉にすれば簡単ですが、十数個のルールを書きながら頭に保つのは難しい。ここでは実際に試せます。ルールを貼り、動かすつもりのコマンドを貼れば、一つずつの結果と、決め手になったルールが並びます。決して発火しないルール——広い拒否の下に置かれた許可も含めて——も見つけます。

機能

  • 各コマンドの結果と、決め手になったルール
  • 本物の解決順と同じ、拒否 > 確認 > 許可
  • より広いルールに覆われて発火しないルールを検出
  • 拒否によって到達不能になった許可ルールを検出
  • そもそもルールでない行を報告
  • 一致しなかったコマンドを推測せずそのまま表示
  • ワイルドカードは書かれたとおり — 目に見えない末尾一致はなし
  • settings.json の権限ブロックを出力

権限ルールテスター の使い方

  1. 許可・確認・拒否のルールを貼ります
  2. 実行するつもりのコマンドを貼ります
  3. 各結果と、決め手のルールを読みます
  4. 権限ブロックを 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・エージェントのツールをすべて見る · すべてのツール