Remote Permissions

The remote permission service offers a simple way to set default permissions through remote settings. For a general introduction to the permission system, see the permission manager documentation.

This mechanism is only meant to be used in combination with permissions that control exceptions for web compatibility. For example, remote permissions are used to set permissions of type https-only-load-insecure, allowing HTTPS-First exceptions to be set through remote settings if a site is known to be broken with HTTPS-First. A bad example of remote permission would be using them to set permissions of the type uitour. Permissions of that type grant sites access to a set of special APIs. These kinds of permissions should be set directly in source at browser/app/permissions.

To limit the types of permissions that are allowed to be set through remote settings, the permission types that are allowed to be set through remote permissions are specified in-source. Both updating this allowlist, and adding new remote permissions requires a review.

Implementing an exception list with remote permissions

If you want to set up a new site exception list for your feature with remote permissions, you can roughly follow these steps:

  1. If it doesn’t exist already: Choose a new permission type and set up code that checks for that permission type (for example, using the permission manager’s testExactPermissionFromPrincipal method).

  2. File bug in Core :: Permission Manager and attach a patch updating ALLOWED_PERMISSION_VALUES in extensions/permissions/RemotePermissionService.sys.mjs to include your new permission.

  3. For each change to your specific remote permissions, open a bug blocking the bug you filed in the step above to request your changes to be added to remote settings

  4. (Optional) If you expect to regularly make updates to the remote permission collection, you can also file a bug in Infrastructure & Operations :: Corporate VPN: ACL requests requesting direct access to the remote settings admin UI and the remote-permissions collection. With that, you can request your changes directly in the remote settings admin UI. For transparency reasons, we still ask you though to document the changes you make in the bug you filed in step 2.