Chrome拡張機能を開発する際、manifest.jsonで各種APIを利用するために宣言するのがpermissions(権限)です。本記事では、Manifest V3(MV3)におけるパーミッションの分類ルールと、開発でよく利用される主要なパーミッション一覧をまとめます。
Manifest V3におけるパーミッション設定の重要ルール
Manifest V3では、Manifest V2からパーミッションの宣言方法が大きく見直されています。特に注意が必要なのは以下の点です。
- host_permissions の分離:
http://*/*やhttps://example.com/*、<all_urls>などのURLパターン(ホスト権限)は、permissionsではなく専用のhost_permissionsフィールドへ記述します。 - activeTabの推奨: ユーザーが拡張機能のアイコンをクリックしたときだけ一時的にアクティブなタブへアクセスできる
activeTabを使うことで、インストール時の不要な警告を減らせます。 - optional_permissions の活用: インストール時ではなく、機能の利用時にユーザーへ許可を求める権限は
optional_permissionsに宣言します。
manifest.json の記述例
{
"manifest_version": 3,
"name": "My Chrome Extension",
"version": "1.0",
"permissions": [
"storage",
"tabs",
"contextMenus",
"notifications",
"alarms"
],
"host_permissions": [
"https://*.example.com/*"
],
"optional_permissions": [
"downloads",
"bookmarks"
]
}
主要パーミッション一覧(permissions)
拡張機能でよく利用される主なAPI識別子一覧です。利用する機能に応じて permissions 配列へ追加します。
| パーミッション名 | 利用できるAPI・主な用途 |
|---|---|
activeTab | ユーザー操作時に現在開いているタブへ一時的なアクセス権を付与 |
alarms | chrome.alarms API(定期的なタスク実行やタイマー処理) |
bookmarks | chrome.bookmarks API(ブックマークの作成・編集・参照) |
clipboardRead | クリップボードからのデータ読み取り(ペースト処理) |
clipboardWrite | クリップボードへのデータ書き込み(コピー処理) |
contextMenus | chrome.contextMenus API(右クリックメニューへの項目追加) |
cookies | chrome.cookies API(Cookieの取得・変更・監視) |
debugger | chrome.debugger API(DevToolsプロトコルを用いたデバッグ) |
declarativeNetRequest | chrome.declarativeNetRequest API(宣言的ルールによる通信ブロック・変更) |
downloads | chrome.downloads API(ファイルのダウンロード制御・監視) |
history | chrome.history API(閲覧履歴の取得・操作) |
management | chrome.management API(インストール済み拡張やアプリの管理) |
nativeMessaging | ネイティブアプリケーションとのプロセス間通信 |
notifications | chrome.notifications API(デスクトップ通知の表示) |
offscreen | chrome.offscreen API(DOM操作や音声再生のためのバックグラウンド画面) |
scripting | chrome.scripting API(タブへのスクリプト・CSSの動的挿入) |
sidePanel | chrome.sidePanel API(ブラウザのサイドパネル表示) |
storage | chrome.storage API(拡張機能データの永続化保存) |
tabs | chrome.tabs API(タブのURL・タイトル等の機微情報の取得) |
unlimitedStorage | chrome.storage.local や IndexedDB の容量制限を解除 |
webNavigation | chrome.webNavigation API(ページ遷移やロード状態の監視) |
パーミッション宣言時の注意点
- 不要な権限は要求しない: 過剰なパーミッションを宣言すると、インストール時に強い警告(「アクセスしたすべてのウェブサイトのデータを読み取り・変更」など)が表示され、Chrome Web Storeの審査も厳しくなります。
- APIごとに個別調査が必要: 多くのChrome API(例:
chrome.actionやchrome.runtime)はpermissionsの宣言なしでそのまま使えます。まずは公式ドキュメントでパーミッションが必要かどうかを確認してください。
詳細なAPI仕様や最新の利用条件は、Google公式の chrome.permissions ドキュメント を参照してください。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月20日
- 変更機械翻訳による不自然な表記や崩れたテーブル構造を修正し、API名と説明を整理しました。
- 追加Manifest V3での重要変更点であるpermissionsとhost_permissionsの分離について解説とmanifest.jsonの記述例を追加しました。
- 削除Manifest V2前提の古いドキュメントリンクや不完全なURL指定を削除しました。
