Skip to content

Remove activeTab from the Chrome package: redundant next to host permissions #61

Closed

Description

@jakemgold

Per the convention that permission-surface changes get a public Issue (CONTRIBUTING.md), and ahead of the v1.0 permission freeze and Chrome Web Store submission.

Analysis

The manifest requests activeTab alongside host_permissions for http://*/* and https://*/*. With broad host permissions present, activeTab grants nothing the extension does not already have. Chrome's restricted "on click" site-access mode is implemented by the browser withholding and re-granting host permissions on invocation, and does not depend on the activeTab permission. The Chrome Web Store requires the narrowest permission set that supports shipped functionality; a redundant entry works against review and against the store listing's permission-justification fields.

Change (targeting 0.11.0)

scripts/package-chrome.sh now strips activeTab from the staged manifest when building the Chrome zip, so the submitted Chrome package ships with storage, scripting, cookies, and host permissions only. This is the single point where the shipped Chrome manifest diverges from the repository manifest.

The repository manifest (which the Safari build mirrors) keeps activeTab for now. The previous permission-narrowing experiment broke Safari detection in unpredicted ways, so Safari-side removal is deliberately deferred to the Safari / App Store store-readiness pass, where it must be re-evaluated and tested before that submission. Until then, Safari intentionally ships the superset.

Verification

  • Chrome: load the packaged (trimmed) build, confirm detection, popup probe, and clear-site-data work
  • Chrome: set site access to "when you click the extension" and confirm on-click behavior still works without activeTab
  • Safari (deferred to Safari store-readiness): build with activeTab removed from the shared manifest and re-run the same checks before the App Store submission

Rationale documented in SECURITY.md's permissions section.

Activity

  1. jakemgold commented on Jul 10, 2026

    @jakemgold
    CollaboratorAuthor

    Status note: implementation is in flight on my local 0.11.0 store-readiness branch and lands with that release. No PR needed — this issue is the public record of the permissions change per CONTRIBUTING.md.

  2. jakemgold commented on Jul 11, 2026

    @jakemgold
    CollaboratorAuthor

    Chrome-side verification complete against the packaged 0.11.0 build (storage/scripting/cookies + host permissions only):

    • Trimmed package loads cleanly: no manifest errors, service worker running, i18n resolving
    • Default site access: ambient detection, toolbar icon states, and the popup (detection + version badge, logged-out actions, developer tools) all function
    • Site access set to "when you click": access correctly withheld (no ambient injection), a single click on the extension re-grants host permissions via Chrome's standard flow, reload-to-apply works, full function after grant — confirming the on-click mode never depended on activeTab

    Shipped in v0.11.0. The remaining Safari checkbox moves to the Safari store-readiness phase (see the roadmap's new phase split); it will get its own tracking issue when that work starts. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions