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:
Add it to Install, and
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
Open Firefox on any device.
Go to the Firefox Add-ons website:
https://addons.mozilla.org/Search for the extension you want (e.g., “uBlock Origin”).
Open the extension’s details page.
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
On a test Mac, install the extension normally in Firefox.
In Finder, press Shift + Command + G to open Go to Folder….
Paste and open:
~/Library/Application Support/Firefox/Profiles/Open the active profile folder (commonly ends with
.default-release).Open the extensions folder.
Inside, you’ll see
.xpifiles or folders, often named after:The extension ID (e.g.,
uBlock0@raymondhill.net.xpi), orA generated ID or hexadecimal string.
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
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
Follow the steps above to locate the extension inside the extensions folder.
Often, the
.xpifile name itself is the extension ID. For example:Extension ID:
uBlock0@raymondhill.net
If the file has a non obvious name (e.g., a random string), extract it:
Copy the
.xpifile to a temporary folder.Rename it from
.xpito.zip(if needed).Unzip it.
Open
manifest.jsoninside the unzipped folder.Look for the
browser_specific_settings.gecko.idfield (orapplications.gecko.idin older manifests).
Example snippet:
{
"browser_specific_settings": {
"gecko": {
"id": "my-extension@example.com"
}
}
}In this example, the extension ID is:
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:
In Firefox, open the menu and go to Add-ons and themes (or press
about:addonsin the address bar).Open the extension’s details page.
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:
Open the extension’s project folder.
Open
manifest.json.Look for:
{
"browser_specific_settings": {
"gecko": {
"id": "my-extension@example.com"
}
}
}That
idvalue 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:
Ensure
my-security-extension@example.comis always installed.Prevent users from disabling or uninstalling it.
You would configure:
Swif Firefox Extension: Enabled (if you use Swif’s own extension)
Install:
or a direct
.xpiURL or native path.Locked:
Example 2: Remove a deprecated extension
Goal:
Remove
old-tool@example.comwherever it appears.
You would configure:
Uninstall:
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):
