Saltar al contenido

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.

{
"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

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.

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.

string

Identificador de la capability.

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

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}.

[
"core:default",
"shell:allow-open",
"dialog:open",
{
"identifier": "fs:allow-write-text-file",
"allow": [{ "path": "$HOME/test.txt" }]
}
]

Target[] | null

Limita a qué plataformas de destino se aplica esta capability.

Por defecto se dirigen a todas las plataformas.

["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.

{
"urls": ["https://*.mydomain.dev"]
}

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].

["sub-webview-one", "sub-webview-two"]

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.

["main"]

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.

  • “https://*.mydomain.dev”: permite subdominios de mydomain.dev
  • https://mydomain.dev/api/*”: permite cualquier subruta de mydomain.dev/api

string

Any of the following:

  • integer formateado como int64 Representa un [i64].
  • number formateado como double Representa un [f64].

Un número ACL válido.

Any of the following:

  • Identifier Referencia 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[] | null Datos que definen lo que está permitido por el alcance. ##### deny Value[] | null Datos que definen lo que está denegado por el alcance. Esto debe tener prioridad en la lógica de validación. ##### identifier Identifier Identificador 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:

  • null Representa un valor JSON nulo.
  • boolean Representa un [bool].
  • Number Representa un [Number] ACL válido.
  • string Representa 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