Capability
Un mecanismo de agrupación y límite que los desarrolladores pueden usar para aislar el acceso a la capa de IPC.
Controla el acceso detallado de las ventanas y webviews de la aplicación a los comandos del núcleo de Tauri, de la aplicación o de los plugins. Si una webview o su ventana no coinciden con ninguna capability, entonces no tiene acceso en absoluto a la capa de IPC.
Esto se puede hacer para crear grupos de ventanas, según su acceso requerido al sistema, lo que puede reducir
el impacto de las vulnerabilidades del frontend en ventanas con menos privilegios.
Las ventanas se pueden agregar a una capability por su nombre exacto (por ejemplo, main-window) o patrones glob como * o admin-*.
Una ventana puede tener ninguna, una o múltiples capabilities asociadas.
Ejemplo
Sección titulada «Ejemplo»{ "identifier": "main-user-files-write", "description": "This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.", "windows": [ "main" ], "permissions": [ "core:default", "dialog:open", { "identifier": "fs:allow-write-text-file", "allow": [{ "path": "$HOME/test.txt" }] }, ], "platforms": ["macOS","windows"]}Object Properties:
- description
- identifier (required)
- local
- permissions (required)
- platforms
- remote
- webviews
- windows
description
Sección titulada «description»string
Descripción de lo que se pretende permitir con la capability en las ventanas asociadas.
Debe contener una descripción de lo que deben permitir los permisos agrupados.
Ejemplo
Sección titulada «Ejemplo»Esta capability permite a la ventana main acceder a los comandos relacionados con la escritura en el filesystem
y comandos de dialog para permitir el acceso mediante código a los archivos seleccionados por el usuario.
identifier
Sección titulada «identifier»string
Identificador de la capability.
Ejemplo
Sección titulada «Ejemplo»main-user-files-write
boolean
Si esta capability está habilitada para las URLs locales de la aplicación o no. Por defecto es true.
Default: true
permissions
Sección titulada «permissions»PermissionEntry[] cada elemento debe ser único
Lista de permisos adjuntos a esta capability.
Debe incluir el nombre del plugin como prefijo en la forma ${plugin-name}:${permission-name}.
Para los comandos implementados directamente en la propia aplicación solo se requiere ${permission-name}.
Ejemplo
Sección titulada «Ejemplo»[ "core:default", "shell:allow-open", "dialog:open", { "identifier": "fs:allow-write-text-file", "allow": [{ "path": "$HOME/test.txt" }] }]platforms
Sección titulada «platforms»Target[] | null
Limita a qué plataformas de destino se aplica esta capability.
Por defecto se dirigen a todas las plataformas.
Ejemplo
Sección titulada «Ejemplo»["macOS","windows"]
CapabilityRemote | null
Configura URLs remotas que pueden usar los permisos de la capability.
Esta configuración es opcional y por defecto no está establecida, ya que nuestro caso de uso predeterminado es que el contenido se sirva desde nuestra aplicación local.
Ejemplo
Sección titulada «Ejemplo»{ "urls": ["https://*.mydomain.dev"]}webviews
Sección titulada «webviews»string[]
Lista de webviews que se ven afectadas por esta capability. Puede ser un patrón glob.
La capability estará habilitada en todas las webviews
cuya etiqueta coincida con cualquiera de los patrones de esta lista,
independientemente de si la etiqueta de la ventana de la webview coincide con un patrón en [Self::windows].
Ejemplo
Sección titulada «Ejemplo»["sub-webview-one", "sub-webview-two"]
windows
Sección titulada «windows»string[]
Lista de ventanas que se ven afectadas por esta capability. Puede ser un patrón glob.
Si una etiqueta de ventana coincide con cualquiera de los patrones de esta lista,
la capability estará habilitada en todas las webviews de esa ventana,
independientemente del valor de [Self::webviews].
En ventanas con múltiples webviews, prefiere especificar [Self::webviews] y omitir [Self::windows]
para un control de acceso detallado.
Ejemplo
Sección titulada «Ejemplo»["main"]
Definiciones
Sección titulada «Definiciones»CapabilityRemote
Sección titulada «CapabilityRemote»Configuración para URLs remotas asociadas con la capability.
Object Properties:
- urls (required)
string[]
Dominios remotos a los que se refiere esta capability utilizando el estándar URLPattern.
Ejemplos
Sección titulada “Ejemplos”- “https://*.mydomain.dev”: permite subdominios de mydomain.dev
- “https://mydomain.dev/api/*”: permite cualquier subruta de mydomain.dev/api
Identificador
Sección titulada «Identifier»string
Any of the following:
integerformateado comoint64Representa un [i64].numberformateado comodoubleRepresenta un [f64].
Un número ACL válido.
PermissionEntry
Sección titulada «PermissionEntry»Any of the following:
IdentifierReferencia un permiso o conjunto de permisos por su identificador.- Referencia un permiso o conjunto de permisos por su identificador y extiende su alcance. Propiedades del objeto: - allow - deny - identifier (requerido) ##### allow
Value[] |nullDatos que definen lo que está permitido por el alcance. ##### denyValue[] |nullDatos que definen lo que está denegado por el alcance. Esto debe tener prioridad en la lógica de validación. ##### identifierIdentifierIdentificador del permiso o conjunto de permisos.
Una entrada para un valor de permiso en una [Capability] puede ser un [Identifier] de permiso sin procesar
o un objeto que referencia un permiso y extiende su alcance.
One of the following:
"macOS"macOS."windows"Windows."linux"Linux."android"Android."iOS"iOS.
Plataforma de destino.
Any of the following:
nullRepresenta un valor JSON nulo.booleanRepresenta un [bool].NumberRepresenta un [Number] ACL válido.stringRepresenta un [String].Value[] Representa una lista de otros [Value]s.- Representa un mapa de claves [
String] a [Value]s. Permite propiedades adicionales:Value
Todos los valores ACL soportados.
© 2026 Colaboradores de Tauri. CC-BY / MIT