Important: Chrome will be removing support for Chrome Apps on all platforms. Chrome browser and the Chrome Web Store will continue to support extensions. Read the announcement and learn more about migrating your app.

Declare Permissions

To use most chrome.* APIs, your extension or app must declare its intent in the "permissions" field of the manifest. Each permission can be either one of a list of known strings (such as "geolocation") or a match pattern that gives access to one or more hosts. Permissions help to limit damage if your extension or app is compromised by malware. Some permissions are also displayed to users before installation, as detailed in Permission Warnings.

If an API requires you to declare a permission in the manifest, then its documentation tells you how to do so. For example, the Storage page shows you how to declare the "storage" permission.

Here's an example of the permissions part of a manifest file:


"permissions": [
  "serial",
  "storage",
  "videoCapture"
],

The following table lists the currently available permissions:

Permission Description
"alarms" Gives your app access to the chrome.alarms API.
"audio" Gives your app access to the chrome.audio API.
"audioCapture" Requests that the app be granted permissions to capture audio directly from the user's Microphone via the getUserMedia API.
"background"

Makes Chrome start up early and and shut down late, so that apps and extensions can have a longer life.

When any installed hosted app, packaged app, or extension has "background" permission, Chrome runs (invisibly) as soon as the user logs into their computer—before the user launches Chrome. The "background" permission also makes Chrome continue running (even after its last window is closed) until the user explicitly quits Chrome.

Note: Disabled apps and extensions are treated as if they aren't installed.

You typically use the "background" permission with a background page, event page or (for hosted apps) a background window.

"browser" Gives your app access to the chrome.browser API.
"certificateProvider" Gives your app access to the chrome.certificateProvider API.
"clipboard" Gives your app access to the chrome.clipboard API.
"clipboardRead" Required if the extension or app uses document.execCommand('paste').
"clipboardWrite" Indicates the extension or app uses document.execCommand('copy') or document.execCommand('cut'). This permission is required for hosted apps; it's recommended for extensions and packaged apps.
"contextMenus" Gives your app access to the chrome.contextMenus API.
"desktopCapture" Gives your app access to the chrome.desktopCapture API.
"diagnostics" Gives your app access to the chrome.diagnostics API.
"displaySource" Gives your app access to the chrome.displaySource API.
"dns" Gives your app access to the chrome.dns API.
"documentScan" Gives your app access to the chrome.documentScan API.
"enterprise.deviceAttributes" Gives your app access to the chrome.enterprise.deviceAttributes API.
"enterprise.platformKeys" Gives your app access to the chrome.enterprise.platformKeys API.
"experimental" Required if the extension or app uses any chrome.experimental.* APIs.
"fileBrowserHandler" Gives your app access to the chrome.fileBrowserHandler API.
"fileSystem" Gives your app access to the chrome.fileSystem API.
"fileSystemProvider" Gives your app access to the chrome.fileSystemProvider API.
"gcm" Gives your app access to the chrome.gcm API.
"geolocation" Allows the extension or app to use the proposed HTML5 geolocation API without prompting the user for permission.
"hid" Gives your app access to the chrome.hid API.
"identity" Gives your app access to the chrome.identity API.
"idle" Gives your app access to the chrome.idle API.
"management" Gives your app access to the chrome.management API.
"mdns" Gives your app access to the chrome.mdns API.
"mediaGalleries" Gives your app access to the chrome.mediaGalleries API.
"nativeMessaging" Gives your app access to the native messaging API.
"networking.config" Gives your app access to the chrome.networking.config API.
"networking.onc" Gives your app access to the chrome.networking.onc API.
"notifications" Gives your app access to the chrome.notifications API.
"platformKeys" Gives your app access to the chrome.platformKeys API.
"pointerLock" Required to use Pointer Lock via calls to requestPointerLock or Pepper's Mouse Lock API. See Other APIs for behavior differences.
"power" Gives your app access to the chrome.power API.
"printerProvider" Gives your app access to the chrome.printerProvider API.
"proxy" Gives your app access to the chrome.proxy API.
"serial" Gives your app access to the chrome.serial API.
"signedInDevices" Gives your app access to the chrome.signedInDevices API.
"socket" Gives your app access to the chrome.socket API.
"storage" Gives your app access to the chrome.storage API.
"syncFileSystem" Gives your app access to the chrome.syncFileSystem API.
"system.cpu" Gives your app access to the chrome.system.cpu API.
"system.display" Gives your app access to the chrome.system.display API.
"system.memory" Gives your app access to the chrome.system.memory API.
"system.network" Gives your app access to the chrome.system.network API.
"system.powerSource" Gives your app access to the chrome.system.powerSource API.
"system.storage" Gives your app access to the chrome.system.storage API.
"tts" Gives your app access to the chrome.tts API.
"unlimitedStorage" Provides an unlimited quota for storing HTML5 client-side data, such as databases and local storage files. Without this permission, the extension or app is limited to 5 MB of local storage.

Note: This permission applies only to Web SQL Database and application cache (see issue 58985). Also, it doesn't currently work with wildcard subdomains such as http://*.example.com.

"usb" Gives your app access to the chrome.usb API.
"videoCapture" Requests that the app be granted permissions to capture video directly from the user's Web Cam via the getUserMedia API.
"virtualKeyboard" Gives your app access to the chrome.virtualKeyboard API.
"vpnProvider" Gives your app access to the chrome.vpnProvider API.
"wallpaper" Gives your app access to the chrome.wallpaper API.
"webview" Required if the app uses the Webview Tag to embed live content from the web in the packaged app.