| Version | Supported |
|---|---|
| 2.3.x | ✅ Yes |
| < 2.3 | ❌ Please update |
Only the latest release receives fixes. Updates are announced in the app and published on the Releases page.
Please do not open a public issue for a security problem.
Use GitHub's private reporting instead: Report a vulnerability
If that is unavailable, open a normal issue asking to be contacted privately — without any details of the problem — and a private channel will be arranged.
Unduck Pro is maintained by one person in their spare time, so please expect a first reply within about 7 days, and a fix or a clear explanation of why something will not be fixed within 30 days for confirmed issues. Credit will be given in the release notes unless you prefer otherwise.
Unduck Pro is a menu-bar utility that controls audio volume. This section documents its actual access, because "a volume app that asks for the microphone" deserves an explanation.
The app requests microphone permission on first launch. This is required by
Apple, not chosen by us: the Core Audio process-tap API (AudioHardwareCreateProcessTap,
macOS 14.2+) is gated behind the audio-input permission even when an app only
reads and re-emits output audio. There is no narrower permission available.
The app never records, stores, buffers to disk, or transmits any audio. Captured audio exists only inside a real-time render callback, where it is scaled by your chosen volume and written straight back out to your speakers.
The only entitlement requested is com.apple.security.device.audio-input
(see script/DuckAudio.entitlements).
The app makes exactly one kind of network request: an unauthenticated GET to
https://api.github.com/repos/MrRockySL/Unduck-Pro/releases/latest to check
whether a newer version exists. It sends no identifying information, and there
is no analytics, telemetry, crash reporting, or third-party SDK of any kind.
Per-app volume levels and favourites, in UserDefaults under
dev.mrrockysl.duckaudio. Mute states are held in memory only and are not
saved. Nothing leaves your Mac.
While running, the app also writes a plain-text diagnostic log to
/tmp/duckaudio.log, rewritten from scratch on every launch. It records which
processes are producing audio — bundle identifiers and process IDs, for example
com.google.Chrome.helper — so that audio-routing problems can be diagnosed. It
contains no audio and no personal content, and it is never uploaded
anywhere. Delete it any time.
None. The app uses only Apple system frameworks — no third-party packages, no kernel extensions, no virtual audio drivers.
Because the app is distributed as a self-signed DMG, verifying it is reasonable and encouraged.
Check the download against the SHA-256 published in the release notes:
shasum -a 256 ~/Downloads/Unduck-Pro-2.3.dmgOr build it yourself — it takes two commands and no configuration:
git clone https://github.com/MrRockySL/Unduck-Pro.git
cd Unduck-Pro
./script/make_cert.sh # one-time: creates a local signing certificate
./script/build_app.sh- The app is self-signed, not notarized by Apple. Apple notarization requires a paid Developer Program membership; this app is free, so releases are signed with a self-signed certificate. macOS will therefore warn on first launch and require an explicit approval in System Settings → Privacy & Security → Open Anyway. Anyone uncomfortable with that should build from source instead.
- Releases are built and uploaded manually, not by a reproducible CI pipeline. Verify the checksum or build from source if that matters to you.