Demandes de permission
Comportement par défaut (deny-all)
Lorsque permission_approve dans config/copilot.php vaut "deny-all" (par défaut), les demandes de permission émises depuis Copilot::run() ou Copilot::start() sont automatiquement refusées.
Comme les usages orientés génération de texte ne nécessitent souvent pas de permission, c’est une valeur par défaut sûre.
Valeurs configurables
PermissionHandler::approveAll()
PermissionHandler::approveAll() approuve automatiquement toutes les demandes.
PermissionHandler::approveSafety()
PermissionHandler::approveSafety() refuse uniquement les permissions à haut risque (shell, write) et approuve automatiquement le reste.
$request['kind'].
PermissionHandler::denyAll()
PermissionHandler::denyAll() refuse tout.
Utilisation directe du Client
Si vous utilisezCopilotClient directement, onPermissionRequest est obligatoire, comme dans le SDK officiel.
Gestionnaire personnalisé
Pour contrôler l’approbation par type de requête, passez une closure.$request et $invocation sont des tableaux comme suit.
$request
Les champs autres que kind et toolCallId varient selon kind.
$invocation
Réponse
Le résultat de la décision est renvoyé sous forme de tableau. La classePermissionRequestResultKind la rend plus lisible.
Détails du protocole
Dans le Protocol v3 (défaut actuel), la demande de permission n’est pas une requête JSON-RPC mais un événement de session (permission.requested).
Le SDK le traite en interne et répond via le RPC session.permissions.handlePendingPermissionRequest.
L’usage de SessionConfig ne change pas.
Si vous fournissez un gestionnaire à onPermissionRequest, le SDK absorbe les différences de protocole.
PermissionRequestResultKind
Vous pouvez renvoyer directement['kind' => 'approve-once'], mais PermissionRequestResultKind rend le code plus clair.
Méthodes disponibles
Pour utiliser
Laravel\Prompts\select, PermissionRequestResultKind::select() fournit les options.
no-result
Si le gestionnaire ne peut pas renvoyer de résultat (par ex. en environnement non interactif), utilisezno-result.
Renvoyer no-result ignore l’appel RPC et applique le refus par défaut côté Copilot CLI.
Pour les dernières informations, consultez le dépôt GitHub.