Admin operations can authenticate with Touch ID, through an opt-in signed helper that runs a fixed set of operations and nothing else.
- Touch ID for admin operations. Install the helper in Settings ▸ Advanced ▸ Privileged helper and Burrow's elevated work authenticates through the system's normal prompt instead of the password-only dialog. That older path is password-only by construction — the
system.privilege.adminright authenticates through SecurityAgent's classic mechanism, which never offers Touch ID. (#346) - The Login Items list is now complete. Reading the Background Task Management database needs root, so an unelevated read raised macOS's own “sfltool wants to make changes” prompt — attributed to sfltool rather than Burrow — and still returned only a partial list. Through the helper it is one authentication you recognise, and the whole list.
- Flush DNS no longer runs a root shell. It previously elevated
/bin/sh -c "dscacheutil -flushcache; killall -HUP mDNSResponder", handing a command string to a shell running as root. It is now two separate processes with fixed arguments and no shell involved. - Removed the “Touch ID for sudo” setting. It configured
pam_tidfor terminalsudoand never affected Burrow's own admin prompts, which is what people expected it to do — and those prompts are exactly what the privileged helper now covers. Nothing already configured on your Mac changes by removing it; runmo touchid disableto undo it yourself.
- A failed elevated run could report success. When an elevated operation could not start, the empty transcript was reduced to “Done — caches cleared”. Failures now say so.
- The helper is opt-in and takes its own one-time macOS approval. Installing it authorizes nothing: you authenticate for each operation you start.
- Only Burrow can talk to it — callers are pinned to the app's bundle identifier, an Apple-issued chain, and the same signing team, evaluated by the system against the real peer rather than by a PID lookup.
- It runs the engine sealed inside the signed app plus four Apple tools by absolute path, each as a separate process. The app bundle's signature is verified before anything runs as root, which covers the engine and every library it loads.
- One honest caveat: the credential from your authentication stays valid for ten seconds, because it has to survive the hop from the app to the helper. A second operation begun inside that window will not prompt again. Detail in SECURITY.md.