Die Berechtigung „Bedienungshilfen“ auf macOS: Was eine App wirklich sieht
macOS lässt dich eine seiner weitreichendsten Berechtigungen mit einem einzigen Häkchen vergeben, ohne ein Wort der Erklärung. Was dieses Häkchen tatsächlich freigibt, warum manche Apps es wirklich brauchen — und was du vorher fragen solltest.
In den Systemeinstellungen gibt es unter Datenschutz & Sicherheit › Bedienungshilfen ein Kästchen, und daneben eine Zeile Text, die so kurz ist, dass sie nichts sagt: Erlaube der App unten, deinen Computer zu steuern.
Es ist einer der folgenreichsten Schalter auf einem Mac, und er kommt mit weniger Erklärung daher als ein Cookie-Banner. Dieser Text ist die Erklärung.
Wofür die Berechtigung gedacht ist
Die Accessibility-API wurde für assistive Technik gebaut. Ein Screenreader muss jedes Label in jeder App lesen und jeden Knopf darin drücken können, sonst ist er kein Screenreader. Also ist die API mit Absicht total: Ein Prozess kann damit die Oberfläche jeder laufenden App auflisten, ihren Text lesen und Eingaben hineinschicken.
Für diesen Zweck ist der Entwurf richtig. Er bedeutet aber auch, dass macOS genau eine Berechtigung hat, wo ein sorgfältigeres System fünf hätte.
Was sie tatsächlich freigibt
Ist eine App angehakt, kann sie:
- jedes Fenster jeder laufenden App auflisten, mit Titel, Position und Größe
- den Bedienungshilfen-Baum in diesen Fenstern durchgehen und den Text von Bedienelementen lesen
- Benachrichtigungen beobachten, wenn Fenster sich bewegen, ihre Größe ändern, aufgehen oder zugehen
- in anderen Apps Knöpfe drücken, Werte setzen und den Fokus verschieben
- einen Event Tap installieren und Tastatur- und Mauseingaben mitlesen
Eine Teilmenge lässt sich nicht vergeben. Das System stellt eine Frage und bekommt eine Antwort, und die Antwort ist alles davon.
Warum eine Fenster-App sie überhaupt braucht
Alles, was wissen muss, was auf deinem Bildschirm ist, braucht diese Berechtigung, weil es keinen anderen Weg gibt. Fensterverwalter brauchen sie, um Fenster zu bewegen. Textbausteine brauchen sie, um zu sehen, wo der Cursor steht. Automatisierungswerkzeuge brauchen sie, um Dinge zu drücken.
WindowNote braucht sie aus dem engsten dieser Gründe: Es muss wissen, welche Fenster es gibt, wie sie heißen und wo sie stehen — sonst ist da nichts, woran ein Zettel hängen könnte.
Das ist ein kleiner Bruchteil dessen, was das Häkchen hergibt. Womit die einzige Frage im Raum steht, die sich zu stellen lohnt.
Die Frage ist nicht „was kann sie“
Sie lautet: Was tut diese App, und wie prüfe ich das?
Die Berechtigung kann das nicht beantworten. Sie gibt immer alles frei. Die brauchbaren Hinweise liegen also woanders:
- Sagt die App, wo ihre Grenze verläuft, bevor du sie freigibst? Eine App, die auf dem Berechtigungs-Bildschirm selbst erklärt, was sie liest und was nicht, hat sich zumindest öffentlich auf etwas festgelegt.
- Telefoniert sie nach Hause? Sieh dir die Netzwerkaktivität an. Eine App, die deine Fenstertitel liest und zusätzlich Verbindungen zu einem Server öffnet, verlangt Vertrauen für zwei Dinge statt für eines.
- Ist sie sandboxed? Kann sie nicht sein, wenn sie das tut — die App-Sandbox verbietet das Lesen fremder Fenster. Die fehlende Sandbox ist hier also kein Warnzeichen, sondern eine Folge. Sie heißt aber auch: Das Betriebssystem hält die Grenze nicht für dich.
- Wer steckt dahinter, und ist die Person erreichbar? Die verlässlichste Schranke bei einer kleinen App ist, dass ihr Autor einen Namen hat.
Was WindowNote genau liest
Fürs Protokoll, und weil eine Seite, die darüber schreibt, ihre eigene Antwort nennen sollte:
| Wird gelesen | Wird nie gelesen |
|---|---|
| Name und Bundle-Kennung der App | Inhalte in deinen Fenstern |
| Der Fenstertitel, wie gemeldet | Eingaben, Zwischenablage, Passwörter |
| Position und Größe des Fensters | Der Bedienungshilfen-Baum in einer anderen App |
| Der Dokumentpfad, wo die App ihn anbietet | Irgendetwas davon, außerhalb dieses Rechners |
Die letzte Zeile ist die, die die Arbeit macht. Die Zettel liegen in einer SQLite-Datei in Application Support; es gibt kein Konto, keinen Sync und keine Telemetrie, und der einzige Netzwerkaufruf der App ist die Lizenzprüfung — die die kostenlose Variante nicht macht.
Nichts davon erzwingt macOS. Es erzwingt der Code, der so geschrieben ist — eine schwächere Zusage als eine Sandbox und eine stärkere als ein Versprechen auf einer Produktseite, weil die App es auch auf dem Berechtigungs-Bildschirm sagt, bevor du entscheidest.
Der Fehlerfall, vor dem niemand warnt
Ein praktischer Hinweis, weil er beim ersten Mal eine Stunde kostet.
Der Eintrag unter Bedienungshilfen hängt an der Code-Signatur der App, nicht an ihrem Pfad und nicht an ihrem Namen. Ändert ein Update die Signatur, kann der alte Eintrag in der Liste überleben — angehakt, scheinbar in Ordnung, und ohne irgendetwas freizugeben. Die App wirkt kaputt und die Einstellung wirkt richtig.
Die Lösung: Eintrag auswählen, mit dem Minus entfernen, App erneut hinzufügen. Eine App, die das gut macht, erkennt den Zustand und sagt es dir, statt still nichts zu tun.
Bewusst vergeben, oder gar nicht
Die ehrliche Zusammenfassung: macOS lässt dich eine große Entscheidung mit einem kleinen Bedienelement treffen und kann dir dabei nicht helfen. Die Berechtigung ist alles oder nichts, also geht es bei der Entscheidung um die App, nicht um das Häkchen.
Was ein Grund ist, weniger Dinge zu installieren, die danach fragen — und von denen, die man installiert, zu erwarten, dass sie in ihrer eigenen Oberfläche sagen, wo sie die Grenze gezogen haben.
- Kann eine App mit dieser Berechtigung mitlesen, was ich tippe?
- Technisch ja — dieselbe Berechtigung, die das Beobachten der Oberfläche erlaubt, erlaubt auch, einen Event Tap zu installieren und Tastenanschläge zu sehen. macOS trennt das nicht. Deshalb zählt die Frage, was eine App mit der Berechtigung tut, mehr als die Berechtigung selbst.
- Warum bietet macOS keine engere Berechtigung an?
- Die API wurde für assistive Technik entworfen, wo das Lesen und Steuern der ganzen Oberfläche der Zweck ist. Ein Umfang „nur Titel und Rahmen“ ist darin nicht vorgesehen, also muss jede App, die einen Bruchteil braucht, das Ganze verlangen.
- Die App steht unter Bedienungshilfen und funktioniert trotzdem nicht. Warum?
- Der Eintrag hängt an der Code-Signatur der App. Nach einem Update, das die Signatur geändert hat, kann der alte Eintrag in der Liste stehen bleiben und dabei gar nichts freigeben. Eintrag mit dem Minus entfernen und die App erneut hinzufügen behebt es.