Permisos
Controla qué acciones requieren aprobación para ejecutarse.
Dropstone utiliza la configuración permission para decidir si una acción determinada debe ejecutarse automáticamente, solicitarte confirmación o ser bloqueada.
La configuración booleana heredada tools está deprecada; ha sido fusionada en permission. La antigua configuración tools aún se admite por compatibilidad hacia atrás.
Acciones
Cada regla de permiso se resuelve en una de estas opciones:
"allow": ejecutar sin aprobación"ask": solicitar aprobación"deny": bloquear la acción
Configuración
Puedes establecer permisos globalmente (con *) e invalidar herramientas específicas.
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
También puedes establecer todos los permisos a la vez:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": "allow"
}
Reglas Granulares (Sintaxis de Objeto)
Para la mayoría de los permisos, puedes usar un objeto para aplicar diferentes acciones según la entrada de la herramienta.
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
Las reglas se evalúan por coincidencia de patrón, siendo la última regla coincidente la que gana. Un patrón común es colocar la regla comodín "*" primero, y reglas más específicas después.
Comodines
Los patrones de permiso utilizan coincidencia de comodín simple:
*coincide con cero o más caracteres cualesquiera?coincide con exactamente un carácter- Todos los demás caracteres coinciden literalmente
Expansión del Directorio de Inicio
Puedes usar ~ o $HOME al principio de un patrón para hacer referencia a tu directorio de inicio. Esto es particularmente útil para reglas de external_directory.
~/projects/*->/Users/username/projects/*$HOME/projects/*->/Users/username/projects/*~->/Users/username
Directorios Externos
Usa external_directory para permitir llamadas de herramientas que toquen rutas fuera del directorio de trabajo donde se inició Dropstone. Esto se aplica a cualquier herramienta que tome una ruta como entrada (por ejemplo read, edit, glob, grep y muchos comandos bash).
La expansión del directorio de inicio (como ~/...) solo afecta cómo se escribe un patrón. No hace que una ruta externa sea parte del espacio de trabajo actual, por lo que las rutas fuera del directorio de trabajo aún deben permitirse a través de external_directory.
Por ejemplo, esto permite acceso a todo bajo ~/projects/personal/:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
Cualquier directorio permitido aquí hereda los mismos valores predeterminados que el espacio de trabajo actual. Dado que read por defecto es allow, las lecturas también se permiten para entradas bajo external_directory a menos que se invaliden. Añade reglas explícitas cuando una herramienta debe ser restringida en estas rutas, como bloquear ediciones mientras se mantienen las lecturas:
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
Mantén la lista enfocada en rutas de confianza, y superpón reglas de permiso o bloqueo adicionales según sea necesario para otras herramientas (por ejemplo bash).
Permisos Disponibles
Los permisos de Dropstone se indexan por nombre de herramienta, más un par de salvaguardas de seguridad:
read: lectura de un archivo (coincide con la ruta del archivo)edit: todas las modificaciones de archivo (cubreedit,write,patch)glob: globbing de archivos (coincide con el patrón glob)grep: búsqueda de contenido (coincide con el patrón regex)bash: ejecución de comandos de shell (coincide con comandos analizados comogit status --porcelain)task: lanzamiento de subagentos (coincide con el tipo de subagentos)skill: carga de una habilidad (coincide con el nombre de la habilidad)lsp: ejecución de consultas LSP (actualmente no granular)question: hacer preguntas al usuario durante la ejecuciónwebfetch: obtención de una URL (coincide con la URL)websearch: búsqueda web (coincide con la consulta)external_directory: se activa cuando una herramienta toca rutas fuera del directorio de trabajo del proyectodoom_loop: se activa cuando la misma llamada de herramienta se repite 3 veces con entrada idéntica
Valores Predeterminados
Si no especificas nada, Dropstone comienza con valores predeterminados permisivos:
- La mayoría de los permisos por defecto son
"allow". doom_loopyexternal_directorypor defecto son"ask".reades"allow", pero los archivos.envse deniegan por defecto:
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
Qué hace "Ask"
Cuando Dropstone solicita aprobación, la interfaz ofrece tres resultados:
once: aprobar solo esta solicitudalways: aprobar futuras solicitudes que coincidan con los patrones sugeridos (durante el resto de la sesión actual de Dropstone)reject: denegar la solicitud
El conjunto de patrones que always aprobaría es proporcionado por la herramienta (por ejemplo, las aprobaciones de bash típicamente incluyen en la lista blanca un prefijo de comando seguro como git status*).
Agentes
Puedes invalidar permisos por agente. Los permisos del agente se fusionan con la configuración global, y las reglas del agente tienen precedencia. Obtén más información sobre permisos de agentes.
Note:
Consulta la sección Reglas Granulares (Sintaxis de Objeto) anterior para ejemplos más detallados de coincidencia de patrones.
{
"$schema": "https://dropstone.io/schema/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
También puedes configurar permisos de agente en Markdown:
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
Consejo:
Usa coincidencia de patrones para comandos con argumentos. "grep *" permite grep pattern file.txt, mientras que "grep" solo lo bloquearía. Comandos como git status funcionan para comportamiento predeterminado pero requieren permiso explícito (como "git status *") cuando se pasan argumentos.