Site banner Colonel's Pensieve

Blocking AirPlay Audio Output on macOS

Raw MD

macOS has no switch for “never send my audio to AirPlay speakers”. The AirPlay Receiver toggle in System Settings is the opposite direction: it controls whether this Mac accepts AirPlay. To stop the Mac from picking a HomePod or Apple TV as its output, one option is a configuration profile that restricts AirPlay destinations.

The profile

Apple’s com.apple.airplay payload supports an AllowList of AirPlay device IDs. Only listed devices may be used as destinations. The trick is to allow a single dummy ID that matches nothing. An empty list might be read as “no restriction”, so a dummy entry is safer.

Save as block-airplay-output.mobileconfig, generating fresh UUIDs with uuidgen:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>PayloadType</key>
			<string>com.apple.airplay</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>PayloadIdentifier</key>
			<string>local.example.block-airplay.airplay</string>
			<key>PayloadUUID</key>
			<string>REPLACE-WITH-UUID-1</string>
			<key>PayloadDisplayName</key>
			<string>AirPlay Allow List</string>
			<key>AllowList</key>
			<array>
				<dict>
					<key>DeviceID</key>
					<string>00:00:00:00:00:00</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
	<key>PayloadIdentifier</key>
	<string>local.example.block-airplay</string>
	<key>PayloadUUID</key>
	<string>REPLACE-WITH-UUID-2</string>
	<key>PayloadDisplayName</key>
	<string>Block AirPlay Output</string>
	<key>PayloadScope</key>
	<string>System</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
</dict>
</plist>

Install

plutil -lint block-airplay-output.mobileconfig
open block-airplay-output.mobileconfig

Since Big Sur, profiles install no longer works for this; open only queues the profile. Finish in System Settings -> General -> Device Management (or Privacy & Security -> Profiles): double-click Block AirPlay Output, click Install, and authenticate.

Verify

  • Control Center -> Sound: AirPlay speakers should no longer be listed.
  • System Settings -> Sound -> Output: same check.
  • The AirPlay picker in Music.
profiles list

Caveat

Apple documents the AirPlay allow list for managed devices (MDM). On a personal, unmanaged Mac the profile may install but be ignored. If the speakers still appear, the fallback is to force the output back with switchaudio-osx from a launchd agent:

brew install switchaudio-osx
SwitchAudioSource -c                          # current output
SwitchAudioSource -s "MacBook Pro Speakers"   # switch back

Undo

System Settings -> General -> Device Management, select the profile, click −.

← Back to home