Launch Agent not running Bash File
To store a shell script in a Caches folder is very uncommon!
If you use absolute paths in your script and the plist you don't have to add obscure paths to your PATH variable.


Clean up your .profile/.bash_profile file and remove the /Users/danny/Library/Caches: part!

Create a bin folder in your user folder and put in a script with the name imagecopy.sh. The content of the script is:

#!/bin/sh
cp /Users/danny/Library/Caches/latest.png /Users/danny/Documents/output/$(date "+%Y.%m.%d-%H.%M.%S").png


Create an appropriate output folder. In the example above I use ~/Documents/output.

Create the file /Users/danny/Library/LaunchAgents/com.user.imagecopier.plist with the content:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
    &lt;key&gt;Label&lt;/key&gt;
    &lt;string&gt;com.user.imagecopier&lt;/string&gt;
    &lt;key&gt;Nicer&lt;/key&gt;
    &lt;integer&gt;1&lt;/integer&gt;
    &lt;key&gt;Program&lt;/key&gt;
    &lt;string&gt;/Users/danny/bin/imagecopy.sh&lt;/string&gt;
    &lt;key&gt;RunAtLoad&lt;/key&gt;
    &lt;true/&gt;
    &lt;key&gt;StandardErrorPath&lt;/key&gt;
    &lt;string&gt;/tmp/com.user.imagecopier.stderr&lt;/string&gt;
    &lt;key&gt;StandardOutPath&lt;/key&gt;
    &lt;string&gt;/tmp/com.user.imagecopier.stdout&lt;/string&gt;
    &lt;key&gt;StartInterval&lt;/key&gt;
    &lt;integer&gt;60&lt;/integer&gt;
&lt;/dict&gt;
&lt;/plist&gt;


The file /tmp/com.user.imagecopier.stderr will show any error (e.g. if the output folder is missing or no latest.png is available)

Load the file with:

launchctl load -w /Users/danny/Library/LaunchAgents/com.user.imagecopier.plist


If the launch agent works properly you can remove the part

    &lt;key&gt;StandardErrorPath&lt;/key&gt;
    &lt;string&gt;/tmp/com.user.imagecopier.stderr&lt;/string&gt;
    &lt;key&gt;StandardOutPath&lt;/key&gt;
    &lt;string&gt;/tmp/com.user.imagecopier.stdout&lt;/string&gt;


of the plist.