agentsclimarketplace

Chrome ext permissions

Skill RadOrigin-LLC/RAD-Claude-Skills/plugins/rad-chrome-extension/skills/chrome-ext-permissions

This skill should be used when working on Chrome extension permissions or Chrome Web Store compliance. Trigger when: declaring extension permissions, "manifest permissions", "activeTab vs tabs", "optional_permissions", "host_permissions", "Chrome Web Store rejection", "permission minimization", "over-permissioning", "CWS review", "Purple Potassium", "extension permission audit", "narrowest permission", "permission warnings", "chrome.permissions.request", "permission justification".From its SKILL.md

Install
npx -y skills add RadOrigin-LLC/RAD-Claude-Skills --skill chrome-ext-permissions

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.3 KB, 842 tokens by cl100k_base, as published. Nobody here has run it

Chrome Extension Permissions

The principle of least privilege governs all permission decisions. Request only what the extension actively uses today — never future-proof permissions. Approximately 70% of submitted extensions over-request permissions. Over-permissioning triggers CWS rejections, alarming install warnings, and longer review cycles.

Permission Decision Rules

activeTab vs. tabs vs. host_permissions

NeedUseWhy
Temporary access after user clickactiveTabNo install warning, minimal scope
Read URL/title of tabs without host accesstabsRequired for tab.url, tab.title, tab.favIconUrl
Persistent access to specific siteshost_permissions: ["https://example.com/*"]Narrow host pattern
Access to all siteshost_permissions: ["<all_urls>"]Last resort — triggers 3x rejection rate

activeTab grants temporary access to the currently focused tab only after the user explicitly invokes the extension. It requires no install warning. Always prefer it over broad alternatives.

Common Permission Misconceptions

MisconceptionReality
"Need tabs to use chrome.tabs API"Most chrome.tabs methods work without the permission
"Need storage for localStorage"storage is only for chrome.storage API, not web storage
"Need cookies for document.cookie"cookies permission is only for chrome.cookies API
"Need <all_urls> to work on any site"activeTab + user action covers most use cases

Optional Permissions

Move non-core features to optional permissions. Request at runtime when the feature is activated:

// Request permission when user enables a feature
async function enableAdvancedFeature() {
  const granted = await chrome.permissions.request({
    permissions: ['bookmarks'],
    origins: ['https://api.example.com/*'],
  });

  if (granted) {
    // Permission granted — enable feature
  } else {
    // Permission denied — show explanation
  }
}

Benefits:

  • Reduces alarming install warnings
  • Gives users informed control
  • Accelerates CWS review
  • Permissions can be revoked when feature is disabled

Host Permission Patterns

Declare in host_permissions array (MV3), not in permissions:

{
  "host_permissions": [
    "https://api.example.com/*",
    "https://cdn.example.com/*"
  ]
}

Rules:

  • Use exact domains, not wildcards
  • Prefer https:// over *://
  • Never use <all_urls> unless absolutely required
  • Move non-essential hosts to optional_host_permissions

Pre-Release Permission Audit

Before every CWS submission:

  1. Grep codebase for every chrome.* API call — verify each has a matching permission
  2. Remove any declared permission not backed by a code path
  3. Replace broad permissions with narrower alternatives where possible
  4. Test packed .crx build to verify exact install warning dialogs
  5. Prepare a short video demonstrating how each sensitive permission is used
  6. Write clear cause-and-effect justifications for the CWS privacy tab

CWS Rejection Codes for Permissions

CodeNameTrigger
Purple PotassiumExcessive PermissionsUnused or overly broad permissions
Purple LithiumUser Data PrivacyMissing privacy policy, insecure data handling
Purple CopperData TransmissionSensitive data via HTTP or in URL params

Warning: Adding permissions that trigger install warnings will temporarily disable the extension for existing users until they accept the new terms.

Additional Resources

Reference Files

  • references/permission-guide.md — Detailed permission-by-permission reference and narrowing strategies
  • references/cws-rejection-codes.md — Complete CWS rejection code taxonomy with prevention strategies

What ships with it: 2 files

10.3 KB alongside SKILL.md

Gives 0 of the 12 instructions most audit compliance skills give in 842 tokens

Counted across 937 of the 1,487 authors here whose files we hold, read 2026-08-07

  • Fetch latest guidelines before each reviewin 43 of 937, across 3 files
  • Group findings by severityin 43 of 937
  • Check files against all fetched rulesin 42 of 937, across 2 files
  • Output findings in terse file:line formatin 41 of 937, across 3 files
  • Ask user which files to review if none specifiedin 41 of 937, across 3 files
  • Read specified files or prompt user for filesin 39 of 937, across 1 file
  • Generate the audit reportin 33 of 937, across 30 files
  • Assign a severity to every findingin 25 of 937
  • Run automated accessibility scansin 23 of 937, across 13 files
  • Output a markdown audit reportin 22 of 937
  • Map findings to WCAG criteriain 20 of 937, across 10 files
  • Confirm audit scopein 19 of 937, across 9 files

Said here and by no other author read

  • request only permissions actively used today
  • prefer activeTab over broad alternatives
  • move non-core features to optional permissions
  • declare host permissions in host_permissions array
  • use exact domains instead of wildcards
  • prefer https over wildcard protocols

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,871. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.