I have a plist in /Library/LaunchDaemons/ that should run as root on startup.

When I run sudo launchctl load /Library/LaunchDaemons/com.apple.pfctl.plist, it works. However on reboot it does not work.

Interestingly, after reboot, when I run that command it says /Library/LaunchDaemons/com.apple.pfctl.plist: service already loaded but it is not functioning. However, if I unload and load it works normally.

Nothing appears in my error reporting /tmp/pfctl.err.

My plist is here:

<?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">
  • Can you post the boot messages specific to pfctl by issuing the command dmesg | grep -i pfctl We need to see what errors are being generated, if any.
    – Allan
    Oct 29, 2016 at 12:05
  • Try changing <string>pfctl</string> to <string>/sbin/pfctl</string> or add <key>Program</key> and <string>/sbin/pfctl</string> before ProgramArguements.
    – fd0
    Oct 29, 2016 at 12:19
  • for the record dmesg | grep -i pfctl didn't show any output
    – jakethedog
    Oct 29, 2016 at 13:13

1 Answer 1


The problem was that there is a default plist for pfctl at /System/Library/LaunchDaemons/com.apple.pfctl.plist. They were conflict.

In that plist I set <key>Disabled</key> to <true/>, and everything works as expected.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .