Die Berechtigung war für Backups gedacht
Am 2. Oktober kündigte Apple neue Kontrollen für den Festplattenvollzugriff in macOS an, eine Einstellung, die gebaut wurde, damit Backup-Apps funktionieren, denn „je leistungsfähiger und autonomer KI-Agenten werden, desto stärker wachsen die Risiken, die mit diesem Zugriffsniveau verbunden sind.“ Auslöser waren Metas Muse, die laut einem Journalisten seine Nachrichten-Datenbank bis Zeile 187.462 synchronisiert hat, und eine Lücke in der ChatGPT-App für den Mac, die Patrick Wardle gefunden hat. Ein Coding-Agent kann dieselbe Reichweite vom Terminal erben, das ihn gestartet hat, und die Entwickler-Geheimnisse, die er lesen kann, lagen nie hinter dieser Berechtigung. In Bromure Agentic Coding ist der Agent kein Mac-Prozess: Er läuft in einer Linux-VM, die nur die freigegebenen Ordner und Platzhalter-Zugangsdaten enthält.
Apple hat den Festplattenvollzugriff gebaut, damit Backup-Apps alles lesen können. KI-Agenten verlangen heute dieselbe Reichweite, und auf dem Mac eines Entwicklers bekommen sie sie oft vom Terminal, ohne zu fragen.
Am 2. Oktober veröffentlichte Apple auf seiner Entwickler-Newsseite eine kurze Notiz mit dem Titel Updates to Full Disk Access in macOS. Sie erklärt, warum es die Einstellung gibt: „Der Festplattenvollzugriff umgeht diese Kontrollen weitgehend, damit Backup-Apps auf dem Mac richtig funktionieren können.“ Dann beschreibt sie, was manche Entwickler daraus gemacht haben: Sie hätten „alles auf ihren Systemen offengelegt, einschließlich Dateien, E-Mails, Nachrichten und sogar des Browserverlaufs, ohne dass die Nutzer es vollständig wissen und verstehen“.
Apple wird Kontrollen hinzufügen, damit Nutzer, die diesen Zugriff gewähren wollen, das „nur durch eine sehr ausdrückliche Handlung“ tun können. Apple nannte auch einen Grund, jetzt zu handeln: „Je leistungsfähiger und autonomer KI-Agenten werden, desto stärker wachsen die Risiken, die mit diesem Zugriffsniveau verbunden sind.“
Ein Datum hat Apple nicht genannt, und was mit bereits erteilten Freigaben geschieht, hat Apple nicht gesagt. Die Notiz macht aber deutlich, was Apple vom Festplattenvollzugriff in der Hand eines Agenten hält.
Zwei Geschichten in zwei Wochen
Die Berichterstattung über die Notiz, angefangen bei TechCrunch, brachte sie mit zwei Vorfällen in Verbindung.
Muse und die Nachrichten-Datenbank. Am 19. September berichtete Inc.-Kolumnist Jason Aten, dass Metas Agent Muse auf seinem Mac ihm eine Mitteilung schickte, die eine Kolumne auf Grundlage eines Gesprächs vorschlug, das er gerade mit dem Co-Host seines Podcasts geführt hatte. Er sagt, er habe Muse den Zugriff auf Nachrichten verweigert, aber festgestellt, dass Muse seine Nachrichten-Datenbank bis Zeile 187.462 synchronisiert hatte, während Muses eigene Einstellungen den Festplattenvollzugriff als ausgeschaltet anzeigten. Meta bestreitet diese Darstellung. David Singleton von Meta Superintelligence Labs sagte, Muse könne Nachrichten erst nach „drei getrennten Schritten von Berechtigungen auf App-Ebene und eingebauten Schutzmechanismen auf macOS-Systemebene“ lesen, die „selbst dann nicht umgangen werden können, wenn die Muse-App einen Bug hätte“. Muse selbst sagte Aten, es habe seine „Gerätemitteilungen“ synchronisiert.
Patrick Wardle von der Objective-See Foundation fasste zusammen, was die Berechtigung bedeutet, sobald eine App sie hat: „Jede (Nicht-Root-)Datei ist lesbar, Browserverlauf, Browser-Cookies, Chats usw.“
Die ChatGPT-App für den Mac. In derselben Woche berichtete Wired über eine Lücke, die Wardle in OpenAIs ChatGPT-App für macOS gefunden hatte, CVE-2026-100754. Die App entschied anhand von Codesignaturen und Prozessabstammung, welchen lokalen Prozessen sie vertraut. Ein vertrauenswürdiger Skriptinterpreter ließ sich mit nicht vertrauenswürdigen Eingaben füttern. Dadurch konnte gewöhnlicher Code, der bereits auf dem Mac lief, in eine akzeptierte Prozesskette schlüpfen und die vertrauenswürdigen Funktionen der App steuern: den Chatverlauf und verbundene Integrationen wie Browsersitzungen. OpenAI hat die Lücke in Build 26.924.20706 behoben, das seit dem 25. September ausgeliefert wird. Eine Ausnutzung in freier Wildbahn wurde nicht gemeldet.
Beide Geschichten haben dieselbe Prämisse. Ein Agent auf dem Mac läuft als Sie, und alles, was er lesen kann, kann auch jeder Code lesen, der den Agenten übernimmt.
Das Terminal hatte schon Ja gesagt
Muse hat den Festplattenvollzugriff über die Systemeinstellungen angefordert, so wie Apples Modell es vorsieht. Ein Coding-Agent im Terminal fragt gar nicht und läuft mit den Freigaben des Terminals.
macOS prüft Datenschutzberechtigungen gegen die verantwortliche App, und das
ist bei einem Kommandozeilenwerkzeug das Terminal, das es gestartet hat. Viele
Entwickler haben Terminal, iTerm oder ihrem Editor schon vor Jahren
Festplattenvollzugriff gegeben, um die Abfragen loszuwerden, die find, rsync
oder ein Backup-Skript sonst auslösen würden. Jeder Prozess, der aus diesem
Fenster startet, erbt die Freigabe. Das betrifft Claude Code, Codex und Gemini
CLI, dazu jedes Postinstall-Skript von npm install, jeden MCP-Server, den sie
starten, und jeden Einzeiler, zu dem eine README sie überredet hat.
In diesem Setup liegen die Dateien, die Apple aufgezählt hat, in Reichweite des Agenten und von allem, was der Agent ausführt:
~/Library/Messages/chat.db, der Nachrichtenverlauf, den Muse synchronisiert haben soll~/Library/Mail, jedes Postfach- Safaris Verlauf und Cookies unter
~/Library/Safariund in seinem Container - Notizen, Fotos-Mediatheken und die privaten Container anderer Apps
Die Geheimnisse lagen nie hinter der Abfrage
Apples Änderung ist richtig, und sie deckt die Dateien ab, die man für privat hält. Die Arbeitszugangsdaten eines Entwicklers liegen woanders. Diese Pfade sind weder durch den Festplattenvollzugriff noch durch irgendeine andere Datenschutzberechtigung von macOS geschützt:
~/.ssh/id_ed25519~/.aws/credentialsund~/.aws/sso/cache/~/.config/gh/hosts.yml,~/.git-credentials,~/.npmrc,~/.docker/config.json,~/.kube/config- die
.env-Datei in jedem Projekt, das Sie geklont haben - die OAuth-Tokens und Sitzungsprotokolle des Agenten selbst
Jeder Prozess, der unter Ihrem Benutzer läuft, kann sie lesen, mit oder ohne Festplattenvollzugriff. Apples neue Kontrollen machen es schwerer, eine große Berechtigung zu erteilen. Ein Coding-Agent auf einem Laptop brauchte diese Berechtigung nicht, um an die Dateien zu kommen, mit denen ein Angreifer in Ihre Repositories pushen oder Ihr AWS-Konto öffnen kann. Infostealer, die es auf Coding-Agenten abgesehen haben, sammeln diese Dateien bereits ein: Access- und Refresh-Tokens, MCP-Konfigurationen, Prompt-Verläufe.
Bevor Sie prüfen, welche Apps Festplattenvollzugriff haben, schauen Sie sich an, was der Computer des Agenten enthält.
In Bromure ist der Agent kein Mac-Prozess
Bromure Agentic Coding führt die Agenten jeder Maschine in einer Ubuntu-VM unter Apples Virtualization.framework aus. Claude Code, Codex, Grok und die anderen sind Linux-Prozesse auf einem Linux-Kernel. Die Datenschutzberechtigungen von macOS gelten für sie nicht, weil sie nie eine Datei im Dateisystem des Macs öffnen. Es gibt keine Freigabe, die vererbt werden könnte, und kein Terminal, dessen Berechtigungen zum Agenten durchsickern, denn das Terminal, das Sie in Bromure sehen, hängt an der VM, nicht an der Shell Ihres Macs.
Was die VM sehen kann, ist eine kurze Liste:
- Ihre eigene Systemplatte, ein Copy-on-Write-Klon eines signierten Ubuntu-Images.
- Ihr eigenes Home,
/home/ubuntu, auf einem privaten Disk-Image. - Die Ordner, die Sie für diese Maschine freigegeben haben, bis zu acht,
jeder unter seinem Namen im Home eingehängt. Wenn Sie
~/code/paymentsfreigeben, sieht der Agent~/payments. Er sieht~/codenicht, und er sieht nie~/Library. - Eine kleine Konfigurationsfreigabe pro Boot, schreibgeschützt, mit den Proxy-Einstellungen und den Platzhalter-Zugangsdaten.
chat.db steht nicht auf dieser Liste, ebenso wenig Mail oder Safaris Verlauf.
Ein Sync-Job nach Muse-Art oder ein per Prompt-Injection gekaperter Agent, dem
man sagt, er solle „meine letzten Nachrichten als Kontext zusammenfassen“, stellt
fest, dass ~/Library/Messages nicht existiert. Kein Pfad in der VM führt
dorthin.
Die Entwickler-Geheimnisse sind Platzhalter
Damit ist Apples Liste abgedeckt. Bromure deckt auch die Liste ab, die Apples Notiz auslässt: die Dotfiles.
Echte Zugangsdaten bleiben verschlüsselt auf dem Mac. Die VM bekommt Platzhalter
in der richtigen Form: GH_TOKEN ist ghp_ plus 36 Zeichen, die GitHub
ablehnen würde, ANTHROPIC_API_KEY ist sk-ant-api03-brm-…, und
~/.git-credentials, ~/.docker/config.json und ~/.kube/config enthalten
Fakes. Der Proxy auf dem Mac setzt den echten Wert in eine Anfrage ein, nachdem
sie die VM verlassen hat, und nur, wenn die Anfrage an den Host geht, zu dem
dieses Credential gehört. Mit den Worten des Handbuchs: „Keine Datei, keine
Umgebungsvariable und kein Prozess in der VM enthält jemals einen echten
API-Schlüssel, ein OAuth-Token, ein AWS-Secret oder einen privaten
SSH-Schlüssel.“
Zwei Details beantworten Apples Sorge über weitreichende Freigaben:
- Der AWS-Import fragt nach einem einzigen Ordner, auf dem Mac. Um Ihre
AWS-Profile zu importieren, bittet Bromure um eine Security-Scoped-Freigabe nur
für
~/.aws. Der Ordner wird auf dem Mac gelesen und nie in die VM eingehängt. Das ist die enge, ausdrückliche Freigabe, die Apples Notiz verlangt, und sie geht an die Host-App, nie an den Agenten. - SSH-Schlüssel bleiben auf dem Mac. Das
SSH_AUTH_SOCKder VM ist eine Brücke zu einem Agenten auf dem Mac. Der Gast kann Signaturen anfordern, und die Bytes des privaten Schlüssels gelangen nie in die VM. Ihr ssh-agent aus der macOS-Anmeldung wird ihr nie zugänglich gemacht.
Wenn Claude Code sich über Bromure anmeldet, läuft der OAuth-Ablauf im Browser
Ihres Macs, und die Tokens werden auf dem Mac gespeichert. Das ~/.claude der
VM enthält kein echtes Token. Genau nach dieser Datei suchen Infostealer, die
auf Coding-Agenten zielen.
Auch der Browser hat seine eigene Platte
Apple nannte den Browserverlauf, Wardle die Cookies. Der Agent in Bromure hat
einen Browser, ein vollständiges Chromium, das der Agent über den eingebauten
MCP-Server browser steuert. Es läuft in einer zweiten, wegwerfbaren VM,
getrennt von der Maschine des Agenten und von Ihrem Mac. Standardmäßig ist seine
Platte ein temporärer Klon, der beim Schließen des Browsers gelöscht wird, sodass
Cookies, Logins und Verlauf mit ihm verschwinden. Es hat keinen Zugriff auf
Safaris Verlauf oder Ihr Chrome-Profil vom Desktop, denn die liegen auf dem Mac.
Was hinausgeht, läuft über den Mac
Angenommen, ein Agent sammelt im freigegebenen Projektordner tatsächlich etwas, das sich zu stehlen lohnt. Er hat nur einen Weg hinaus. Der virtuelle Switch der VM leitet jede Webverbindung in den Proxy auf dem Mac um, und der Gast kann das nicht abschalten.
- Auf der Standard-Tracing-Stufe wird jede Anfrage in einen verschlüsselten Trace auf dem Mac geschrieben, wobei die Modellaustausche in die Tool-Aufrufe und Shell-Befehle des Agenten zerlegt werden. Der Trace Inspector zeigt einen POST an einen unbekannten Host in dem Moment, in dem er passiert.
- Die Egress-Firewall der Maschine, auf dem Mac durchgesetzt, kann nur die Hosts erlauben, die das Projekt braucht, und alles andere verwerfen.
- Enthält die Nutzlast eines der Platzhalter-Credentials, sieht der Proxy ein Credential auf dem Weg zu einem Host, für den es nicht ausgestellt wurde. Er antwortet mit HTTP 451, pausiert die VM und öffnet auf dem Mac eine Warnung: This environment may have been compromised.
Der lokale IPC-Trick braucht einen Mac-Prozess
CVE-2026-100754 setzte „unprivilegierten Code, der bereits auf einem Mac läuft“ voraus, der den lokalen Vertrauenskanal der ChatGPT-App erreicht. Auf einem Laptop ist die aktivste Quelle von Code, der als Sie läuft, oft der Coding-Agent: Abhängigkeiten, die er installiert, Skripte, die er ausführt, Werkzeuge, die er herunterlädt. In Bromure läuft dieser Code im Linux-Gast. Die XPC-Dienste und Unix-Sockets des Macs und die Desktop-Apps dahinter leben in einem anderen Kernel. Ein bösartiges Postinstall-Skript in der VM kann sich keiner Prozesskette auf dem Mac anschließen.
Eine Maschine pro Aufgabe
Mit den freigegebenen Ordnern entscheiden Sie, wie viel der Agent sieht. Jede Bromure-Maschine hat ihre eigene Ordnerliste, ihre eigenen Zugangsdaten und ihr eigenes Home, deshalb fällt die Gewohnheit leicht:
- Geben Sie jedem Projekt eine eigene Maschine und geben Sie nur den Ordner dieses Projekts frei.
- Geben Sie einer Maschine nur die Zugangsdaten, die ihr Projekt nutzt. Die Spielwiese, auf der Sie neue MCP-Server und Agenten-Plugins ausprobieren, bekommt keine.
- Lassen Sie Prompt before write eingeschaltet, die Voreinstellung neuer Maschinen für GitHub, Cloud-Anbieter, Registries, Kubernetes und Datenbanken. Pushes und Löschvorgänge halten dann für einen macOS-Dialog an, der die genaue Operation zeigt.
- Geben Sie nie Ihren Home-Ordner frei. Der Agent braucht ihn nicht.
Jeder Start einer Maschine legt außerdem einen Copy-on-Write-Checkpoint ihres Homes an, sodass Rewind home… zurückholen kann, was ein Agent dort gelöscht hat.
Keine macOS-Berechtigung zu erben
Der Agent ist ein Linux-Prozess in einer VM. Er läuft nie mit dem Festplattenvollzugriff Ihres Terminals, und die Daten von Nachrichten, Mail und Safari liegen nicht auf seiner Platte.
Nur die gewählten Ordner
Jede Maschine sieht ihr eigenes Home und bis zu acht Ordner, die Sie
namentlich freigegeben haben. Der Rest Ihres Macs, ~/Library eingeschlossen,
ist nicht da.
Dotfiles enthalten Fakes
Git-, Cloud-, Registry- und Modell-Zugangsdaten sind Platzhalter. Private SSH-Schlüssel gelangen nie in die VM. Der Proxy auf dem Mac setzt die echten Werte auf der Leitung ein.
Jeder Ausgang wird protokolliert
Webverkehr läuft über den Host-Proxy: aufgezeichnet, von der Egress-Firewall gefiltert und mit pausierter VM gestoppt, wenn ein Platzhalter zum falschen Host unterwegs ist.
Geben Sie dem Agenten einen eigenen Computer
Apples Notiz ist ein Betriebssystemhersteller, der Entwicklern sagt, dass eine Berechtigung, die für Backup-Software entworfen wurde, nicht zu autonomen Agenten gehört. Apple hat recht. Seine Lösung ist eine deutlichere Abfrage, und der Nutzer muss trotzdem für jede App die richtige Wahl treffen, auf einem Mac, auf dem alles liegt, was er besitzt.
Bromure gibt dem Agenten einen eigenen Computer. Darauf liegt das Projekt, das Sie freigegeben haben, und Schlüssel, die nur funktionieren, wenn der Proxy auf Ihrem Mac die echten einsetzt. Wenn Apples neuer Dialog erscheint, wird Ihr Coding-Agent nicht zu den Apps gehören, die ihn auslösen.