Apple 收回给 Agent 的 Mac 权限:一个勾选框管着整块盘
2026/10/04 20:18
Inc 专栏作家 Jason Aten 收到 Meta Muse 一条通知,引用的却是他从没授权过的那段 iMessage。Meta 说不可能。Apple 十月二日发文收紧 macOS 的 Full Disk Access,理由直接写成「AI agent 越来越自主」。这一个勾选框放行的是整块非 root 盘:邮件、短信库、Safari 历史与 cookie、聊天记录、SSH 私钥。
那天下午,Jason Aten 的 Mac 弹出一条通知。Muse 说,他和同事刚聊完的那件事,要不要它顺手跟进。通知里的那件事,只有那段对话里提过。
Aten 停了一下。他是 Inc 的专栏作家,用 Meta 的 AI 助手 Muse 有一阵子。他从没开过读消息的权限,至少他以为没开。他没忍住,当面问了 Muse 一句:你怎么知道的。Muse 答得很自然,说自己在同步 Mac 上的通知。屏幕上弹出什么,它就读到什么。
这篇写给正在用 agent、正要装 agent 的人:开发者、团队负责人、自己掏钱买订阅的个人用户。你们要做的决定只有一个——那个开关给不给、给哪个 app。文章不劝人弃用 agent,agent 该用还得用;它只处理一件事:让你给出去的权限,和你要办的事,对得上数。
十月二日,Apple 发了条给开发者的通告。它没提 Meta,也没提 Muse。它只说,要收紧 macOS 的 Full Disk Access,理由写得非常直白:AI agent 越来越自主,这种权限的风险会大幅增长。通告很短,却把这场争论从「它到底看没看到」挪回了那个开关本身。发钥匙的人开口了,这比谁偷看了谁更值得盯。
为什么一条开发者通告值得写这么长。因为接下来两年,你要装的每一个 agent 都会站在这个开关面前要钥匙:桌面助手、编码 agent、浏览器自动化、你公司采购的办公 agent。它们全走同一条路,这条路的宽度由 Apple 一个部门在几周内定。普通人插不上话,但钥匙给不给,是你说了算。
一个勾选框管着整块盘
多数人不知道这个开关藏在哪。系统设置,隐私与安全性,最后一行,完全磁盘访问权限。它列着一张 app 名单,每行右边一个开关。开关打开,那个 app 就能读你 Mac 上几乎全部非 root 文件。macOS 安全研究者 Patrick Wardle 对 Ars 说得更直接:有了 FDA,任何非 root 文件都可读,浏览历史、浏览器 cookie、聊天记录,等等等等。他列了三样,然后自己用了一串「等等」,因为清单确实列不完。
具体到文件,清单很长。你的 iMessage 存在 ~/Library/Messages/chat.db。你的邮件在 /Library/Mail。Safari 的历史与 cookie、WhatsApp 和 Signal 的本地库、终端历史、/.ssh 下的私钥、下载目录、桌面上的项目文件,全在这一个权限能碰到的范围里。它们平时各有各的锁,一张照片要相册授权,一份文件要文件夹授权。FDA 把这些锁一次性推到一边,因为它们都在同一个用户目录下。SSH 私钥那行值得单独念一遍:你登录过的每台服务器,都认它。
它们不需要各自授权。你也不会在打开每个 app 时被逐个提醒。一个勾选框,换的是整块盘。用户心里算的是一件事,系统给出去的是一整层。
Aten 的误会就出在这。他以为「Muse 读消息」是消息层面的授权,是那条对话的事。可这条路径上没有「只读某一条」「只读这三天」。要么这个开关是开的,整块盘都能读;要么它是关的,什么都读不到。中间没有档位,也没有范围可划。所以「只读消息」这种话在 macOS 上落不了地,它没有对应的开关。你要么给了 Muse 一张整盘的通行证,要么什么都没给。他记忆里那次没点过的授权,对应的就是这张整盘通行证。
反过来看也是一样。一个 agent 想帮你订张票、改份合同、翻一下你上周的会议记录,它要的从来超出那一个文件。它默认要的是能碰整块盘的能力,因为没人替它把范围切细。你点同意的那一刻,签下的远不止那件小事。
iPhone 上的模型不是这样。那边的 app 各自关在沙箱里,碰照片、通讯录、定位都要分开要授权,系统还会给你「仅这一次」的选项。Mac 这套是给桌面工作流设计的,信任的假设更粗,默认把用户当成自己会管理权限的人。agent 正好把这条粗线放大到了极限。桌面系统积攒了二十年的信任假设,agent 一来就全数继承。
Apple 自己写着,这个开关是给备份 app 开的旁路
通告里有一句话,很多人会略过。Apple 写,Full Disk Access 在很大程度上绕开了这些隐私控制,为的是让备份类 app 在 Mac 上正常工作。
绕开,是 Apple 自己的用词。macOS 平时靠 TCC 拦住每个 app 对每个文件夹的访问,弹窗、授权、记录,一层层来。FDA 是官方在墙上留的一扇门,专门给 Time Machine 这类工具,因为它们得翻遍整块盘才能干活。门是为少数搬家的人开的,后来发现谁都能走。
这也解释了 Apple 的难处。它不能直接把 FDA 删掉,备份和迁移这类功能还挂在上面。它能做的只是把门收窄,让开门这个动作更重、更显眼。Apple 这一句等于承认,FDA 从一开始就不是给普通应用准备的,它是一张为特定工具开出的例外条,而这次要收的,正是这张例外条被顺手挪用的部分。
另一句也值得原样搬出来。Apple 写,有些开发者正在以可能让用户处于风险之中的方式使用 Full Disk Access,暴露系统上的一切——包括文件、邮件、消息,甚至浏览历史——而用户并不完全知道和理解。这句子句对着 FDA 的现状:能这么用的前提,就是这张例外条在市面上流通。
现在 Apple 说,这类使用会让用户受损。「并不完全知道和理解」这几个字值得停一下。Apple 承认的不只是访问太宽,还有授权界面本身没让人看懂。一个用户点下那个开关时,脑子里想的往往是「让这个助手帮我处理文件」,拿到的是整块盘的读写。
下一句更少被引用。Apple 说,对通讯类 app,这还会损害与你对话的那些人的隐私。对方没点过任何同意按钮,他的消息也已经躺在你交给 agent 的那块盘里。这一句把责任范围扩了一圈:受影响的从来不只你一个。发给你的每句话,也可能是替对方交出去的。
Apple 的承诺是,接下来会加一些新控制,确保真想给这个权限的用户,「只能通过非常明确的用户动作」来给。它没给时间表,也没点名任何一款 app。Ars 还留了个冷静的注脚:除了这件闹大的事,目前没有其他 app 滥用 FDA 读消息和浏览历史的公开报告。Apple 的通告也可能只是在敲打一批开发者,跟 Muse 无关。但时间挨得太近,而通告挑的词是「AI agent」,不是「某个 app」。
Meta 的三步确认,挡住的是一个坏掉的 agent 吗
Meta 的回应很硬。通讯副总裁 Andy Stone 说,Muse Mac 版的消息集成完全是自愿开启的。要读消息,得同时打开 Full Disk Access 和 Messages 连接器。Stone 在 X 上把这句话原样贴了两次——一次回应 Aten,一次回应媒体的追问。
Meta 的 David Singleton 补了细节。他说这中间有「三步彼此独立的应用层权限,加上 macOS 内建的系统级保护」。他还说,这些保护「即便 Muse 应用有 bug 也无法绕过」。按他的描述,开 FDA 会调起系统设置、要管理员密码、再手动确认一次,还要等 Muse 完全重启。
记者随后问了一个技术问题:既然 FDA 已经给了,Muse 怎么会读不到消息,而其他有同样权限的 app 都读得到。Meta 公关没答这个问题,只重复了那句「自愿开启」。同一个问题,问两遍,答两遍一样的话,这在公关里通常说明要么没看懂,要么不想接。
Aten 这边的说法是,他那台 Mac 上 FDA 是关着的,通知却照样进来了。Muse 自己给出的解释是,它在读通知横幅。两条说法里,总有一条是错的。
Wardle 的话就卡在这。FDA 一旦打开,非 root 文件都可读,这是权限模型本身,不取决于某个 app 的界面怎么画。Apple 通告里「暴露一切……消息……」的措辞,在技术上和 Singleton 的断言是顶着的。Apple 没点名,但也没站到否认那一边。
Singleton 还有一个反击。他说那个 AI 解释错了,是模型在胡说。这个解释说得通,也确实常见,模型解释自己的行为时经常编。
问题恰恰在这。三步确认挡的是误触,是「我没想开,手滑了」。它挡不了别的东西。如果防线的每一环都在应用层,那它护的是一个行为正常的 app。可当一个 agent 有 bug、被注入、或者自己会错时,「即便有 bug 也无法绕过」这句承诺本身就成了要检验的对象。它保的是应用,而风险来自模型。Meta 那套说法里,应用和模型被当成同一个可靠的东西在担保。Wardle 的 0-day 拆开的正是这个假设。
十一天前的报告还摆在那。Wardle 披露过一个 Muse 配置,能让 Mac 上任何 app 或代码,包括通过 ClickFix 注入的命令,完全接管这个助手。接管之后,它能碰到的东西,和 Muse 能碰到的一模一样。Apple 发文那天,距离这份报告十一天。
授权会被继承、被注入、被放大
macOS 的权限会被「负责进程」继承。这是 HN 上被顶起来的点。你给 Terminal 或某个编辑器开了 FDA,从它启动的一切子进程也会带着这个权限跑。
这条机制在 agent 时代变成了放大器。很多 coding agent 就跑在终端 harness 里。你给 harness 开一次 FDA,等于给它能调起的每个脚本都开了。你以为授权的是一个工具,实际授权的是一整条执行链。安全圈那句「别给终端开 FDA」,在这条链上有了新的分量。给 Terminal 开 FDA 的老习惯,等于把你机器上的最高读权限授予任何一行即将被执行的命令。
HN 上还吵了权限弹窗的设计。macOS 的 FDA 只给「开」和「关」,没有「仅这一次」,也不像定位那样能划个大概范围。有人提出,弹窗该学 iOS 的做法,先给一次临时授权。眼下的设计把一次和永远绑在了一起。给一次,就是给永久,中间没有缓冲带。
再往上是注入。ClickFix 这类攻击已经把「让用户粘一段命令」做成了流水线。一次注入,接管的是一个本来就握着整块盘的进程。你不需要把它装成 agent,你只要让它在 agent 身边运行。这一步不需要新漏洞,只需要一个愿意照做的用户。Wardle 十一天前演示的那条链,起点就是一条粘进终端的命令。
最上面是自主循环。agent 会自己决定调哪个工具、读哪个文件、跑哪条命令。你要授权的是它的行为,但它没有固定的行为清单。一次授权,被放大成一段持续的访问。你以为给的是某个任务的许可,拿到的是随时可调的整块盘。这也是行业里正在吵的另一件事的根:agent 到底该不该直接拿到原始凭据。最省事的做法是把密钥、cookie、token 全摊在它能读的地方,而 FDA 正好把这一切一起放行。权限收不细,凭据隔离就无从谈起。
同一条线上,别人也在收闸。Amazon 因为服务条款之争,把 Muse 挡在了平台之外,理由里就有 agent 不表明身份、疑似捕获顾客凭证。Meta 的说法是,这类 app 都该公开运作、尊重服务方的参与决定。一个管的是平台能不能进,一个管的是本机权限能拿多少,方向一致。另一头是反向拉扯。同一周,OpenAI 上线 Dots,一个常驻的 agent,自带云端电脑,也能通过桌面 ChatGPT 应用拿到你本机的访问权。一边刚学会要收紧,一边又在把新的入口交出去。
HN 上有人这周把整支 Mac 机队重装了。两个 agent 都不再原生跑,改用 Lima 隔离在沙箱里,只暴露一个仓库。他写了一句话:失去一些集成,换确定性,值了。这周 HN 上真实发生的搬迁,方向全是同一头:从宿主机往下搬。等 Apple 的新控制上线,这张列表上还会多出几个你从没装过的名字。
打开那张列表,把你的 agent 挪到另一层
Apple 的新控制还没上线,但你现在就能做三件事。第一件,打开 系统设置 → 隐私与安全性 → 完全磁盘访问权限。看一眼那个列表。里面有 Terminal 吗,有编辑器吗,有任何一个你不记得为什么给它开的 app 吗。给 agent 直接开 FDA 的,先关掉。关掉之后如果它还在跑,说明它本来也不需要这个权限。这一步花两分钟,零成本,效果立竿见影。
第二件,需要文件访问时,换一条更细的路。Apple 提供了按文件夹的授权接口,app 触发系统弹窗,你选一个目录,系统把这次授权记下来、可随时撤销。接口名叫 security-scoped bookmark,把「这一个文件夹」写成一张可撤销的凭条。给一张凭条,比给整块盘更容易收回,也更容易回头查。它要多写几行代码,也要多几次弹窗打扰。换来的是授权有边界、撤销有入口、出事有记录。
第三件,把 agent 挪到另一层跑。Docker、Lima 或者一台专用虚拟机,只挂载你让它碰的那部分。它在沙箱里能拿到的,就是你能承受它拿到的。多一层壳,多一道迟滞。上面的 PeanutOS 就是这么干的:整支机队的 agent 全搬进 Lima,宿主机上一个 agent 都不留。
这三件事背后是同一句话:分清钥匙的层级。FDA 是那把能开整栋楼的总钥匙,文件夹授权是单个房间的,沙箱是让它去另一栋楼干活。不给它总钥匙,是这三件里最省事、也最有效的一件。至于那把总钥匙当初为什么造得这么大,答案在 Apple 自己那句「为备份 app 而留」里。
什么新事实出现,这篇文章就作废
Apple 说会加的新控制到底长什么样,现在没人知道。它可能是一次更重的确认弹窗,也可能是整套粒度改造。边界写成两条,各有各的作废条件。
如果它上线的只是再弹一次「你确定吗」,授权粒度还是整块盘或零,那么本文的判断继续成立:一个勾选框管着整块盘,把 agent 挡在外面这件事,仍然得你自己动手做。如果 Apple 改成按文件夹、按数据类别授权,或者干脆给 agent 一条专用的沙箱通道,让「读消息」不再等于「读整块盘」,那么「一个勾选框管着整块盘」这句就该扔掉,这篇也重写。
到那天再看,这个开关会怎么变。在那之前,先把列表里不该在的东西挪出去。
参考来源(点击可核):
- Apple Developer News: Updates to Full Disk Access in macOS(10/2 官方通告原文)
- Ars Technica: Apple changes Full Disk Access permissions to curb abuse from AI agents(含 Wardle 技术口径与 Meta 回应)
- TechCrunch: Meta disputes claim that Muse read a user's private messages without permission(9/30,Stone 与 Singleton 回应)
- Inc.: Jason Aten,Meta's new Muse AI agent read my private messages(触发事件第一手叙述)
- The Verge: Meta's Muse AI agent is 'creepy'(Aten 事件首发报道)
- Ars Technica: Muse 0-day——extraordinarily privileged AI assistant(9 月 Wardle 披露)
- Macworld: Apple tightens macOS Full Disk Access controls as AI agents proliferate
- HN: Updates to Full Disk Access in macOS(287 分讨论,item 49937631)
- Meta Muse 安全架构页