The command sandbox
Los bubbles con la herramienta Run commands pueden ejecutar comandos en el proyecto: instalar paquetes, ejecutar compilaciones y tests. Tres capas deciden qué se ejecuta en la práctica.
1. Qué puede hacer un bubble
Sección titulada «1. Qué puede hacer un bubble»Cada rol tiene un conjunto fijo de herramientas. Un Coder puede escribir archivos y ejecutar comandos; un Reviewer puede ejecutar comandos pero no escribir archivos; un Researcher no puede hacer ninguna de las dos cosas. Las herramientas de un rol integrado son fijas. Para elegir las propias, hay que construir un bubble personalizado.
Las herramientas de archivos siempre limitan un loop a su carpeta. El sistema operativo restringe sus comandos a esa carpeta solo cuando Sandbox agent commands está activado (más abajo). Sin el sandbox, se rechaza un comando que nombra un archivo fuera de la carpeta, pero un script, una compilación o un gestor de paquetes que inicia un comando aún puede escribir en cualquier parte del proyecto.
2. El filtro de comandos
Sección titulada «2. El filtro de comandos»Cada comando se lee antes de ejecutarse y recibe una de tres respuestas.
Rechazado, siempre:
- ejecutar una shell directamente (
bash,sh,cmd,powershell,wsl) y cualquier cosa que modifique la propia shell; - acceso remoto (
ssh,scp,rsyncy similares), finalizar procesos, cambiar permisos; - git destructivo (
reset --hard,clean -f, force pushes, comandos interactivos) y publicación de paquetes; - cualquier ruta fuera del proyecto y cualquier archivo que parezca un secreto (
.env, claves, certificados); - una dirección web que no sea un registro de paquetes, GitHub, Docker Hub o el propio computador;
- cualquier cosa que nunca termine, como un servidor de desarrollo o un modo watch. Eso pertenece a una terminal.
Preguntado, a menos que se haya activado Full Auto:
- commits, pushes, merges, rebases, checkouts de git y similares;
- eliminar archivos dentro de la carpeta del loop;
- ejecutar código en línea (
node -e,python -cy similares).
Permitido: todo lo demás, como npm install o npm test.
Los comandos se ejecutan sin ninguna variable de entorno cuyo nombre contenga KEY, SECRET, TOKEN, PASSWORD, CREDENTIAL o PRIVATE. Un comando dispone de dos minutos, o diez para gestores de paquetes, compiladores y ejecutores de tests. Cuando se agota el tiempo, se detiene todo el árbol de procesos.
Preguntar y Full Auto
Sección titulada «Preguntar y Full Auto»Cuando un comando necesita autorización, la aplicación pregunta: Allow once, Allow always this session (para ese tipo de comando en este tablero, hasta que el gateway se reinicie) o Deny. Si no hay ninguna ventana abierta para preguntar o nadie responde a tiempo, el comando se rechaza.
Full Auto convierte cada “preguntar” en “permitir” para un tablero. No cambia nada más: los comandos rechazados, las concesiones de herramientas y las carpetas siguen aplicándose. Permanece activo hasta que se desactiva.
3. El sandbox
Sección titulada «3. El sandbox»El filtro lee un comando y rechaza lo que puede ver. Un script de compilación o el paso de instalación de un paquete aún pueden escribir archivos que ningún argumento nombre. Sandbox agent commands (en Ajustes, desactivado por defecto) hace que el sistema operativo también aplique restricciones a las carpetas:
- el proyecto es de solo lectura, la propia carpeta del loop es de escritura, las carpetas de otros loops dentro de ella son de solo lectura y la propia carpeta de la aplicación es de solo lectura;
- no hay acceso a la red desde el interior del sandbox.
| Sistema | Cómo |
|---|---|
| Linux | bubblewrap (bwrap) |
| macOS | sandbox-exec |
| Windows | WSL con bubblewrap (por defecto), o Docker |
Con el sandbox activado, un comando que no se puede incluir en un sandbox se rechaza y nunca se ejecuta sin él. Si un backend no está listo, Ajustes muestra el único paso para solucionarlo, con el comando exacto para copiar, por ejemplo instalar bubblewrap dentro de WSL.
Perfica nunca instala un sandbox automáticamente. La imagen de Docker se descarga solo después de confirmar un diálogo que indica su tamaño.
La terminal
Sección titulada «La terminal»El panel de la terminal en la parte inferior de la aplicación es una shell propia (Bash, PowerShell o CMD), no la de los agentes. El filtro no se aplica a ella. Run in terminal coloca un comando de una respuesta de chat o de una entrada de registro en la línea de entrada de la terminal; nunca pulsa Intro automáticamente.