Berechtigungsregeln sehen aus wie Globs und verhalten sich enger, und genau da beginnt der Ärger. Eine Regel wird mit dem Befehl abgeglichen, wie er dasteht, und es gibt keinen impliziten Platzhalter am Ende: Eine Regel für einen Testbefehl deckt denselben Befehl mit einem angehängten Flag nicht ab. Verweigern schlägt Nachfragen, Nachfragen schlägt Erlauben, und alles Unpassende fällt auf die Voreinstellung des Modus zurück. Das ist leicht gesagt und schwer im Kopf zu behalten, während man ein Dutzend Regeln schreibt. Hier werden sie getestet: Regeln einfügen, erwartete Befehle einfügen, und für jeden das Ergebnis samt entscheidender Regel sehen. Außerdem findet es Regeln, die nie feuern können — auch Erlaubnisregeln unter einer breiteren Verweigerung.
Funktionen
Jeder Befehl mit Ergebnis und der Regel, die entschieden hat
Verweigern über Nachfragen über Erlauben, wie der echte Resolver es tut
Findet Regeln, die nie feuern, weil eine breitere sie abdeckt
Erkennt eine Erlaubnisregel, die eine Verweigerung unerreichbar gemacht hat
Meldet Zeilen, die gar keine Regeln sind
Zeigt unpassende Befehle, statt zu raten
Platzhalter werden genommen, wie sie dastehen — kein unsichtbarer Abschluss
Gibt den Berechtigungsblock für settings.json aus
So verwendest du Berechtigungsregel-Tester
Fügen Sie Ihre Erlauben-, Nachfragen- und Verweigern-Regeln ein
Fügen Sie die Befehle ein, die Sie erwarten
Lesen Sie das Ergebnis je Befehl und die entscheidende Regel
Kopieren Sie den Berechtigungsblock in settings.json
Beispiel
Eingabe
Bash(npm run test)
Ausgabe
npm run test:unit — no rule matched
Kein impliziter Platzhalter: Die Regel deckt genau diesen Befehl ab.
Häufige Fehler & Fehlerbehebung
Meine Regel deckt den erwarteten Befehl nicht ab. — Es gibt keinen abschließenden Platzhalter. Bash(npm run test) passt nur auf genau diesen Befehl; Bash(npm run test:*) deckt die Varianten ab.
Ein erlaubter Befehl fragt trotzdem nach. — Etwas mit höherem Vorrang hat gepasst. Für jeden Befehl werden alle passenden Regeln in Auflösungsreihenfolge gelistet.
Eine meiner Regeln gilt als unerreichbar. — Eine breitere Regel mit mindestens gleichem Vorrang deckt bereits alles ab. Eine Erlaubnis unter einer breiten Verweigerung ist der typische Fall: Verweigern gewinnt immer, die Erlaubnis tut also nichts.
Eine Zeile gilt als keine Regel. — Regeln sind Tool oder Tool(muster). Ein bloßer Befehl ohne Werkzeugpräfix ist keine Regel und wird ignoriert.
Häufig gestellte Fragen
Ist das Muster ein Glob oder ein regulärer Ausdruck?
Keines von beiden genau. Es ist ein wörtlicher Abgleich, bei dem * für eine beliebige Zeichenfolge steht, angewandt auf den Befehl, wie er dasteht. Regex-Syntax gilt als wörtlicher Text — deshalb passt eine Regel mit Punkt nur auf einen Punkt.
Was passiert mit einem Befehl, auf den keine Regel passt?
Er fällt auf das Standardverhalten des aktuellen Berechtigungsmodus zurück, das Nachfragen oder Erlauben sein kann. Hier erscheinen sie als unpassend statt geraten, weil die Antwort vom Modus abhängt und nicht von den Regeln.
Welche gewinnt, wenn mehrere passen?
Verweigern, dann Nachfragen, dann Erlauben. Alle Treffer werden je Befehl gezeigt, damit Sie sehen, was überstimmt wurde, statt es abzuleiten.
Warum wird eine Erlaubnis unter einer Verweigerung markiert?
Weil diese Erlaubnis nie greifen kann — Verweigern gewinnt immer. Solche Regeln werden als Ausnahme zu einer breiten Verweigerung geschrieben, und nichts meldet, dass sie wirkungslos blieb.
Eher Erlauben- oder Verweigern-Regeln schreiben?
Die Verweigerungen tragen. Eine Erlaubnisliste macht Routinearbeit still; eine Verweigerungsliste verhindert genau das, was nie passieren soll, und schlägt alles andere.
Verwandte Tools
Hooks-Builder — Bauen Sie settings.json-Hooks und finden Sie Matcher, die nie auslösen.
Subagent-Builder — Erstellen Sie die Definitionsdatei eines Subagenten samt Tools und Modell.
Slash-Befehl-Builder — Bauen Sie einen eigenen Befehl, mit Argumenten und einer Tool-Liste.