Skip to main content

Browser Extension - MacOS Configuration Profile

macOS (Managed Preferences / Configuration Profile) Guide

M
Written by Marta Droneva
Updated over 2 weeks ago

On macOS, Chrome extension policies are delivered via macOS “managed preferences” (configuration profiles). You will create a property list (plist) defining customerKey and employeeEmail and load it as a device or user policy. There are two main approaches:

  • Using an MDM/Configuration Profile (Recommended): If you have a Mac management solution (Jamf, Intune, etc.), create a configuration profile with the Preference Domain set to

    • for Interactive Browser Extension: com.google.Chrome.extensions.nffjckgmpigfpkmamacllkakieaphfnm

    • for Silent Browser Extension: com.google.Chrome.extensions.fjambfppaeandondpbbjkggkabeccjmh

Under that, define customerKey and employeeEmail with your customer key and employee email respectively. Deploy this profile to your Macs. (The MDM will handle marking it as a “forced” policy.)

  • Using Terminal (Manual MCX import): For testing or small deployments without MDM, you can import a plist using the dscl command.

Steps to configure via Terminal (Manual MCX import)

  • Create the plist: Using a text editor, create a file (e.g., customerKey_policy.plist) with the following content (replace the extension ID and values accordingly):

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"

<plist version="1.0">

<dict>

<key>com.google.Chrome.extensions.BROWSER_EXTENSION_ID</key>

<!-- Standard Browser Extension ID: nffjckgmpigfpkmamacllkakieaphfnm -->

<!-- Silent Browser Extension ID: fjambfppaeandondpbbjkggkabeccjmh -->

<dict>

<key>customerKey</key>

<dict>

<key>state</key>

<string>always</string>

<key>value</key>

<string>REPLACE_WITH_YOUR_CUSTOMER_KEY</string>

</dict>

<key>employeeEmail</key>

<dict>

<key>state</key>

<string>always</string>

<key>value</key>

<string>REPLACE_WITH_EMPLOYEE_EMAIL</string>

</dict>

</dict>

</dict>

</plist>

In this plist, the top-level key is the Chrome extension’s preference domain (which includes the extension’s ID). Under it, we define customerKey.

  • Import the plist into Managed Preferences: Run the following in Terminal (with an admin account) to import this as a device policy:

sudo dscl -u <admin_username> /Local/Default -mcximport /Computers/local_computer customerKey_policy.plist

Replace <admin_username> with an administrator’s username, and adjust the path to your plist file. This command attaches the plist as a managed preference for the “local_computer” (i.e. all users on this Mac).

If you get an error about an invalid path or the computer node not existing, you may need to create a local computer record. See steps below.

Steps to create local computer record (if missed)

  1. Run the block below exactly once (replace admin_username with a local administrator’s short name). It creates the record and gives it a GUID and the Mac’s primary MAC address, which macOS expects. (If your primary network interface is not en0—common on some Mac mini/Studio builds—replace en0 with the correct interface, e.g. en1.)

# Collect identifiers

GUID=$(uuidgen)

ETHER=$(ifconfig en0 | awk '/ether/ {print $2}')

# Create the computer record and essential attributes

sudo dscl -u admin_username /Local/Default -create /Computers/local_computer

sudo dscl -u admin_username /Local/Default -create /Computers/local_computer RealName "Local Computer"

sudo dscl -u admin_username /Local/Default -create /Computers/local_computer GeneratedUID "$GUID"

sudo dscl -u admin_username /Local/Default -create /Computers/local_computer ENetAddress "$ETHER"

  • After that repeat the import (add sudo if you used it above):

sudo dscl -u admin_username /Local/Default -mcximport /Computers/local_computer /path/to/customerKey_policy.plist

You should no longer receive an “Invalid Path” message.

  • Force macOS to apply the new managed preference by running the following command (or simply log out/in or reboot).

sudo mcxrefresh -n "$USER"

Policy creation validation

  • Validate that the policy really landed

dscl . -mcxread /Computers/local_computer

It should return created policy similar to

App domain: com.google.Chrome.extensions.fjambfppaeandondpbbjkggkabeccjmh

Key: customerKey

State: always

Value: ABC12345

App domain: com.google.Chrome.extensions.fjambfppaeandondpbbjkggkabeccjmh

Key: employeeEmail

State: always

  • Validate the browser can see the policy.

    Open chrome://policy and verify that a new section with browser extension is presented with the created policy. Note: make sure browser extension is installed in Chrome

Did this answer your question?