permissions.request()

Asks the user for the permissions listed in the permissions.Permissions object.

The Permissions argument can contain an origins property, an array of host permissions, a permissions property, an array of API permissions, or both.

Requested permissions must be defined in the optional_permissions manifest.json key. The origins property can include permissions matching a subset of the hosts matched by an optional permission. For example, if optional_permissions include "*://mozilla.org/", then permissions.origins can include "https://developer.mozilla.org/".

Requests for optional-only permissions can't include any other optional permissions.

The request can only be made inside the handler for a user action. Unless all the permissions requested are ones granted silently, the browser asks the user whether to grant the requested permissions. One request is made for all requested permissions: either all permissions are granted or none are.

The extension retains any permissions granted, even over upgrade and disable and enable cycling.

This is an asynchronous function that returns a Promise.

Syntax

js
let requesting = browser.permissions.request(
  permissions                // Permissions object
)

Parameters

Return value

A Promise that is fulfilled with true if the extension is granted the permissions listed in the permissions argument, or false otherwise.

Browser compatibility

Examples

This code adds a click handler that asks for various permissions, then logs the result of the request and the extension's permissions after the request completes.

js
const permissionsToRequest = {
  permissions: ["bookmarks", "history"],
  origins: ["https://developer.mozilla.org/"],
};

async function requestPermissions() {
  function onResponse(response) {
    if (response) {
      console.log("Permission was granted");
    } else {
      console.log("Permission was refused");
    }
    return browser.permissions.getAll();
  }

  const response = await browser.permissions.request(permissionsToRequest);
  const currentPermissions = await onResponse(response);

  console.log(`Current permissions:`, currentPermissions);
}

document
  .querySelector("#request")
  .addEventListener("click", requestPermissions);

Example extensions