Skip to main content

Apple Firefox Extension Policy

Updated this week

The Apple Firefox Extension Policy in Swif MDM lets you centrally manage Firefox extensions on managed macOS devices. You can silently install required extensions, remove unwanted ones, and lock mission‑critical extensions so users can’t turn them off.


Overview

Display name: Apple Firefox Extension Policy
Purpose: Manage Firefox extension operations on managed macOS devices
BYOD compatibility: macOS
Minimum system requirements: macOS 10.12 or later
Supported platforms: macOS
Ownership types:

  • Company-owned devices

  • BYOD (personally owned) devices

Use this policy when you need to:

  • Ensure key Firefox extensions are always installed (e.g., security, SSO, compliance).

  • Remove or block specific extensions from running.

  • Prevent users from disabling or uninstalling business‑critical extensions.

⚠️ Note: This policy applies to macOS devices only and is not compatible with iOS or BYOD iOS devices.


Policy Fields

1. Swif Firefox Extension

Display name: Swif Firefox Extension
Type: On/Off (Boolean)

Description
Turns the Swif Firefox extension on or off (where applicable for your environment).

Typical use cases

  • Turn on the Swif Firefox extension for security, monitoring, or device posture checks.

  • Ensure consistent extension behavior across managed devices.

Recommendations

  • Company-owned devices: Enable, if you use the Swif Firefox extension as part of your security or compliance stack.

  • BYOD devices: Enable only if required for access to corporate resources and clearly documented in your BYOD policy.


2. Install

Display name: Install
Type: List of text values (array of strings)
Description: A list of URLs or native paths for extensions to be installed.

Use this field to specify which Firefox extensions must be automatically installed on the device.

You can provide:

  • Extension URLs (e.g., URLs from the Firefox Add‑ons site), or

  • Native paths to extension bundles installed locally on the device.

Behavior

  • Firefox installs each extension that matches a valid URL or native path.

  • Installations are silent from the user’s point of view (no manual action required).

  • If an extension is already installed, Firefox will keep it installed and may update it, depending on the extension’s update settings.

Examples

  • A security or EDR Firefox extension hosted on your own server.

  • A custom internal extension stored in a local path on managed Macs.

  • A line‑of‑business extension used for SSO, web filtering, or compliance.


3. Uninstall

Display name: Uninstall
Type: List of text values (array of strings)
Description: A list of extension IDs that should be uninstalled if found.

Use this field to define which existing extensions must be removed from Firefox.

Behavior

  • If Firefox finds an installed extension whose extension ID is listed here, it will remove that extension.

  • If an ID is not present on the device, nothing happens for that entry.

  • This is useful for:

    • Removing deprecated or insecure extensions.

    • Cleaning up older tools when you migrate to new ones.

    • Enforcing acceptable‑use or security policies.


4. Locked

Display name: Locked
Type: List of text values (array of strings)
Description: A list of extension IDs that the user cannot disable or uninstall.

Use this field to protect critical extensions from user changes.

Behavior

  • Users see the locked extension in Firefox, but:

    • They cannot disable it.

    • They cannot remove it.

  • If you want an extension to be always present and locked:

    1. Add it to Install, and

    2. Add its extension ID to Locked.

Use cases

  • Security and compliance extensions that must always run.

  • SSO, web filter, or DLP extensions that enforce corporate policies.

  • Monitoring or logging extensions required by regulations.


How to Find Firefox Extension URLs, Native Paths, and Extension IDs

To configure Install, Uninstall, and Locked, you’ll often need to know:

  • Extension URLs (for installation),

  • Extension native paths (for local or custom extensions),

  • Extension IDs (for uninstalling or locking).

Below are practical ways to get each of these on macOS.


1. Finding Extension URLs (for the Install field)

A. From the Firefox Add-ons (AMO) website

  1. Open Firefox on any device.

  2. Go to the Firefox Add-ons website:
    https://addons.mozilla.org/

  3. Search for the extension you want (e.g., “uBlock Origin”).

  4. Open the extension’s details page.

  5. Use the URL from the address bar as your extension URL (commonly used as a reference when deploying via enterprise policy).

Example URL:

https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/

You can add this URL to the Install field if your environment uses URLs for extension deployment. Some enterprise setups may also use direct .xpi file URLs:

https://example.com/extensions/my-extension.xpi

Tip: If you host internal or custom extensions, store them on a secure internal web server and use the direct .xpi URL in the Install list.


2. Finding Native Paths to Extensions (for the Install field)

Native paths point to where extensions live on the file system. You’ll see these mostly when dealing with:

  • Custom or internally‑developed extensions, or

  • Extensions pre‑installed as part of a macOS image or package.

A. Common Firefox extension locations on macOS

Depending on scope (per-user vs system‑wide), Firefox extensions usually reside in:

  • Per-user profile (most common):

    • ~/Library/Application Support/Firefox/Profiles/<profile_name>/extensions/

  • System-wide / application-level (less common, used in packaging or imaging):

    • /Library/Application Support/Mozilla/Extensions/

    • /Library/Application Support/Firefox/Extensions/

<profile_name> is a folder with a random string and suffix, for example:
abcd1234.default-release

B. How to locate a specific extension’s native path

  1. On a test Mac, install the extension normally in Firefox.

  2. In Finder, press Shift + Command + G to open Go to Folder….

  3. Paste and open:

    ~/Library/Application Support/Firefox/Profiles/

  4. Open the active profile folder (commonly ends with .default-release).

  5. Open the extensions folder.

  6. Inside, you’ll see .xpi files or folders, often named after:

  7. Copy the full file path to the extension you want to manage, for example:

    /Users/testuser/Library/Application Support/Firefox/Profiles/abcd1234.default-release/extensions/uBlock0@raymondhill.net.xpi
  8. Use that path as a value in the Install list if your deployment model supports native paths.

Recommendation: For production use, avoid per‑user paths where possible and instead:

  • Package extensions into system‑wide directories, or

  • Use URLs and standard Firefox enterprise policies for more predictable behavior.


3. Finding Extension IDs (for the Uninstall and Locked fields)

The extension ID is the unique identifier for a Firefox extension. You need it to:

  • Remove an extension using Uninstall, or

  • Lock an extension using Locked.

Here are several ways to discover it.


Method A: From the installed extension’s files

  1. Follow the steps above to locate the extension inside the extensions folder.

  2. Often, the .xpi file name itself is the extension ID. For example:

  3. If the file has a non obvious name (e.g., a random string), extract it:

    • Copy the .xpi file to a temporary folder.

    • Rename it from .xpi to .zip (if needed).

    • Unzip it.

    • Open manifest.json inside the unzipped folder.

    • Look for the browser_specific_settings.gecko.id field (or applications.gecko.id in older manifests).

    Example snippet:

    {
    "browser_specific_settings": {
    "gecko": {
    "id": "my-extension@example.com"
    }
    }
    }

    In this example, the extension ID is:

  4. Use this ID in the Uninstall or Locked lists.


Method B: Using Firefox’s Add-ons Manager (limited)

Some extensions expose useful info in the UI:

  1. In Firefox, open the menu and go to Add-ons and themes (or press about:addons in the address bar).

  2. Open the extension’s details page.

  3. In some cases, the ID may be visible in:

    • Diagnostics or debug information.

    • A “More information” or “Troubleshooting” section.

    • A “Copy debug info” button or similar.

Not all extensions show the ID directly, so this method isn’t always sufficient. When in doubt, use Method A and inspect the manifest.json.


Method C: From developer builds or source

If you manage or have access to the extension source code:

  1. Open the extension’s project folder.

  2. Open manifest.json.

  3. Look for:

    {
    "browser_specific_settings": {
    "gecko": {
    "id": "my-extension@example.com"
    }
    }
    }
  4. That id value is the extension ID to use in Uninstall or Locked.


Putting It All Together: Configuration Examples

Example 1: Enforce a required extension and lock it

Goal:

You would configure:


Example 2: Remove a deprecated extension

Goal:

You would configure:

After the policy is applied, Firefox will remove that extension if found.


Example 3: Install multiple extensions via URLs

Goal:

  • Install three standard corporate extensions.

You would configure:

  • Install:

    https://addons.mozilla.org/en-US/firefox/addon/extension-one/ https://addons.mozilla.org/en-US/firefox/addon/extension-two/ https://internal.example.com/extensions/corp-logging.xpi
  • Locked (optional, if some must be mandatory):


Did this answer your question?