My launch daemon (and the launch agent) are installed system-wide on macOS. I use the following plist file (say, for the daemon) that is placed into the following file /Library/LaunchDaemons/com.example.MyDaemon.plist:
<?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>MachServices</key>
<dict>
<key>com.example.MyDaemon.launch.agent</key>
<true/>
</dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.example.MyDaemon</string>
<key>Program</key>
<string>/Library/PrivilegedHelperTools/com.example/MyDaemon</string>
<key>ProgramArguments</key>
<array>
<string>-d</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
When the plist above is installed, or when the user re-logs-in, the macOS shows this not-very-friendly popup:
And then if I go to Settings -> General -> Login Items, it is shown there as well:
I understand that this is shown for security reason. But I'm curious:
- Can I provide the name of my app that is shown? For now, I'm not even sure where the name is coming from. For instance, now the popup shows:
"MyDaemon" is an item that can run in the background. You can manage this in Login Items Settings
Can I change "MyDaemon" to some better description in that popup?
- The small text in the Login Items says:
Item from unidentified developer.
I noticed that other items don't have this message. What am I doing wrong?
- I also noticed that other items in the Login Items list don't invoke a popup, like my item. For instance, there's also Zoom which doesn't show that popup. What am I doing differently to have my item show that popup?


1. Name (and icon) of the launch item
The usual way to get this is to use the Service Management APIs to install the daemon, so
SMAppServiceorSMJobBless, depending on OS version. Then it inherits the icon and name from the app in which it's embedded.You may also be able to achieve something similar by giving your daemon binary an Info.plist, for example by embedding it in the
__info_plist__TEXTsection of the binary or by placing it inside a bundle or turning it into an app bundle. Then set theCFBundleDisplayName,CFBundleName, or other likely-sounding keys and see if that changes the way it's displayed.Here's some info on the embedded Info.plist, and here's info on how to compose an Info.plist file.
2. "Unidentified developer
The "unidentified developer" part is due to lack of (valid) codesigning. If your daemon binary is correctly signed with a Developer ID certificate and notarised (or distributed via the app store), either your app name (see above) or your developer account name will show up instead.
3. Popup
Zoom installs its helper via the System Management APIs, which require explicit authorisation when calling the API, perhaps it doesn't require double opt-in in that case?