Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

macOS Mojave, Automator “Not authorized to send Apple events to System Events.”

After I updated to Mojave, I can no longer use the automator service I've previously been using with the alert below. enter image description here

  • In Security & Privacy, I already checked AppleScript Editor.

Do you see any problem with my code or is this the problem of the newest macOS?

Script

on run {input, parameters} set pathList to {} repeat with itemNum from 1 to count of input     tell application "System Events"         copy POSIX path of (container of (item itemNum of input)) to end of pathList     end tell end repeat return pathList end run 

enter image description here

enter image description here

like image 589
Travelholics Avatar asked Jul 12 '18 06:07

Travelholics


People also ask

Where are system events on Mac?

In Mac OS X, scripting of system functionality of this kind has been moved to a faceless background application called System Events (located in the CoreServices folder, along with the Finder).

Does Apple still support AppleScript?

However, iOS and iPadOS have no support for AppleScript, and Apple is clearly heading in a trend of switching many apps over to Catalyst (and strongly encouraging 3rd party apps to do the same).

What are system events in Mac OS?

System Events is a faceless background app provided by Apple that gives AppleScript access to certain system functions and attributes. For example, we can use the app to change the desktop picture, control the user interface of other applications, change the screen saver, navigate the file system hierarchy, and more.


1 Answers

This is definitely a part of Mojave's new security framework. In terminal try

osascript -e 'tell application "Finder"' -e 'set _b to bounds of window of desktop' -e 'end tell' 

and you may receive:

36:42: execution error: Not authorized to send Apple events to Finder. (-1743) 

What is supposed to happen on the first execution is the Finder opens a dialog box informing you that terminal is requesting permission to send events to the Finder. If you allow it, then terminal will get added to the Automation page in System Preferences > Security & Privacy > Automation:

enter image description here

There's two issues that I see at the moment:

  • the implementation of requesting permission for the scripting action appears to be bugged; I've run other scripts that request permission to send events to Safari and the Finder doesn't prompt for permission, it just returns an error.
  • streamlined automation requires some type of mechanism to have the permissions granted a priori; an example would be utilizing AppleScript with Ansible and being unable to preload grants

Others have written up more extensive information about this:

  • https://www.felix-schwarz.org/blog/2018/06/apple-event-sandboxing-in-macos-mojave
  • https://forums.developer.apple.com/thread/106949

Hopefully this gets worked out before Mojave ships as it seriously impacts automation capabilities on macOS.

like image 73
Joe Avatar answered Sep 20 '22 19:09

Joe