Manage System Settings Panels on macOS
Control which System Settings panels users can access on macOS Ventura and later versions. This tutorial shows how to disable or hide specific preference panes to maintain security and prevent unwanted configuration changes across your MacFleet.
Understanding System Settings vs System Preferences
macOS Ventura (13.0+) replaced "System Preferences" with "System Settings". The management approach differs between versions:
- macOS 13.0+: Use
DisabledSystemSettings
and bundle identifiers ending in.extension
- macOS 12.x and earlier: Use
DisabledPreferencePanes
with different bundle identifiers
Disable System Settings Panels
Basic Disable Script
#!/bin/bash
# Disable specific System Settings panel
defaults write "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings -array "com.apple.Battery-Settings.extension"
echo "System Settings panel disabled successfully"
Disable Multiple Panels
#!/bin/bash
# Disable multiple System Settings panels
defaults write "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings -array \
"com.apple.BluetoothSettings" \
"com.apple.Network-Settings.extension" \
"com.apple.Battery-Settings.extension"
echo "Multiple System Settings panels disabled"
System Settings Bundle Identifiers
Panel Name | Bundle Identifier |
---|---|
Accessibility | com.apple.Accessibility-Settings.extension |
AirDrop & Handoff | com.apple.AirDrop-Handoff-Settings.extension |
Apple ID | com.apple.systempreferences.AppleIDSettings |
Battery | com.apple.Battery-Settings.extension |
Bluetooth | com.apple.BluetoothSettings |
Control Center | com.apple.ControlCenter-Settings.extension |
Date & Time | com.apple.Date-Time-Settings.extension |
Desktop & Dock | com.apple.Desktop-Settings.extension |
Displays | com.apple.Displays-Settings.extension |
Extensions | com.apple.ExtensionsPreferences |
Focus | com.apple.Focus-Settings.extension |
Game Center | com.apple.Game-Center-Settings.extension |
Internet Accounts | com.apple.Internet-Accounts-Settings.extension |
Keyboard | com.apple.Keyboard-Settings.extension |
Language & Region | com.apple.Localization-Settings.extension |
Lock Screen | com.apple.Lock-Screen-Settings.extension |
Login Items | com.apple.LoginItems-Settings.extension |
Network | com.apple.Network-Settings.extension |
Notifications | com.apple.Notifications-Settings.extension |
Passwords | com.apple.Passwords-Settings.extension |
Printers & Scanners | com.apple.Print-Scan-Settings.extension |
Screen Time | com.apple.Screen-Time-Settings.extension |
Screen Saver | com.apple.ScreenSaver-Settings.extension |
Sharing | com.apple.Sharing-Settings.extension |
Siri & Spotlight | com.apple.Siri-Settings.extension |
Software Update | com.apple.Software-Update-Settings.extension |
Sound | com.apple.Sound-Settings.extension |
Startup Disk | com.apple.Startup-Disk-Settings.extension |
Storage | com.apple.settings.Storage |
Time Machine | com.apple.Time-Machine-Settings.extension |
Touch ID & Password | com.apple.Touch-ID-Settings.extension |
Trackpad | com.apple.Trackpad-Settings.extension |
Transfer or Reset | com.apple.Transfer-Reset-Settings.extension |
Users & Groups | com.apple.Users-Groups-Settings.extension |
Wallet & Apple Pay | com.apple.WalletSettingsExtension |
Wallpaper | com.apple.Wallpaper-Settings.extension |
Wi-Fi | com.apple.wifi-settings-extension |
Open System Settings Panels Remotely
Open Specific Panel
#!/bin/bash
# Open Network settings panel
open "x-apple.systempreferences:com.apple.Network-Settings.extension"
echo "Network settings panel opened"
Conditional Panel Opening
#!/bin/bash
PANEL_ID="com.apple.Battery-Settings.extension"
# Check if panel is not disabled before opening
if ! defaults read "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings 2>/dev/null | grep -q "$PANEL_ID"; then
open "x-apple.systempreferences:$PANEL_ID"
echo "Battery settings panel opened"
else
echo "Battery settings panel is disabled"
fi
Re-enable Disabled Panels
Re-enable All Panels
#!/bin/bash
# Remove all disabled System Settings restrictions
defaults delete "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings
echo "All System Settings panels re-enabled"
Re-enable Specific Panels
#!/bin/bash
# Get current disabled panels
CURRENT_DISABLED=$(defaults read "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings 2>/dev/null)
# Remove specific panel from disabled list (requires custom logic)
# This example shows the concept - implement based on your needs
defaults write "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings -array \
"com.apple.BluetoothSettings"
# Add other panels you want to keep disabled
echo "Specific System Settings panels re-enabled"
Enterprise Management Script
#!/bin/bash
# Enterprise System Settings Management
# Restricts access to sensitive configuration panels
RESTRICTED_PANELS=(
"com.apple.Network-Settings.extension"
"com.apple.BluetoothSettings"
"com.apple.Security-Privacy-Settings.extension"
"com.apple.Software-Update-Settings.extension"
"com.apple.Users-Groups-Settings.extension"
)
# Apply restrictions
defaults write "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings -array "${RESTRICTED_PANELS[@]}"
# Verify restrictions
echo "Disabled System Settings panels:"
defaults read "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings 2>/dev/null || echo "No panels currently disabled"
# Log the action
logger "MacFleet: System Settings panels restricted on $(date)"
Troubleshooting
Check Current Restrictions
# View currently disabled panels
defaults read "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings
# Check if specific panel is disabled
if defaults read "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings 2>/dev/null | grep -q "com.apple.Battery-Settings.extension"; then
echo "Battery panel is disabled"
else
echo "Battery panel is accessible"
fi
Clear All Restrictions
# Emergency reset - re-enable all panels
sudo defaults delete "/Library/Preferences/com.apple.systempreferences" DisabledSystemSettings
sudo killall cfprefsd
Common Use Cases
Scenario | Recommended Panels to Disable |
---|---|
Shared Workstations | Users & Groups, Software Update, Network |
BYOD Devices | Apple ID, Transfer or Reset, Users & Groups |
Kiosk Mode | All except essential panels for operation |
Educational Labs | Network, Software Update, Touch ID & Password |
Corporate Security | Software Update, Transfer or Reset, Sharing |
Important Notes
- macOS Compatibility: These scripts work only on macOS 13.0 (Ventura) and later
- User Experience: Disabled panels appear grayed out but remain visible
- System Restart: Changes take effect immediately without restart
- Persistence: Settings persist across user sessions and system reboots
For devices running macOS 12.x and earlier, use the legacy System Preferences management approach with different bundle identifiers.