Permisos
Controle que acciones requieren aprobacion para ejecutarse.
OpenCode usa la configuracion permission para decidir si una accion dada debe ejecutarse automaticamente, solicitarte confirmacion o bloquearse.
Desde v1.1.1, la configuracion booleana heredada tools esta obsoleta y se ha fusionado en permission. La configuracion anterior de tools todavia es compatible por razones de compatibilidad.
Acciones
Cada regla de permiso se resuelve a uno de los siguientes valores:
"allow"— ejecutar sin aprobacion"ask"— solicitar aprobacion"deny"— bloquear la accion
Configuracion
Puedes establecer permisos globalmente (con *) y anular herramientas especificas.
{ "$schema": "https://opencode.ai/config.json", "permission": { "*": "ask", "bash": "allow", "edit": "deny" }}TamBien puedes establecer todos los permisos a la vez:
{ "$schema": "https://opencode.ai/config.json", "permission": "allow"}Reglas granulares (Sintaxis de objeto)
Para la mayoria de los permisos, puedes usar un objeto para aplicar diferentes acciones basadas en la entrada de la herramienta.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git *": "allow", "npm *": "allow", "rm *": "deny" }, "edit": { "*": "deny", "packages/web/src/content/docs/*.mdx": "allow" } }}Las reglas se evaluan por coincidencia de patrones, ganando la ultima regla coincidente. Un patron comun es colocar la regla general "*" primero, y reglas mas especificas despues.
Comodines
Los patrones de permiso usan coincidencia de comodines simple:
*coincide con cero o mas caracteres?coincide con exactamente un caracter- Todos los demas caracteres coinciden literalmente
Permisos disponibles
Los permisos de OpenCode se indexan por nombre de herramienta, mas un par de protecciones de seguridad:
read— leer un archivo (coincide con la ruta del archivo)edit— todas las modificaciones de archivos (cubreedit,write,patch,multiedit)glob— busqueda de archivos glob (coincide con el patron glob)grep— busqueda de contenido (coincide con el patron regex)list— listar archivos en un directorio (coincide con la ruta del directorio)bash— ejecutar comandos de shell (coincide con comandos analizados comogit status --porcelain)task— iniciar subagentes (coincide con el tipo de subagente)skill— cargar una habilidad (coincide con el nombre de la habilidad)lsp— ejecutar consultas LSP (actualmente no granular)todoread,todowrite— leer/actualizar la lista de tareaswebfetch— recuperar una URL (coincide con la URL)websearch,codesearch— busqueda web/codigo (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 identica
Valores predeterminados
Si no especificas nada, OpenCode comienza con permisos permisivos predeterminados:
- La mayoria de los permisos son
"allow"de forma predeterminada. doom_loopyexternal_directoryson"ask"de forma predeterminada.reades"allow", pero los archivos.envse deniegan de forma predeterminada:
{ "permission": { "read": { "*": "allow", "*.env": "deny", "*.env.*": "deny", "*.env.example": "allow" } }}Que hace “Ask”
Cuando OpenCode solicita aprobacion, la interfaz de usuario ofrece tres resultados:
once— aprobar solo esta solicitudalways— aprobar solicitudes futuras que coincidan con los patrones sugeridos (para el resto de la sesion actual de OpenCode)reject— denegar la solicitud
El conjunto de patrones que always aprobaria lo proporciona la herramienta (por ejemplo, las aprobaciones de bash suelen incluir en la lista blanca un prefijo de comando seguro como git status*).
Agentes
Puedes anular permisos por agente. Los permisos de los agentes se fusionan con la configuracion global y las reglas de los agentes tienen prioridad. Mas informacion sobre permisos de agentes.
{ "$schema": "https://opencode.ai/config.json", "permission": { "bash": { "*": "ask", "git status": "allow" } }, "agent": { "build": { "permission": { "bash": { "*": "ask", "git status": "allow", "git push": "allow" } } } }}Tambien puedes configurar los permisos de los agentes en Markdown:
---description: Revision de codigo sin edicionesmode: subagentpermission: edit: deny bash: ask webfetch: deny---
Solo analizar codigo y sugerir cambios.