Skip to content

Repository files navigation

Managed Favs Generator

A native macOS app to generate Microsoft Edge Managed Favorites configuration files for enterprise deployment via Group Policy (GPO) and Microsoft Intune. All code come from Atlassian Rovo Dev (anthropic.claude-sonnet-4-5-20250929-v1:0) image

image

🎯 What Does It Do?

This app helps IT administrators create and manage Microsoft Edge favorites that can be deployed to users across an organization. It generates properly formatted configuration files for:

  • Windows devices (via Group Policy or Intune) — device-wide
  • macOS devices (via Intune) — device-wide
  • A specific audience, any platform (via the Edge management service's Cloud Policy) — per-profile, assignable to an Entra ID group, works on Windows/macOS/iOS/Android from one policy

The first two channels write into the OS-level Managed Preferences domain, so every browser profile on the device gets the same favorites. The Cloud Policy channel is resolved per the identity signed into the Edge profile instead, so it's the one to reach for when only part of your organization should get a given set of favorites. See Deployment Scenarios below.

Instead of manually creating complex JSON or Plist files, you use a simple, intuitive interface to:

  1. Add favorites (name + URL)
  2. Generate configuration files automatically
  3. Copy or export them for deployment

✨ Key Features

  • 🎨 Native macOS Design - Modern, fluid interface with animations
  • ⌨️ Keyboard Shortcuts - Fast workflow (⌘N to add, ⌘S to export, ⌘⇧C to copy)
  • 💾 Persistent Storage - Your favorites are saved automatically
  • 📋 Multiple Formats - Generates JSON (Windows GPO/Settings Catalog, Cloud Policy) and Plist (macOS Intune), switchable via tabs in the output panel
  • 🎯 Target Groups - Maintain extra favorites for a specific audience (e.g. an Entra group) alongside the base set, either merged in as a subfolder or replacing the base set for that audience — exported as its own ready-to-paste Cloud Policy value
  • 🗂️ Profiles - Keep several fully independent environments (e.g. "OnPrem", "HomeOffice") in one app, each with its own favorites, target groups, and toplevel name — switch via the sidebar
  • 🚀 Export Ready - One-click export or copy to clipboard
  • ⚙️ Configurable - Customize each profile's toplevel name

📋 Requirements

  • macOS 15.0 (Sequoia) or later
  • Xcode 16 or later (for building from source)

🚀 Quick Start

Option 1: Download Pre-built Release

  1. Download the latest release from GitHub Releases
  2. Unzip ManagedFavsGenerator-vX.X.X.zip
  3. Move ManagedFavsGenerator.app to your Applications folder
  4. Launch the app

Option 2: Build from Source

# Clone the repository
git clone <repository-url>
cd ManagedFavsGenerator

# Build
swift build -c release

# Run
.build/release/ManagedFavsGenerator

Or open Package.swift in Xcode and press ⌘R.


🔒 macOS Gatekeeper (First Launch)

Since this app is not notarized by Apple, macOS Gatekeeper will block it on first launch. You need to allow it manually.

Method 1: Terminal (Quick)

Remove the quarantine attribute to bypass Gatekeeper:

# Navigate to where you saved the app
cd ~/Downloads

# Remove quarantine flag
xattr -cr ManagedFavsGenerator.app

# Now open normally
open ManagedFavsGenerator.app

Explanation:

  • xattr = Extended attributes tool
  • -c = Clear all attributes
  • -r = Recursive (for app bundles)

Method 2: GUI (System Settings)

  1. Try to open ManagedFavsGenerator.app
  2. macOS shows: "ManagedFavsGenerator.app can't be opened because it is from an unidentified developer"
  3. Click OK
  4. Open System SettingsPrivacy & Security
  5. Scroll down to Security section
  6. Click Open Anyway next to the blocked app message
  7. Click Open in the confirmation dialog
  8. App will launch successfully

Screenshot:

System Settings → Privacy & Security
┌─────────────────────────────────────────┐
│ Security                                │
│ "ManagedFavsGenerator.app" was blocked │
│ [Open Anyway]                           │
└─────────────────────────────────────────┘

Method 3: Right-Click (Alternative)

  1. Right-click (or Control-click) on ManagedFavsGenerator.app
  2. Select Open from context menu
  3. macOS shows modified dialog with Open button
  4. Click Open
  5. App will launch and be remembered for future launches

✅ Verification (Optional)

Verify the download integrity using checksums:

# Download checksums
curl -L -O https://github.com/dernerl/ManagedFavsGenerator/releases/download/vX.X.X/checksums.txt

# Verify ZIP file
shasum -a 256 ManagedFavsGenerator-vX.X.X.zip
cat checksums.txt

# Both SHA-256 hashes should match

📖 How To Use

The screenshots below predate the profile sidebar and tabbed layout introduced after v1.1.0 — button locations described in the text are current, refreshed screenshots are pending.

1. Profiles

The left-hand rail lists your profiles — fully independent environments (e.g. "OnPrem", "HomeOffice"), each with its own favorites, target groups, and toplevel name. Nothing is shared between them.

  • Click a profile's avatar to switch to it
  • Click + at the bottom of the rail to create a new one
  • Right-click a profile to Rename or Delete it (a profile's favorites and target groups are deleted with it; you always keep at least one)

2. Add Favorites

image

With the Favorites tab selected in the left pane, press ⌘N or click Add Favorite:

  • Name: Display name (e.g., "Company Portal")
  • URL: Full URL including https://

Add Folders

image

Press ⌘⇧N or click Add Folder to organize favorites hierarchically (one level deep). image

3. Move position by Drag and Drop

image

4. Import Existing Configuration

Import existing configurations from other sources or backups — into the currently active profile:

JSON Import (Copy/Paste) - ⌘I

image
  • Click Import JSON in the toolbar or press ⌘I
  • Dialog opens with text editor
  • Paste your JSON configuration
  • Click Import
  • Perfect for quick imports, testing, or snippets

Plist Import (File Selection) - ⌘⇧I

image
  • Click Import Plist in the toolbar or press ⌘⇧I
  • Select .plist file from your system
  • Supports full Plist files and Intune fragments
  • Automatically handles files without XML headers

5. Generate Outputs

The right pane always shows one output at a time — pick it with the tab strip at the top: JSON, Plist, Cloud Policy, and one tab per non-empty Target Group. The description and action buttons next to the tabs update for whichever is selected.

JSON (for Windows/GPO)

  • Used for on-premises Group Policy
  • Used for Intune Settings Catalog (Windows)
  • Click Copy or press ⌘⇧C

Plist (for macOS/Intune)

  • Used for Intune Device Configuration Profiles
  • Click Export or press ⌘S to save as a file
  • Or click Copy

Cloud Policy (for the Edge management service)

  • Same JSON schema as the GPO/Settings Catalog output — paste it as the ManagedFavorites value of a Cloud configuration policy in the Microsoft 365 Admin Center
  • Resolved per signed-in Edge profile and assignable to an Entra ID group, so it reaches only the intended audience instead of the whole device
  • Click Copy or press ⌘⇧C

6. Target Groups (optional)

If part of your organization needs extra favorites that the rest shouldn't get, switch to the Target Groups tab in the left pane and click Add Group instead of maintaining a second document:

  • Merge into base set: the base favorites stay, the group is appended as its own subfolder — assign as an additive, lower-priority Cloud policy
  • Replace base set: the group becomes its own toplevel folder, replacing the base set for that audience — assign as the highest-priority Cloud policy for that Entra group, since ManagedFavorites does not merge across policies (the highest-priority policy wins completely)

Each non-empty Target Group gets its own tab in the output panel, generated the same way as the base set.

7. Configure Toplevel Name

image

The toplevel name (default: managedFavs) is the root key in your configuration — and belongs to the active profile. Change it in Settings (⌘,); switch profiles first if you meant to edit a different one's.

8. Deploy to Your Organization

See deployment guides below for Windows GPO, Intune Windows, Intune macOS, or the Edge management service's Cloud Policy.

9. Choose Favicon Provider

image

Favicons load automatically when URL is entered. Display favicons next to favorite entries to make them visually recognizable.

🏢 Deployment Scenarios

Windows - Group Policy (On-Premises)

For organizations using Active Directory and Group Policy:

  1. Copy the JSON output from the app
  2. Open Group Policy Management Console
  3. Navigate to: Computer Configuration → Administrative Templates → Microsoft Edge → Favorites
  4. Enable "Configure favorites" policy
  5. Paste the JSON configuration
  6. Link the GPO to the appropriate Organizational Unit (OU)
  7. Run gpupdate /force on client machines

Documentation:


Windows - Intune Settings Catalog

For cloud-managed Windows devices: image

  1. Copy the JSON output from the app
  2. In Microsoft Intune admin center: Devices → Configuration profiles
  3. Create profile:
    • Platform: Windows 10 and later
    • Profile type: Settings catalog
  4. Add settings: Search for "Microsoft Edge""Favorites"
  5. Enable "Configure favorites" and paste JSON
  6. Assign to device groups
  7. Devices will sync and apply the policy

Documentation:


Any Platform - Edge management service (Cloud Policy)

For targeting a specific audience instead of a whole device — Windows, macOS, iOS, and Android in one policy:

  1. Copy the Cloud Policy (JSON) output from the app
  2. In the Microsoft 365 Admin Center: Settings → Microsoft Edge
  3. Create a configuration policy:
    • Type: Cloud (not the Intune type — that one is Windows-only)
    • Setting: Managed favorites → paste the JSON as the ManagedFavorites value
  4. Assign the policy to an Entra ID group (e.g. a dynamic group for a naming pattern, or a static group for a team)
  5. Set policy priority — if you're also assigning a base-set policy to a broader group, put the more specific policy at higher priority (ManagedFavorites does not merge across policies; the highest-priority assigned policy wins completely for a given profile)
  6. Fully quit and restart Edge on the client (⌘Q, not just closing the window) — cloud policies also refresh automatically roughly every 90 minutes

Why this instead of GPO/Intune for a partial rollout: GPO and the Intune "Preference file" profile both land in the OS-level Managed Preferences domain, which every browser profile on the device reads identically — there's no way to target "just this profile" through either channel, regardless of how the config file itself was produced. The Edge management service's Cloud policy type is resolved through the Entra identity signed into the profile instead, which is what makes per-audience targeting possible without replacing the policy for every other user of that device.

Precedence gotcha: if the same device also receives ManagedFavorites from a GPO or an Intune device profile, that value wins over the Cloud policy — check edge://policy on the client to see which source is actually active before assuming the Cloud policy isn't working.

Documentation:


macOS - Intune Preference File

For cloud-managed macOS devices:

  1. Export the Plist from the app (⌘S)
  2. In Microsoft Intune admin center: Devices → Configuration profiles
  3. Create profile:
    • Platform: macOS
    • Profile type: Templates → Preference file
  4. Upload the .plist file
  5. Set preference domain: com.microsoft.Edge
  6. Assign to device groups
  7. Devices will sync and apply the configuration

Documentation:


📝 Configuration Format Examples

JSON (Windows)

{
  "managedFavs": [
    {
      "toplevel_name": "Company",
      "name": "Intranet",
      "url": "https://intranet.company.com"
    },
    {
      "toplevel_name": "Company",
      "name": "Support Portal",
      "url": "https://support.company.com"
    }
  ]
}

Plist (macOS)

The app generates a complete macOS Configuration Profile with:

  • ManagedFavorites array containing your favorites
  • Proper payload structure for Intune deployment
  • Unique UUIDs for identification

🔧 Troubleshooting

Favorites Don't Appear in Edge

Windows (GPO):

  • Run gpupdate /force to apply policies immediately
  • Check policy status: gpresult /r
  • Verify Edge is managed: edge://policy

Windows (Intune):

  • Wait for device sync (can take up to 8 hours, or force sync)
  • Check policy status in Intune portal
  • Verify Edge is up to date

macOS (Intune):

  • Force device sync from Company Portal
  • Check profile installation: System Settings → Profiles
  • Verify Edge is installed and up to date

Cloud Policy (Edge management service):

  • Check edge://policy on the client — it shows both the effective value and its source (Cloud vs. Platform)
  • If the source shown is Platform, a GPO or Intune device profile is winning; that always takes precedence over a Cloud policy
  • Confirm the signed-in profile's account is actually a member of the assigned Entra ID group
  • Fully quit Edge (⌘Q) and reopen — cloud policies apply on restart, not live

Invalid Configuration Errors

  • ✅ Ensure all URLs start with https:// or http://
  • ✅ Check for special characters in names
  • ✅ Verify JSON/Plist is properly formatted (app does this automatically)
  • ✅ Ensure toplevel name doesn't contain spaces or special characters

App Issues

  • Favorites not saved: Check file permissions in ~/Library/Application Support/
  • Export fails: Verify write permissions for target directory
  • App won't start: Ensure macOS 15+ and try rebuilding

🔍 Debugging & Verification

Verify Favicon Provider

You can verify which favicon provider (Google or DuckDuckGo) the app is using in real-time:

# Live stream of favicon loading logs
log stream --predicate 'subsystem == "ManagedFavsGenerator" AND category == "Favicons"' --level info --style compact

Example output:

Loading favicon for 'github.com' using Google provider: https://www.google.com/s2/favicons?domain=github.com&sz=32
Loading favicon for 'microsoft.com' using DuckDuckGo provider: https://icons.duckduckgo.com/ip3/microsoft.com.ico

To change the provider:

  1. Open Settings (⌘,)
  2. Navigate to Appearance section
  3. Select your preferred Favicon Provider:
    • Google: More reliable, comprehensive coverage
    • DuckDuckGo: Privacy-focused, no tracking

Changes take effect immediately without restart.

🛠️ Technical Details

For developers and technical documentation, see AGENTS.md - Development guidelines, architecture, and best practices.

📚 Additional Resources

Microsoft Edge Management

Microsoft Intune

Group Policy

🤝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

💬 Support

  • App Issues: Open an issue in this repository
  • Edge Policy Questions: Check Microsoft Edge documentation
  • Intune/GPO Questions: Consult Microsoft documentation or your IT team

Made with ❤️ for IT Administrators

About

Native macOS app to generate Microsoft Edge Managed Favorites configuration files for Enterprise deployment (JSON for Windows/GPO and Plist for macOS/Intune)

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages