Skip to main content

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

Lorsque vous acceptez des prompts saisis par l’utilisateur, "approve-safety" et "approve-all" sont dangereux. Utilisez impérativement false ou "deny-all". Même avec des permissions en lecture seule, le code du projet Laravel peut être lu.

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.
Ce n’est pas totalement sûr pour autant. Pour un contrôle strict, implémentez un gestionnaire personnalisé qui se base sur $request['kind'].

PermissionHandler::denyAll()

PermissionHandler::denyAll() refuse tout.

Utilisation directe du Client

Si vous utilisez CopilotClient 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 classe PermissionRequestResultKind 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), utilisez no-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.
Dernière modification le 13 juillet 2026