A macOS shell-based policy manager for turning Brave Browser into a leaner, quieter, privacy-focused browser by disabling Brave AI, Rewards, Wallet, VPN, News, Talk, telemetry, usage ping, Web Discovery, the built-in password manager, autofill, and selected Chromium background/reporting features.
This project is an unofficial macOS companion inspired by TahaHydra/Brave-Free-Origin, which provides a Windows GUI implementation using PowerShell and Windows Registry policies.
This repository is not a forked Windows GUI port. It supports two macOS approaches:
- Temporary local managed preferences via:
/Library/Managed Preferences/com.brave.Browser.plist
- Persistent configuration profiles via a generated:
brave-policy.mobileconfig
You can verify applied policies in Brave:
brave://policy
Brave is more privacy-focused than Chrome by default, but it still includes many built-in features that some users may not want:
- Brave Leo / AI Chat
- Brave Rewards / BAT
- Brave Wallet
- Brave VPN
- Brave News
- Brave Talk
- Usage ping
- P3A product analytics
- Web Discovery
- Built-in password manager
- Autofill
- Chromium reporting and background services
This script applies Brave and Chromium enterprise policies locally on macOS to reduce those features in a repeatable, auditable, and reversible way.
The default mode applies a full recommended policy set.
It disables or restricts:
- Brave Leo / AI Chat
- Brave Rewards
- Brave Wallet
- Brave VPN
- Brave News
- Brave Talk
- Brave Tor window
- Brave P3A
- Brave stats / usage ping
- Brave Web Discovery
- Chromium metrics reporting
- URL keyed anonymized data collection
- Brave built-in password manager
- password leak detection
- address autofill
- credit-card autofill
- payment method queries
- search suggestions
- cloud spellcheck
- alternate error pages
- built-in translation
- Safe Browsing extended reporting
- Safe Browsing deep scanning
- Safe Browsing surveys
- Browser Labs
- Live Caption
- automatic image labels
- new tab custom background
- Chrome / Chromium GenAI features
- Chrome Variations / field trials
It enables or enforces:
- Brave adblock
- fingerprinting protection
- referrer protection
- tracking query parameter filtering
- De-AMP
- redirect debouncing
- Global Privacy Control
- reduced language fingerprinting
- Safe Browsing Standard protection
- high efficiency / memory saver
- hardware acceleration
- automatic DNS-over-HTTPS mode
- QUIC
Clone the repository:
git clone https://github.com/Johnny-Kao/brave-free-origin-macos.git
cd brave-free-origin-macosMake the script executable:
chmod +x brave-macos-policy.shApply the default policy set:
./brave-macos-policy.shOr explicitly:
./brave-macos-policy.sh --defaultThen open Brave and go to:
brave://policy
Click:
Reload policies
This mode is useful for testing, but on some macOS setups the manually written managed plist may not survive a reboot.
Generate a configuration profile:
./brave-macos-policy.sh --mobileconfigOr write to a custom path:
./brave-macos-policy.sh --mobileconfig --output ./brave-policy.mobileconfigThis creates a persistent macOS profile that can survive reboot.
- Generate the profile:
./brave-macos-policy.sh --mobileconfig- Open the generated file:
open ./brave-policy.mobileconfig- In macOS, go to:
System Settings > General > Device Management
- Select the downloaded profile and click:
Install
- Reopen Brave and visit:
brave://policy
- Click:
Reload policies
- Reboot macOS and verify the policies are still present.
Applies the full recommended policy set.
./brave-macos-policy.shEquivalent:
./brave-macos-policy.sh --defaultThis is the recommended mode if you want a clean Brave setup with Brave commercial features, telemetry, usage ping, Web Discovery, password manager, autofill, and selected Chromium reporting features disabled.
Lets you choose which policy groups to apply.
./brave-macos-policy.sh --interactiveYou can select multiple groups by entering numbers separated by spaces:
1 2 3 6
Or apply all groups:
all
Use this mode if you want to keep specific features such as translation or Brave autofill.
Removes all policy keys managed by this script.
./brave-macos-policy.sh --restoreThen open:
brave://policy
Click:
Reload policies
If policies still appear, restart Brave or run:
killall cfprefsd 2>/dev/null || truePreview actions without writing to the plist:
./brave-macos-policy.sh --interactive --dry-runGenerate a persistent profile instead of writing directly to:
/Library/Managed Preferences/com.brave.Browser.plist
Example:
./brave-macos-policy.sh --mobileconfigInteractive example:
./brave-macos-policy.sh --interactive --mobileconfig --output ./custom.mobileconfigUse this mode if plist mode works temporarily but disappears after reboot.
Apply policies without restarting Brave:
./brave-macos-policy.sh --default --no-restartDisables:
- Brave Leo / AI Chat
- Brave Rewards
- Brave Wallet
- Brave VPN
- Brave News
- Brave Talk
- Brave Tor window
Policies:
BraveAIChatEnabled = false
BraveRewardsDisabled = true
BraveWalletDisabled = true
BraveVPNDisabled = true
BraveNewsDisabled = true
BraveTalkDisabled = true
TorDisabled = true
Disables:
- Brave P3A product analytics
- Brave stats / usage ping
- Chromium metrics reporting
- Brave Web Discovery
- URL keyed anonymized data collection
- user feedback submission
- WebRTC event log collection
Policies:
BraveP3AEnabled = false
BraveStatsPingEnabled = false
MetricsReportingEnabled = false
BraveWebDiscoveryEnabled = false
UrlKeyedAnonymizedDataCollectionEnabled = false
UserFeedbackAllowed = false
WebRtcEventLogCollectionAllowed = false
Enables or enforces:
- Brave adblock
- fingerprinting protection
- referrer protection
- tracking query parameter filtering
- De-AMP
- redirect debouncing
- Global Privacy Control
- reduced language fingerprinting
Policies:
DefaultBraveAdblockSetting = 2
DefaultBraveFingerprintingV2Setting = 3
DefaultBraveReferrersSetting = 2
BraveTrackingQueryParametersFilteringEnabled = true
BraveDeAmpEnabled = true
BraveDebouncingEnabled = true
BraveGlobalPrivacyControlEnabled = true
BraveReduceLanguageEnabled = true
Disables Brave’s built-in:
- password manager
- password leak detection
- address autofill
- credit-card autofill
- payment method queries
- saved password import
- autofill form data import
- history import
Policies:
PasswordManagerEnabled = false
PasswordLeakDetectionEnabled = false
AutofillAddressEnabled = false
AutofillCreditCardEnabled = false
PaymentMethodQueryEnabled = false
ImportSavedPasswords = false
ImportAutofillFormData = false
ImportHistory = false
Recommended alternatives:
- iCloud Passwords / iCloud Keychain
- 1Password
- Bitwarden
- Proton Pass
Disables:
- search suggestions
- cloud spellcheck
- alternate error pages
- built-in translation
Policies:
SearchSuggestEnabled = false
SpellCheckServiceEnabled = false
AlternateErrorPagesEnabled = false
TranslateEnabled = false
If you want to keep translation, use interactive mode and skip group 5.
To remove only the translation policy later:
PLIST="/Library/Managed Preferences/com.brave.Browser.plist"
sudo /usr/libexec/PlistBuddy -c "Delete :TranslateEnabled" "$PLIST" 2>/dev/null || true
defaults delete com.brave.Browser TranslateEnabled 2>/dev/null || true
killall "Brave Browser" 2>/dev/null || true
killall cfprefsd 2>/dev/null || true
open -a "Brave Browser"Keeps Safe Browsing Standard protection, but disables extra reporting, scanning, and surveys.
Policies:
SafeBrowsingProtectionLevel = 1
SafeBrowsingExtendedReportingEnabled = false
SafeBrowsingDeepScanningEnabled = false
SafeBrowsingSurveysEnabled = false
This keeps basic malicious-site protection enabled while reducing additional reporting.
Policies:
DnsOverHttpsMode = automatic
NetworkPredictionOptions = 2
QuicAllowed = true
This keeps DNS-over-HTTPS in automatic mode.
It does not force Cloudflare, Quad9, Google DNS, or NextDNS.
Enables:
- high efficiency / memory saver
- hardware acceleration
- battery saver availability
Disables:
- Browser Labs
- Live Caption
- automatic image labels
- new tab custom background
- default browser prompt
Policies:
HighEfficiencyModeEnabled = true
BatterySaverModeAvailability = 2
HardwareAccelerationModeEnabled = true
DiskCacheSize = 262144000
BrowserLabsEnabled = false
LiveCaptionEnabled = false
AccessibilityImageLabelsEnabled = false
NTPCustomBackgroundEnabled = false
DefaultBrowserSettingEnabled = false
Disables:
- AI theme generation
- DevTools GenAI
- Help Me Write
- AI history search
Policies:
CreateThemesSettings = 2
DevToolsGenAiSettings = 2
HelpMeWriteSettings = 2
HistorySearchSettings = 2
Restricts Chrome Variations / field trials.
Policy:
ChromeVariations = 2
Some Brave settings are better adjusted manually because policy behavior can vary by Brave version or may affect compatibility.
Recommended:
brave://settings/privacy
→ WebRTC IP handling policy
→ Disable non-proxied UDP
If Google Meet, Microsoft Teams, Zoom Web, or other WebRTC apps break, loosen this setting.
Recommended if you do not rely on web push notifications:
brave://settings/privacy
→ Use Google services for push messaging
→ Off
Default mode disables translation.
If you want to keep translation, use interactive mode and skip group 5.
This script does not:
- modify
/etc/hosts - block Brave domains at the DNS level
- edit Brave profile files
- edit Brave Local State
- install or remove extensions
- disable Brave updates
- disable macOS system services
- modify firewall rules
- install launch agents or daemons
It only writes Brave / Chromium policy keys to macOS Managed Preferences.
Open Brave:
brave://policy
Click:
Reload policies
Expected result:
Status = OK
Source = Platform
Level = Mandatory
If you see Error, Ignored, or Deprecated, the policy may not be supported by your Brave version.
When local enterprise policies are applied, Brave may display:
Managed by your organization
This is expected.
It does not mean your Mac is controlled by a company. It only means Brave is reading locally applied enterprise policies.
This project was inspired by TahaHydra/Brave-Free-Origin.
Brave-Free-Origin is a Windows GUI tool that applies Brave enterprise policies through the Windows Registry.
This repository provides a separate macOS implementation using shell scripts and macOS Managed Preferences.
It does not reuse the Windows GUI, PowerShell implementation, registry logic, hosts-file handling, scheduled-task handling, or scriptlet manager from the original project.
Credit goes to the original project for the general idea of using Brave enterprise policies to create a local, free, debloated Brave setup.
This project is unofficial.
It is not affiliated with:
- Brave Software
- Apple
- TahaHydra/Brave-Free-Origin
Use at your own risk.
Enterprise policies can change browser behavior, disable features, or create compatibility issues with some websites and workflows.
Review the script before running it.
MIT
