Skip to main content

Richieste di permesso

Comportamento predefinito (deny-all)

Quando permission_approve in config/copilot.php vale "deny-all" (default), le richieste di permesso vengono automaticamente rifiutate in Copilot::run() e Copilot::start(). Per gli usi centrati sulla generazione di testo spesso non servono permessi, quindi è un default sicuro.

Valori configurabili

Se accetti prompt utente, "approve-safety" e "approve-all" sono pericolosi. Usa sempre false oppure "deny-all". Anche i permessi read-only potrebbero leggere il codice del progetto Laravel.

PermissionHandler::approveAll()

PermissionHandler::approveAll() autorizza automaticamente tutte le richieste.

PermissionHandler::approveSafety()

PermissionHandler::approveSafety() rifiuta solo i permessi ad alto rischio (shell, write) e autorizza automaticamente gli altri.
Neanche questo è del tutto sicuro. Se vuoi un controllo rigoroso, implementa un handler personalizzato e valuta usando $request['kind'].

PermissionHandler::denyAll()

PermissionHandler::denyAll() rifiuta tutto.

Uso diretto di Client

Quando usi direttamente CopilotClient, come nell’SDK ufficiale è obbligatorio specificare onPermissionRequest.

Handler personalizzato

Per controllare autorizzazione/rifiuto in base al tipo di richiesta, passa una closure. $request e $invocation sono array come i seguenti.

$request

I campi oltre a kind e toolCallId variano a seconda di kind.

$invocation

Risposta

Il risultato della decisione sul permesso viene restituito come array. La classe PermissionRequestResultKind la rende più leggibile.

Dettagli di protocollo

Nel Protocol v3 (default attuale) le richieste di permesso vengono consegnate come eventi di sessione (permission.requested) anziché come richieste JSON-RPC. L’SDK le gestisce internamente e risponde con l’RPC session.permissions.handlePendingPermissionRequest. L’utilizzo di SessionConfig non cambia. Basta passare un handler a onPermissionRequest: le differenze di protocollo sono assorbite dall’SDK.

PermissionRequestResultKind

Puoi restituire direttamente ['kind' => 'approve-once'], ma PermissionRequestResultKind è più chiaro.

Metodi disponibili

Se vuoi usare Laravel\Prompts\select, con PermissionRequestResultKind::select() ottieni le opzioni.

no-result

Se l’handler non può restituire un risultato (ad es. ambiente non interattivo) puoi restituire no-result. Restituendo no-result la chiamata RPC viene saltata e viene applicato il rifiuto predefinito di Copilot CLI.
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 13 luglio 2026