Need help with run screen record like root user

Hi,

On macOS Sonoma and earlier versions, I used my script along with a LaunchDaemon to continuously record my screen.

However, after upgrading to macOS Sequoia, the LaunchDaemon no longer works for screen recording. It only works when I use a LaunchAgent.

For my workflow, using a LaunchDaemon and running the ffmpeg process as root is much more efficient than running it as a regular user. Does anyone know how to run a script in the background using a LaunchDaemon on macOS Sequoia?

Here are my LaunchDaemon plist and script: LaunchDaemon 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">
<?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>Label</key>         <string>local.ScreenRecord</string>
  <key>Disabled</key>      <false/>
  <key>RunAtLoad</key>     <true/>
  <key>KeepAlive</key>     <true/>
  <key>Nice</key>
  <integer>-20</integer>
  <key>ProgramArguments</key>
    <array>
      <string>/bin/bash</string>
      <string>/usr/local/distrib/record.bash</string>
    </array>
</dict>
</plist>

Script

## !!! START CONFIGURATION !!!
#
FFMPEG_LOC="/usr/local/distrib/ffmpeg"
FFMPEG_INPUT="-hide_banner -f avfoundation -capture_cursor 1 -pixel_format uyvy422"
FFMPEG_VSET="-codec libx264 -r 22 -crf 26 -preset veryfast -b:v 5M -maxrate 7M -bufsize 14M"
TIME_REC="-t 600"
FOLDER_REC="/usr/local/distrib/REC/"
#
## !!! END CONFIGURATION !!!
#
# Find number id monitor
MON_ID=$($FFMPEG_LOC -hide_banner -f avfoundation -list_devices true -i "" 2>&1 | awk -F'[]|[]' '/Capture\ screen/ {print $4}')
#
if [ -n "$MON_ID" ]
    then
        # Time for name
        DATE_REC=$(date +"%m-%d-%Y_%H-%M-%S")
        # Number of output video file
        OUTPUT_NUM=0
        # Full command to record
        FFMPEG_FULL_COMMAND=""
        for MON_NUM in $MON_ID
        do
            FFMPEG_FULL_COMMAND=""$FFMPEG_FULL_COMMAND" "$FFMPEG_INPUT" -i "$MON_NUM" "$FFMPEG_VSET" "$TIME_REC" -map "$OUTPUT_NUM" "$FOLDER_REC""$DATE_REC"_Mon"$MON_NUM".mkv"
            let OUTPUT_NUM=$OUTPUT_NUM+1
        done
            $FFMPEG_LOC $FFMPEG_FULL_COMMAND
    else
        echo "No monitors"
        sleep 5
fi
Need help with run screen record like root user
 
 
Q