Array
必須項目か? いいえ
"permissions": [
  "*://developer.mozilla.org/*",
  "webRequest"
]

拡張機能が特別な権限を必要とする際には permission キーを使用します。このキーには文字列の配列を指定し、各文字列がパーミッションを要求します。

このキーを用いてパーミッションを要求した場合、ブラウザーはインストール時に「この拡張機能はこれだけの特権を要求しています」と通知し、これらの特権を許可しても大丈夫かとユーザーに確認します。ブラウザーはまた、インストール後にユーザーがアドオンの特権を調査することも許可します。

キーには以下の 3 種類があります。

  • host パーミッション
  • API パーミッション
  • activeTab パーミッション

host パーミッション

host パーミッションはマッチパターンとして指定します。それぞれのパターンによって、アドオンの要求する権限が有効となる URL の範囲を指定します。host パーミッションの例は "*://developer.mozilla.org/*" のようなものです。

この権限には以下が含まれます。

  • そのオリジンに対して、クロス-オリジン制約なしに XMLHttpRequest アクセス、 fetch アクセスができる権限(コンテンツスクリプトからのリクエストによるものも含みます)
  • そのオリジンによるページに(tabs.executeScript を用いて)スクリプトをプログラム的に挿入できる権限
  • webRequest API を用いて、そのホストからのイベントを受信できる権限
  • cookies API を用いて、そのホストの Cookie にアクセスできる権限("cookies" API のパーミッションが指定されている場合)
  • ホスト名が完全修飾ドメインであり、ワイルドカードを含まない場合にトラッキング防止を回避。<all_urls> については除外。

Firefox では バージョン 56 以降で拡張機能は自動的に自身をオリジンとする host パーミッションを次の形式で取得します:

moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/

ここで 60a20a9b-1ad4-af49-9b6c-c64c98c37920 は拡張機能の内部 ID です。拡張機能は extension.getURL() を呼び出すことでこの URL を取得できます:

browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/

API パーミッション

API パーミッションには、拡張機能から使用したい WebExtension API の名前をキーワードとして指定します。

現時点で使用できるキーワードは以下の通りです。

  • activeTab
  • alarms
  • background
  • bookmarks
  • browserSettings
  • browsingData
  • contentSettings
  • contextMenus
  • contextualIdentities
  • cookies
  • debugger
  • downloads
  • downloads.open
  • find
  • geolocation
  • history
  • identity
  • idle
  • management
  • menus
  • nativeMessaging
  • notifications
  • pageCapture
  • pkcs11
  • privacy
  • proxy
  • sessions
  • storage
  • tabs
  • theme
  • topSites
  • webNavigation
  • webRequest
  • webRequestBlocking

ほとんどの場合、パーミッションはその API へのアクセス権を付与するだけですが、以下のような例外があります。

  • tabs パーミッションを指定した場合、特別な tabs API のパーツTab.url / Tab.title / Tab.faviconUrl)にアクセスすることが許可されます。 Firefox では、tabs.query()queryInfo パラメーターに url を入れるのにも tabs が必要です。他の tabs API についてはパーミッションの要求なしで使用できます。
  • webRequestBlocking パーミッションを指定した場合、"brocking" 引数の使用が許可されます。これによってリクエストの変更やキャンセルが可能となります。
  • downloads.open パーミッションを指定した場合、downloads.open() API の利用が許可されます。

activeTab パーミッション

このパーミッションは "activeTab" と指定されます。拡張機能が activeTab パーミッションを持つなら、ユーザーが拡張機能と相互作用する時に、拡張機能はアクティブなタブ限定の特別な権限が許可されます。

"ユーザーの相互作用" とは次のようなものです:

  • ブラウザーアクションやページアクションをクリック
  • コンテキストメニュー項目を選択
  • 拡張機能によって定義されたキーボードショートカットをアクティベート

特別な権限とは:

  • chrome.tabs.executeScriptchrome.tabs.insertCSS を用いてタブに JavaScript や CSS をプログラム的に挿入できる能力
  • 現在のタブに、次の一部の tabs API の権限アクセス: Tab.url, Tab.titleTab.faviconUrl.

このパーミッションの意図は、拡張機能によくあるユースケースを、強力すぎるパーミッションを与えずに実行できるようにすることです。多くの拡張機能は「ユーザーが希望したら現在のページで何かをする」ことを希望しています。例えば、ユーザーがブラウザーアクションをクリックした時に現在のページでスクリプトを実行する拡張機能を考えます。activeTab パーミッションがない場合、拡張機能は <all_urls> の host パーミッションを要求する必要があります。しかし、これは拡張機能に必要以上の力を与えています: アクティブなタブで単にユーザーアクションに応答する代わりに、いかなるタブで、いかなるタイミングで、スクリプトを実行できます。

クリップボードのアクセス

拡張機能にクリップボードとやりとりできるようにする、2つの権限があります:

  • clipboardWrite: document.execCommand("copy")document.execCommand("cut") を使ったクリップボードの書き込み
  • clipboardRead: document.execCommand("paste") を使ったクリップボードの読み込み

これについての詳細はクリップボードと相互作用するを見てください。

Unlimited storage

unlimitedStorage パーミッションは:

 "permissions": ["*://developer.mozilla.org/*"]

これは developer.mozilla.org ドメイン配下のページにアクセスする権限を要求しています。

  "permissions": ["tabs"]

tabs API を使用する権限を要求しています。

  "permissions": ["*://developer.mozilla.org/*", "tabs"]

上記の権限を両方ともに要求しています。

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxOperaAndroid 版 Firefox
基本対応Chrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
activeTabChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
alarmsChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
backgroundChrome 完全対応 10Edge 未対応 なしFirefox 未対応 なしOpera 未対応 なしFirefox Android 未対応 なし
bookmarksChrome 完全対応 ありEdge 完全対応 15Firefox 完全対応 45Opera 完全対応 ありFirefox Android 未対応 なし
browserSettingsChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 56Opera 未対応 なしFirefox Android 完全対応 56
browsingDataChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 53Opera 完全対応 ありFirefox Android 完全対応 56
clipboardReadChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 54Opera 完全対応 ありFirefox Android 完全対応 54
clipboardWriteChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 51Opera 完全対応 ありFirefox Android 完全対応 51
contentSettingsChrome 完全対応 ありEdge 未対応 なしFirefox 未対応 なしOpera 完全対応 ありFirefox Android 未対応 なし
contextMenusChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 55
補足
完全対応 55
補足
補足 Available as an alias to the menus permission.
Opera 完全対応 ありFirefox Android 未対応 なし
contextualIdentitiesChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 53Opera 未対応 なしFirefox Android 完全対応 53
cookiesChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
debuggerChrome 完全対応 ありEdge 未対応 なしFirefox 未対応 なしOpera 完全対応 ありFirefox Android 未対応 なし
dnsChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 60Opera 未対応 なしFirefox Android 完全対応 60
downloadsChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 47Opera 完全対応 ありFirefox Android 完全対応 48
downloads.openChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
findChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 57Opera 未対応 なしFirefox Android 未対応 なし
geolocationChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 54Opera 完全対応 ありFirefox Android 完全対応 54
historyChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 49Opera 完全対応 ありFirefox Android 未対応 なし
identityChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 53Opera 完全対応 ありFirefox Android 未対応 なし
idleChrome 完全対応 ありEdge 完全対応 15Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
managementChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 51Opera 完全対応 ありFirefox Android 完全対応 51
menusChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 53Opera 未対応 なしFirefox Android 未対応 なし
nativeMessagingChrome 完全対応 29Edge 完全対応 15Firefox 完全対応 50Opera 完全対応 16Firefox Android 未対応 なし
notificationsChrome 完全対応 5Edge 未対応 なしFirefox 完全対応 45Opera 完全対応 25Firefox Android 完全対応 48
pageCaptureChrome 完全対応 ありEdge 未対応 なしFirefox 未対応 なしOpera 完全対応 ありFirefox Android 未対応 なし
pkcs11Chrome 未対応 なしEdge 未対応 なしFirefox 完全対応 58Opera 未対応 なしFirefox Android 未対応 なし
privacyChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 54Opera 完全対応 ありFirefox Android 完全対応 54
proxyChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 55Opera 未対応 なしFirefox Android 完全対応 55
sessionsChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 52Opera 完全対応 ありFirefox Android 未対応 なし
storageChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
tabsChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 54
themeChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 55Opera 未対応 なしFirefox Android 未対応 なし
topSitesChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 52Opera 完全対応 ありFirefox Android 完全対応 52
unlimitedStorageChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 56Opera 未対応 なしFirefox Android 完全対応 56
webNavigationChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 17Firefox Android 完全対応 48
webRequestChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48
webRequestBlockingChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 45Opera 完全対応 ありFirefox Android 完全対応 48

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3, hamasaki, naoyukik, hashedhyphen, lv7777
最終更新者: Uemmra3,