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
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.
$request['kind'].
PermissionHandler::denyAll()
PermissionHandler::denyAll() rifiuta tutto.
Uso diretto di Client
Quando usi direttamenteCopilotClient, 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 classePermissionRequestResultKind 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 restituireno-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.