Skip to main content

Solicitudes de permiso

Comportamiento por defecto (deny-all)

Cuando permission_approve de config/copilot.php vale "deny-all" (valor por defecto), las solicitudes de permiso en Copilot::run() y Copilot::start() se deniegan automáticamente. En usos centrados en generación de texto no suele hacer falta ningún permiso, así que es un valor seguro por defecto.

Valores configurables

Si aceptas prompts de entrada del usuario, "approve-safety" y "approve-all" son peligrosos. Usa siempre false o "deny-all". Incluso con permisos de solo lectura, es posible que se lea el código de tu proyecto Laravel.

PermissionHandler::approveAll()

PermissionHandler::approveAll() aprueba todas las solicitudes automáticamente.

PermissionHandler::approveSafety()

PermissionHandler::approveSafety() deniega únicamente los permisos de alto riesgo (shell, write) y aprueba el resto automáticamente.
Aun así, no es completamente seguro. Si quieres controlar de forma estricta, implementa un handler personalizado y decide inspeccionando $request['kind'].

PermissionHandler::denyAll()

PermissionHandler::denyAll() deniega todo.

Al usar Client directamente

Si utilizas CopilotClient directamente, indicar onPermissionRequest es obligatorio, igual que en el SDK oficial.

Handler personalizado

Para controlar autorización/denegación por tipo de solicitud, pasa una clausura. $request e $invocation son arrays como los siguientes.

$request

Los campos distintos de kind y toolCallId varían según kind.

$invocation

Response

El resultado de la decisión de permiso se devuelve como array. La clase PermissionRequestResultKind mejora la legibilidad.

Detalle del protocolo

En Protocol v3 (el valor por defecto actual), las solicitudes de permiso se entregan como eventos de sesión (permission.requested), no como peticiones JSON-RPC. El SDK las procesa internamente y responde con el RPC session.permissions.handlePendingPermissionRequest. El uso de SessionConfig no cambia. Si pasas un handler a onPermissionRequest, el SDK absorbe las diferencias de protocolo.

PermissionRequestResultKind

También puedes devolver directamente algo como ['kind' => 'approve-once'], pero usar PermissionRequestResultKind resulta más claro.

Métodos disponibles

Si quieres usar Laravel\Prompts\select, puedes obtener las opciones con PermissionRequestResultKind::select().

no-result

Si el handler no puede devolver un resultado (por ejemplo, en un entorno no interactivo), puedes devolver no-result. Al hacerlo, se omite la llamada RPC y se aplica la denegación por defecto de Copilot CLI.
Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 13 de julio de 2026