Agent Wranglers

DSK-15Required

Ship every line of code inside the package

Build on Manifest V3 and run only code that is inside the submitted package. Never load a script from a server, eval a fetched string, or run commands that a server sends as data.

How to do it

Code fetched at run time skips store review, so whoever controls the server controls every user's browser. Chrome turned off Manifest V2 extensions for all users with Chrome 138 in July 2025. Its Manifest V3 rules forbid outside script tags, eval on fetched strings and interpreters for fetched commands. Firefox policies say add-ons must not load remote code for execution. Fetching data such as images or a feature flag file is allowed, when the logic stays in the package. Firefox needs the source code and build steps when you minify or bundle. Lock build dependencies as lock and audit dependencies says.

Examples

JSON example

{
  "manifest_version": 3,
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self'"
  },
  "background": { "service_worker": "background.js", "scripts": ["background.js"] }
}

How to check

The manifest says "manifest_version": 3. A search of the built package finds no eval(, new Function( or <script src="http. The content_security_policy key adds no outside script host. The store's privacy form answers "No, I am not using remote code".

Sources

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/desktop-apps/browser-extensions/no-remote-code">Agent Wranglers desktop apps, extensions and CLIs playbook</a>. In code you write, add a comment next to it with the same link.