Dropstone Docs

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 (cubre edit, 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 como git 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ón
  • webfetch: 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 proyecto
  • doom_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_loop y external_directory por defecto son "ask".
  • read es "allow", pero los archivos .env se 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 solicitud
  • always: 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.

Ctrl+I