permissions.request()

Ask for the set of permissions listed in the given permissions.Permissions object.

The Permissions argument may contain either an origins property, which is an array of host permissions, or a permissions property, which is an array of API permissions, or both. Permissions must come from the set of permissions defined in the optional_permissions manifest.json key. The origins property may include permissions that match a subset of the hosts matched by an optional permission: for example, if optional_permissions include "*://mozilla.org/", then permissions.origins may include "https://developer.mozilla.org/".

The request can only be made inside the handler for a user action.

Depending on a circumstances, the browser will probably handle the request by asking the user whether to grant the requested permissions. Only a single request is made for all requested permissions: thus either all permissions are granted or none of them are.

Any permissions granted are retained by the extension, even over upgrade and disable/enable cycling.

This is an asynchronous function that returns a Promise.

Syntax

var requesting = browser.permissions.request(
  permissions                // Permissions object
)

Parameters

permissions
A permissions.Permissions object.

Return value

A Promise that will be fulfilled with true if the extension was granted all the permissions listed in the permissions argument, or false otherwise.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxOperaFirefox for Android
Basic supportChrome Full support YesEdge No support NoFirefox Full support 55
Notes
Full support 55
Notes
Notes The user will be prompted again for permissions that have been previously granted and then removed.
Notes It's not possible to request permissions from a popup or a sidebar document.
No support 56 — 61
Notes
Notes It's not possible to request permissions from an options page that's embedded in about:addons. To request permissions from an options page, set the open_in_tab property in the options_ui manifest key, so the options page opens in its own tab.
Opera Full support YesFirefox Android Full support 55
Notes
Full support 55
Notes
Notes The user will be prompted again for permissions that have been previously granted and then removed.
Notes It's not possible to request permissions from a popup or a sidebar document.
No support 56 — 61
Notes
Notes It's not possible to request permissions from an options page that's embedded in about:addons. To request permissions from an options page, set the open_in_tab property in the options_ui manifest key, so the options page opens in its own tab.

Legend

Full support  
Full support
No support  
No support
See implementation notes.
See implementation notes.

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

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

function requestPermissions() {

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

  browser.permissions.request(permissionsToRequest)
    .then(onResponse)
    .then((currentPermissions) => {
    console.log(`Current permissions:`, currentPermissions);
  });
}

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

Example extensions

Acknowledgements

Currently has a bug with requesting origins and requesting permissions on the about:addons page.

This API is based on Chromium's chrome.permissions API.

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

Document Tags and Contributors

Contributors to this page: wbamberg, blaisekal, keineausweise, andrewtruongmoz
Last updated by: wbamberg,