8 Shipped Chrome Extensions, 4 Ways to Declare Host Permissions A developer who ships eight Chrome extensions under Legacy Tools has identified four distinct patterns for declaring host permissions in Manifest V3. The survey of the eight manifests shows that five extensions use broad access via or content_scripts.matches, one is Gmail-only, one uses a fixed list plus optional grants, and one relies solely on activeTab. The developer notes that permission declarations act as user-facing UI, and that moving breadth from host_permissions to content_scripts does not reduce the site-access warning. I ship eight small Chrome extensions under Legacy Tools. They are all Manifest V3, and they all need some form of access to the pages you visit — that is what tools that check things before you send them do. I have written before about the rules I give AI agents https://dev.to/k-wada/after-shipping-8-chrome-extensions-these-are-the-5-rules-i-always-give-ai-agents-13al so they never broaden permissions on their own. This post is about the other side of that: the shapes the declarations themselves take. Recently I put all eight manifests side by side the versions shipped to the Chrome Web Store as of 2026-08-22 and realized they ended up using four different shapes to declare that access. None of this was planned up front; each shape fell out of what the tool is. Here is the survey. 1. Everywhere, all the time — five extensions. Safe Privacy Gate, Safe Attachment Check, Safe Mail Link Check, Site Operator Check, Find My Age. These step in right before a send or a click, and there is no way to know in advance which site that will happen on. Interesting detail: only two of the five actually write