+++
title = "Blocking AirPlay Audio Output on macOS"
date = 2026-10-06T00:00:00Z
author = "colosieve"
tags = ["macos", "airplay", "mobileconfig"]
draft = false
+++

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
<?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

```bash
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.

```bash
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`](https://github.com/deweller/switchaudio-osx) from a launchd
agent:

```bash
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 **−**.
