What has Accessibility got to do with me?

For many using Mojave and Catalina, the greatest mystery of their privacy protection is the list named Accessibility. Why, when you don’t use any of the features provided by the Accessibility pane, should you have apps which seem to need to be added to that list? Are they doing something sneaky behind your back, or is this just another strange Catalina quirk, perhaps?

access01

The problem stems from Apple dividing automation services into two, for the purposes of privacy protection.

The Automation list should contain those apps which you have given permission to control other apps using AppleEvents, the technology underlying AppleScript and other valuable features in macOS. Automation is probably the most complex of the privacy lists, because it consists not of individual apps, but pairs. For example, I have PDF Expert installed, and one of its features is to export content from PDF documents and open them in Microsoft Word. To do that, it sends AppleEvents to the Word app, so that specific pairing is allowed in my Automation list.

This is a pain when you first set up apps, as each pairing is specific and has to be explicitly added to that list. You can’t simply enable one controlling app to be able to send AppleEvents to everything and anything it chooses. You might be happy for one app to control Word, but not to gain access to Mail.

The Accessibility list is mainly concerned with a feature which is primarily intended to support some in the Accessibility pane, ‘synthetic input events’, which can be used to control other apps by sending them ‘pretend’ mouse clicks and keypresses. Few users use those features themselves, but they can be invaluable when an app can’t control another using only AppleEvents.

An example of this is automating a dialog, with various controls. Some automation apps can use Accessibility features to perform all the clicks and other actions, and to insert text as if it had come from the keyboard. These can do some impressive things, but are also a potential vulnerability which can be exploited by malware, for instance to click on an OK button without you so much as touching your mouse/trackpad.

Perhaps the best way to discover what Automation services are about is to use them in Automator. As Automator relies on Accessibility features when you record in it, you can save yourself a little trouble by viewing the Accessibility list in the Privacy pane first. If the app isn’t already included and enabled in that list, click on the + tool and add it first. When Automator opens, opt to create a new Application.

access02

Then click the red Record button at the top right of its window, and go through a series of mouse/trackpad and keyboard actions. In my case, it was to open the Security & Privacy pane, and add an app to the Full Disk Access list. Once you’ve finished that sequence of actions, bring Automator to the front and click to stop recording. You should then see the sequence of actions which have been recorded into your app.

access03

Save your app, and outside Automator double-click it to run that app. You should then be presented with an alert informing you that you need to enable that app in the Accessibility list.

access04

When you open the Accessibility list, you’ll see that your app has already been added to it, but you still need to enable it to control your Mac.

access05

Among the apps which are enabled in my Accessibility list are Alfred, Automator, Dash and Parallels Desktop. It’s not a common requirement, and apps which need to have Accessibility features enabled should cause the privacy system to display an alert similar to the one shown above, giving you the chance to allow them to use synthetic input events in automation.

While we’re thinking about Accessibility, the pane of that name does have several useful controls which can be of benefit to any user. In the Display item, the Reduce motion setting should minimise animation features in the interface, which helps many people with vestibular and similar disorders, who can become motion sick from the regular human interface. Reduce transparency is useful if you want to minimise the ‘discoloration’ of overlying windows from those underneath. In the Cursor tab, you can enable Shake mouse pointer to locate, which can make it much easier to see the pointer at times by giving it a shake.

One way or another, Accessibility is for all users now.