An extension declares what it needs in permissions and
optional_permissions, and the sites it needs to touch in
host_permissions and optional_host_permissions. In Manifest
V2 hosts go in permissions too. Chrome shows a warning for some
permissions at install, or when the extension asks for them.
Permissions
This table is Chrome’s list. Most names give access to a chrome API of
the same name.
| Permission | Allows | Chrome’s warning |
|---|---|---|
accessibilityFeatures.modify | Changing accessibility features | Change accessibility settings |
accessibilityFeatures.read | Reading accessibility settings | Read accessibility settings |
activeTab | Temporary access to the active tab after a user gesture | |
alarms | The alarms API | |
audio | The audio API | |
background | Starts Chrome at login and keeps it running after its windows close | |
bookmarks | The bookmarks API | Read and change bookmarks |
browsingData | The browsingData API | |
certificateProvider | The certificateProvider API | |
clipboardRead | Pasting from the clipboard | Read copied and pasted data |
clipboardWrite | Cutting and copying to the clipboard | Modify copied and pasted data |
contentSettings | The contentSettings API | Change site access settings |
contextMenus | The contextMenus API | |
cookies | The cookies API | |
debugger | The debugger API | Access the page debugger; read and change all data on all websites |
declarativeContent | The declarativeContent API | |
declarativeNetRequest | The declarativeNetRequest API | Block content on any page |
declarativeNetRequestWithHostAccess | The same API, with host permissions needed for all actions | |
declarativeNetRequestFeedback | Writes the API’s errors and warnings to the console, for unpacked extensions | Read browsing history |
desktopCapture | The desktopCapture API | Capture screen content |
dns | The dns API | |
documentScan | The documentScan API | |
downloads | The downloads API | Manage downloads |
downloads.open, downloads.ui | Opening downloads; setting the downloads UI options | Manage downloads |
enterprise.deviceAttributes, .hardwarePlatform, .networkingAttributes, .platformKeys | The enterprise APIs | |
favicon | The Favicon API | Read icons of websites visited |
fileBrowserHandler, fileSystemProvider, fontSettings, gcm | The APIs of those names (gcm also gives instanceID) | |
geolocation | The Geolocation API without a permission prompt | Detect physical location |
history | The history API | Read and change browsing history on all signed-in devices |
identity | The identity API | |
identity.email | The user’s email address | Know email address |
idle, loginState | The APIs of those names | |
management | The management API | Manage apps, extensions and themes |
nativeMessaging | Native messaging | Communicate with native applications |
notifications | The notifications API | Display notifications |
offscreen | The offscreen API | |
pageCapture | The pageCapture API | Read and change all data on all websites |
platformKeys, power, printerProvider, printing, printingMetrics | The APIs of those names | |
privacy | The privacy API | Change privacy-related settings |
processes | The processes API | |
proxy | The proxy API | Read and change all data on all websites |
publicSuffix | The publicSuffix API | |
readingList | The readingList API | Read and change reading list entries |
runtime | runtime.connectNative() and runtime.sendNativeMessage() | |
scripting, search | The APIs of those names | |
sessions | The sessions API | With history: read and change history on signed-in devices. With tabs: read history on signed-in devices |
sidePanel, storage | The APIs of those names | |
system.cpu, system.display, system.memory | The system APIs of those names | |
system.storage | The system.storage API | Identify and eject storage devices |
tabCapture | The tabCapture API | Read and change all data on all websites |
tabGroups | The tabGroups API | View and manage tab groups |
tabs | Privileged tab fields, usually not needed for those APIs | Read browsing history |
topSites | The topSites API | Read the list of frequently visited websites |
tts | The tts API | |
ttsEngine | The ttsEngine API | Read all text spoken via synthesised speech |
unlimitedStorage | Unlimited quota for storage.local, IndexedDB, Cache Storage and the Origin Private File System | |
userScripts | The userScripts API; the user must also turn user scripts on | |
vpnProvider | The vpnProvider API | |
webAuthenticationProxy | The webAuthenticationProxy API | Read and change all data on all websites |
webNavigation | The webNavigation API | Read browsing history |
webRequest | The webRequest API | |
webRequestBlocking | The webRequest API for blocking requests |
Firefox’s list on MDN shares most of these names and adds others, among them
tabHide (tabs.hide()) and devtools, given
whenever devtools_page is present. Most permissions there give access to
the API of the same name.
Host permissions
A host permission is a match pattern for sites the extension may touch. For matching sites, MDN says host permissions give an extension:
- requests to the site without cross-origin restrictions
- the
url,titleandfavIconUrlof matching tabs, without thetabspermission - injection of scripts and styles from code
webRequestevents for those hosts- access to cookies through the
cookiesAPI, which also needs that permission
Match patterns
A match pattern is written <scheme>://<host>:<port>/<path>.
| Part | Meaning |
|---|---|
| Scheme | http, https, file, or *, which matches only http and https. |
| Host | A host name; *.example.org for a domain and its subdomains; or * for any host. A wildcard must be first and be followed by . or /. |
| Port | Optional. All ports when left out. |
| Path | Required. Ignored for host permissions, so /* is the usual value there. |
The special value <all_urls> matches any URL with a permitted scheme.
| Pattern | Matches |
|---|---|
https://*/* | Any https address. |
*://example.org/* | Both http and https on that host. |
https://*.example.org/foo*bar | https addresses on the domain and its subdomains whose path starts with foo and ends with bar. |
file:///foo* | Local files whose path starts with foo. |