Skip to main content

Permission requests

Standaardgedrag (deny-all)

Als permission_approve in config/copilot.php op "deny-all" (de standaard) staat, worden permission requests bij Copilot::run() en Copilot::start() automatisch geweigerd. Voor toepassingen die vooral tekst genereren zijn permissies vaak niet nodig, dus dit is een veilige standaard.

Mogelijke waarden

Als je prompts van gebruikers accepteert, zijn "approve-safety" en "approve-all" gevaarlijk. Gebruik dan altijd false of "deny-all". Zelfs met read-only permissies kan de code van je Laravel-project worden gelezen.

PermissionHandler::approveAll()

PermissionHandler::approveAll() staat alle requests automatisch toe.

PermissionHandler::approveSafety()

PermissionHandler::approveSafety() weigert alleen permissies met een hoog risico (shell, write) en staat de rest automatisch toe.
Ook dit is niet gegarandeerd volledig veilig. Wil je strikte controle, implementeer dan een custom handler en beoordeel op basis van $request['kind'].

PermissionHandler::denyAll()

PermissionHandler::denyAll() weigert alles.

De Client direct gebruiken

Als je CopilotClient direct gebruikt, is het opgeven van onPermissionRequest verplicht, net als in de officiële SDK.

Custom handler

Geef een closure door om toestaan of weigeren per requesttype te bepalen. $request en $invocation zijn arrays zoals hieronder.

$request

De velden buiten kind en toolCallId verschillen afhankelijk van kind.

$invocation

Response

Het resultaat van de permissiebeslissing retourneer je als array. Met de klasse PermissionRequestResultKind wordt dit beter leesbaar.

Protocoldetails

In Protocol v3 (de huidige standaard) worden permission requests niet als JSON-RPC-requests maar als session-events (permission.requested) afgeleverd. De SDK verwerkt dit intern en antwoordt via de RPC session.permissions.handlePendingPermissionRequest. Het gebruik van SessionConfig verandert niet. Als je een handler doorgeeft aan onPermissionRequest, vangt de SDK de protocolverschillen op.

PermissionRequestResultKind

Je kunt ook direct de vorm ['kind' => 'approve-once'] retourneren, maar met PermissionRequestResultKind wordt het duidelijker.

Beschikbare methodes

Wil je Laravel\Prompts\select gebruiken, dan kun je de opties ophalen met PermissionRequestResultKind::select().

no-result

Als de handler geen resultaat kan geven (bijvoorbeeld in een niet-interactieve omgeving), kun je no-result retourneren. Bij no-result wordt de RPC-aanroep overgeslagen en geldt de standaardweigering aan de kant van de Copilot CLI.
Raadpleeg de GitHub-repository voor de meest actuele informatie.
Laatst gewijzigd op 6 september 2026