Lección 03: allowed tools
El campo allowed-tools preaprueba un conjunto de tooling para que Claude no pida permiso al usarlo durante una ejecución del skill. Esta lección explica la sintaxis, el comportamiento exacto y los compromisos.
Qué hace allowed-tools
Sin allowed-tools, cada llamada de tooling durante la ejecución de un skill dispara un prompt de permiso. El usuario ve “Claude wants to run git status. Allow?” antes de que ocurra nada.
Con allowed-tools, el tooling listado queda preaprobado durante la duración del skill. Claude lo usa sin pedir permiso. El usuario ya consintió al invocar el skill.
Esto importa sobre todo para skills con disable-model-invocation: true. Si el usuario tiene que responder a cinco prompts de permiso a mitad del flujo, el skill no es mejor que escribir los comandos a mano.
Sintaxis
Nombres de tooling separados por espacios en el frontmatter:
allowed-tools: Read Grep GlobPara Bash, puedes acotar la aprobación a patrones de comando específicos:
allowed-tools: Bash(git *) Bash(npm test) ReadBash(git *)— cualquier subcomando de gitBash(npm test)— solonpm test, nonpm installBash(npx eslint *)— cualquier invocación de eslint vía npxBash(find *)— cualquier comando find
El patrón tras Bash( se compara contra la cadena de comando completa. Usa * como comodín.
Qué NO hace allowed-tools
allowed-tools no restringe qué tooling puede usar Claude. Solo determina qué tooling se salta el prompt de permiso. Si el cuerpo del skill lleva a Claude a llamar a un tooling que no está en allowed-tools, ese tooling pedirá permiso como siempre — no será bloqueado.
Si quieres impedir que Claude use un tooling por completo, eso es una configuración distinta (permisos de proyecto, no frontmatter del skill).
Patrones comunes
Investigación de solo lectura
allowed-tools: Read Grep GlobPreaprueba el tooling necesario para explorar una base de código sin escribir nada. Claude puede leer archivos, buscar patrones y listar directorios sin pedir permiso.
Operaciones de git
allowed-tools: Bash(git *) Bash(git diff *) Bash(git log *)Preaprueba todos los subcomandos de git. Útil para skills que inspeccionan el historial de git, comprueban el status o crean commits.
npm acotado
allowed-tools: Bash(npm test) Bash(npm run build) Bash(npm run lint)Preaprueba scripts de npm específicos sin permitir comandos npm arbitrarios como npm install o npm publish.
Project skills y el diálogo de confianza
Cuando un skill se instala con alcance de proyecto (.claude/skills/), el usuario ve un diálogo de confianza del workspace la primera vez que abre el proyecto en Claude Code. Aceptar el diálogo es lo que permite que allowed-tools tenga efecto para skills con alcance de proyecto. Los skills personales (~/.claude/skills/) no requieren este paso.
Ejemplos
examples/safe-commit/— operaciones de git preaprobadas para un flujo de commitexamples/readonly-research/— tooling de solo lectura preaprobado para investigación de la base de código