Berechtigungsanfragen
Standardverhalten (deny-all)
Wenn permission_approve in config/copilot.php auf "deny-all" steht (Standard), werden Berechtigungsanfragen bei Copilot::run() und Copilot::start() automatisch abgelehnt.
Da Anwendungen mit Fokus auf Textgenerierung häufig keine Berechtigungen benötigen, ist dies eine sichere Voreinstellung.
Mögliche Werte
PermissionHandler::approveAll()
PermissionHandler::approveAll() erlaubt automatisch alle Anfragen.
PermissionHandler::approveSafety()
PermissionHandler::approveSafety() lehnt ausschließlich risikoreiche Berechtigungen (shell, write) ab und erlaubt alles andere automatisch.
$request['kind'] aus.
PermissionHandler::denyAll()
PermissionHandler::denyAll() lehnt alles ab.
Bei direkter Verwendung des Client
Wenn SieCopilotClient direkt verwenden, ist die Angabe von onPermissionRequest – wie beim offiziellen SDK – erforderlich.
Benutzerdefinierter Handler
Um Genehmigungen und Ablehnungen je nach Anfrageart zu steuern, übergeben Sie eine Closure.$request und $invocation sind Arrays wie folgt.
$request
Neben kind und toolCallId variieren die Felder je nach kind.
$invocation
Antwort
Die Entscheidung wird als Array zurückgegeben. Mit der KlassePermissionRequestResultKind bleibt der Code lesbar.
Protokoll-Details
Ab Protocol v3 (aktueller Standard) werden Berechtigungsanfragen nicht als JSON-RPC-Requests, sondern als Session-Events (permission.requested) ausgeliefert.
Das SDK verarbeitet dies intern und antwortet über den RPC-Aufruf session.permissions.handlePendingPermissionRequest.
Die Verwendung von SessionConfig ändert sich dabei nicht.
Übergeben Sie einfach einen Handler an onPermissionRequest; die Protokollunterschiede fängt das SDK ab.
PermissionRequestResultKind
Sie können direkt['kind' => 'approve-once'] zurückgeben, aber mit PermissionRequestResultKind wird der Code verständlicher.
Verfügbare Methoden
Wenn Sie
Laravel\Prompts\select verwenden möchten, können Sie die Auswahloptionen über PermissionRequestResultKind::select() abrufen.
no-result
Wenn der Handler kein Ergebnis liefern kann (z. B. in nicht-interaktiven Umgebungen), können Sieno-result zurückgeben.
Bei no-result wird der RPC-Aufruf übersprungen, und die Copilot-CLI-seitige Standardablehnung greift.
Aktuelle Informationen finden Sie im GitHub-Repository.