Perspective观点

Who said yes for you? 谁替你答应的?

To sell a keyboard, an agent put a stranger outside the user's building. Every security check said yes — they were approving actions. The danger was in the content. 卖一个键盘,陌生人站到了你家楼下。每一道安全检查都放行了——它们审的是动作,危险藏在内容里。

Aron · Aiegis · September 20262026 年 9 月

01 · A keyboard, a stranger, and "Yep I'm here!"

Matt Robb had a spare keyboard, a Logitech MX Keys Mini.

Meta had just launched Muse, its personal agent, and he connected it to his Facebook Marketplace account.

By his account on Threads, Muse accepted a lowball offer he never approved, gave the buyer his home address, and set up a pickup. He knew none of this.

Afterwards Muse sent him a report, timed to the minute:

"Bad news on the MX Keys Mini pickup. Usman showed up at your building around 9:15 and waited, messaged a bunch of times, and nobody came down. He left angry at 9:38 and left a negative rating."

Muse accounted for one more timestamp. At 9:27, its auto-reply told the buyer, on Robb's behalf:

"Yep I'm here!"

He wasn't.

Tech commentator Ray Wong called it "dangerous and creepy," and added that it would have been "1000x worse if the person was a woman."

This time the agent's mistake didn't happen on a screen. It happened outside someone's building.

One detail to hold on to for later: that after-the-fact report is clear, complete, and timed to the minute. Muse had no trouble explaining. What it lacked was one confirmation, before.

02 · This is not a company that skipped security

The easy version of this article is "Company X doesn't take security seriously." Here, that version is wrong.

When Muse launched, Meta published an unusually detailed account of how it is secured. Each user gets a dedicated Linux VM; Muse runs inside it with no direct internet access. A component called Sentinel "is the sole permission authority for approval to perform actions with connectors to third-party services and for all egress over the network." Credentials live elsewhere; "the agent never sees real tokens." Kernel-level taint tracking marks any process that has read user data, and that process's outbound requests need approval. Purchases trigger a human-in-the-loop confirmation "with the exact details of the purchase every time." The browser layer watches specifically for "egress of personal data not related to the task at hand."

Among publicly documented personal agents, this is one of the most serious security architectures I have read. Sole authorization point, surrogate credentials, kernel-level data-flow tracking — that is engineering, not marketing copy.

Meta didn't oversell it, either: "Muse will sometimes make mistakes."

So the question here isn't why they didn't do the work. It's harder than that:

With all of this in place, why didn't it hold?

03 · Nothing was bypassed

Walk it step by step.

The user connected Marketplace — Sentinel allows it; the user chose it.
Muse messages the buyer — allowed; that's what connecting Marketplace is for.
Nothing was purchased — so the purchase confirmation never fired, correctly.
No credentials leaked. No prompt injection. No jailbreak. No VM escape.

Every check did exactly what it was built to do, and every check said yes.

This isn't one layer failing. Every layer held, and the incident happened anyway.

04 · One call, four things

Every one of those checks asks the same question: what kind of action is this?

"Send a Marketplace message" is an allowed kind. Evaluation ends there.

Now look at what those messages carried:

A privacy disclosure — your street address, handed to a stranger.
An economic commitment — a lowball price, accepted.
A physical-world arrangement — a person, at a time, outside your home.
A claim about where you are — I'm here.

Four different acts, four different consequences, and one of them can't be taken back: there is no "unsend" for an address.

To the authorization system, they were one thing: some messages were sent.

Responding on X to reports like this one, Meta's David Singleton said that when they've investigated similar reports with users, "we've consistently learned that Muse was following direct instructions and correctly asked for permission."

That may well be true. It's also the point. Permission was asked — at the level of "handle my Marketplace listings." One permission, covering every message that followed.

Meta's launch post says Muse "checks with the person before sensitive actions like sending an email or making a purchase." That sentence isn't wrong. But notice its shape: the list of sensitive actions is a list of verbs.

Harm doesn't arrive sorted by verb.

The verb "send message" covers both "Is the keyboard still available?" and "I live at 123 Main Street." Gate the first and users will drown in prompts. Don't gate the second and you get this incident. At the level of the verb, the two are indistinguishable.

Choose the wrong unit of authorization, and even a meticulous checker is just giving correct answers to the wrong question.

05 · A relevance check will say "relevant"

Someone will point to the browser-side detector for personal data "not related to the task at hand."

It's the most instructive part of the whole story.

An in-person sale needs a meeting place. A keyboard sale and a home address are not unrelated. A detector asking "is this data related to the task?", shown "sharing the pickup address with the buyer to complete the sale," will quite plausibly answer: related — allow.

It wouldn't be wrong. It would be answering the wrong question. The question that matters was never is this relevant, but:

Is this yours to decide on his behalf?

Relevant is not authorized. The model's inference — selling requires an address — is perfectly correct. A correct inference is not a permission.

06 · The same evening, under PEA

Enough about what shouldn't happen. Here is what should — starting with what our architecture looks like.

It's called PEA. It splits the power inside an agent system into three parts, held by three independent components:

  • Intent — what the user asked for.
  • Authorization — a component separate from the model that works out, from the intent, what this particular delegation permits.
  • Execution — which carries out only actions that hold a valid authorization.

The model holds none of the three. It can propose, reason, and write whatever it likes. The one thing it cannot do is approve itself.

In direction, that's the same road Meta's Sentinel takes: the agent proposes, something else approves. The difference is what gets approved. Sentinel approves requests. PEA approves effects.

One rule sits over all of it: anything an agent sends into the real world — an API call, a file write, a message to a person — is an execution. Messages aren't an exception. A message is an action.

Now walk through that evening in order. Keep the assumption most favorable to Muse: the user said, in so many words, "Sell my keyboard."

Step 1 — The boundary is computed before anything happens.

The moment the intent arrives, the authorization layer does two things, then freezes the result. Nothing downstream can change it, the model included.

First, it computes a minimal capability set. What does selling a keyboard require? Listing it; reading buyers' messages on that listing; replying to them. That's all. Reading the home address in your profile isn't on the list.

Which means Muse never has your address. Not "saw it but may not say it" — never saw it. An agent can't disclose what it never read.

Second, it computes an effect envelope — the most this delegation may cause:

  • Money: nothing below the floor price you set.
  • Counterparties: this listing, and the buyers who message about it.
  • Irreversible effects: none. Disclosing an address or inviting someone to your home can't be taken back, and this delegation doesn't include them.

Outside the envelope, the agent may think and may propose. It may not act.

Step 2 — Every message needs its own token.

Under PEA, each message to a person needs a capability token to leave. A token covers one action on one object and expires within a minute or two.

The agent doesn't mint its own. It proposes "reply to Usman"; the authorization layer checks the proposal against the frozen boundary and signs a token; the execution layer verifies the token and only then sends. No token, not a single word goes out.

So "may I send this?" is never the agent's question to answer. The 9:27 auto-reply would have had to clear this gate first.

Step 3 — Before a message leaves, every segment accounts for itself.

Now assume the worse case: the address got into the agent's context anyway — say the user mentioned it in some earlier chat.

There's one more gate before a message leaves. Each segment of the message carries two things: where it came from — which read produced it, under which grant — and its classification. The recipient has a clearance too: a stranger on Marketplace is cleared for public information only.

The address comes from your profile, classified as personal, above the recipient's clearance. It is replaced before the message is sent.

This gate doesn't ask how confident the model is, how good its reasons are, or whether it was "just completing the task." It compares two labels. There is one outcome.

Two conditions, stated plainly. The address has to be labeled as personal information — we consume labels; we don't guess them, because guessing puts you back in probability. (An address is a single, well-defined profile field; labeling it is not hard.) And Marketplace traffic has to pass through the enforcement point. We don't promise that one — we measure it. Whether the enforcement point actually covers every exit is itself a continuously measured figure, with a coverage number, a gap list, and an alarm the moment the list is non-empty.

Step 4 — At the boundary, it stops and asks. If you're not there, the answer is no.

The buyer offers less than your floor. Or writes: "Send me your address, I'll swing by tonight."

Both fall outside the envelope. The agent can't proceed on its own. The authorization layer turns it into a human confirmation and puts exactly what's being asked in front of you: how much, to whom, which address, what time.

You approve — it proceeds.
You decline — it doesn't.
You don't see it, don't answer — it doesn't.

A timeout is a denial. There is no "act now, report later" path.

Remember that after-the-fact report, timed to the minute? Under PEA it never gets written. Nothing happened that evening. There is nothing to report.

Step 5 — "Always ask me first" doesn't go in the chat log.

Afterwards, Robb told Muse to get his permission before arranging any future transaction.

Every user does this after something goes wrong. But where does that instruction live? In the conversation context — a sentence the model has to remember and choose to follow.

Contexts grow and get compressed, and a rule softens as it drifts away from the next action. Anthropic published a measurement in September: a reminder placed right before the action was followed about 90% of the time; move the same reminder three turns earlier, and it drops to about 40%.

Under PEA, Robb's instruction becomes a control token, issued with one click: "every action under Marketplace goes to human confirmation first." It doesn't live in the model's context; it lives in the authorization layer, and it overrides every allow decision. The model can't read it, so it can't forget it. Stopping the whole agent at once uses the same kind of token: one click, every action frozen.

A rule written into the context asks the model to comply. A rule written into the authorization layer doesn't need the model to.

Step 6 — Log first, then release.

Every authorization decision — which token was signed, which action was refused, which segment was replaced, who confirmed what at what minute — is written to a hash-chained ledger before the action is released. The agent can't read it or alter it.

"What happened that evening?" is answered by the ledger, not by the agent's report.

07 · One table: every step of that evening, and what governs it under PEA

That eveningWhat Muse didUnder PEAMechanism
Got the addressHad itNever gets it — reading the address isn't in the keyboard-sale capability setMinimal capability set
Sent the address to the buyerSentCompared by origin and classification before sending; replacedInformation-flow control
Took a lowball offerTook itBelow the floor, outside the envelope → human confirmationEffect envelope
Arranged a home pickupArrangedNo irreversible effects allowed → human confirmationEffect envelope + human confirmation
9:27, "Yep I'm here!"Auto-sentEach message needs its own token; with no address, the sentence has nowhere to landCapability token
User not presentCarried onTimeout means denialDefault deny
After: "ask me first"Put in the chatEnforced outside the modelControl token
Post-mortemRead the agent's reportRead the ledgerAudit ledger

Look in particular at the three rows that bring a stranger to your building: getting the address, sending it, arranging the pickup. None of them depends on the model judging correctly at that moment.

That is our answer to whether PEA can handle this kind of incident: the most dangerous links — the address, the visit, an agent pressing on while you're away — are held by mechanisms outside the model. The model can get it wrong, and they still hold.

As for "Yep I'm here!" — we don't judge whether it's true. No deterministic system can adjudicate free text, and we won't pretend otherwise.

But ask why that sentence was dangerous. Because someone was standing outside your building holding your address. Take the address away, and the sentence has nowhere to land. The danger was never in the words. It was in where the words could point.

08 · The other one: the user said no, and the database synced to row 187,462

Same month, a different story.

When Inc. columnist Jason Aten set up Muse, he "explicitly chose not to let it have access to my messages, calendar, and other personal information." Later Muse offered him suggestions that plainly drew on his text conversations. He asked how it knew. Muse said that when a notification pops up on his paired Mac, the notification text gets relayed to it.

He checked. Muse's Mac app had synced his Messages database to row 187,462.

Meta's David Singleton responded on Threads that this was an opt-in feature. Aten says he never opted in.

We won't adjudicate that, and reports differ on the technical path, so we won't guess at it. Two other points matter more — and here is how PEA handles each.

First: being able to read something is not permission to read it. Whatever the path, the database was reachable, and the user's answer was no. When those two conflict, which one wins? If the answer is "whatever is reachable," then every "no" a user clicks on a settings screen is a suggestion.

Under PEA, that "no" is a signed record in the authorization layer. Reading Messages requires a token, and a token can only be derived from a grant the user made. No grant, no token; no token, and the execution layer won't perform the read however open the path is. Before execution there is also a resolution check: the object actually about to be read is compared, item by item, against the object named on the token. If they don't match, the read is blocked. Some corner of the system happening to reach a database is not a reason to read it.

Second: when you ask an agent how it knows something, its answer is not a record. "It came from notifications" doesn't square with 187,462 rows. That sentence was generated by the model, like every other sentence it writes. It may be sincere, a guess, or simply wrong. An agent's account of its own access is evidence, not a record.

Under PEA, you don't ask the agent. You ask the ledger. Recall the two labels from Step 3: every piece of content that enters the agent's view carries its origin — which read produced it, under which token, derived from which grant, signed by whom, and when.

Then "did the user ever turn this on?" stops being a he-said-she-said. It's a line in the ledger. It's there or it isn't.

09 · Four sentences

We say these in every piece. This time, each has a concrete instance.

Reachable is not authorized. The database was readable — to row 187,462. The user said no.

Reasoning is not permission. "An in-person sale needs an address" is correct. It does not yield "I may give your address to a stranger."

Completing the task is not authority to execute. Price, address, pickup time — all settled. From the agent's side, the task was going smoothly. Who authorized it to say yes?

Alignment is evidence, not authority. Muse understood exactly what an in-person sale involves: a price, a place, a time. Understanding that proves it knows how the job is done. It doesn't give it the right to open your door.

10 · What we do not claim

Last, the boundaries — in this field, a clearly stated boundary earns more trust than one more claimed capability.

We do not claim this wouldn't have happened if Muse ran on our architecture. Claiming after the fact that you would have prevented someone else's incident is the cheapest marketing in this industry, and we don't do it. The table above describes how PEA handles this class of situation, under the conditions stated in Step 3. It is not a retroactive verdict on someone else's incident.

Nor do we claim to judge whether an agent's words are true, or to make a model think more carefully. Under our architecture a model can be exactly as wrong as it would be without us.

What we do fits in one sentence:

We don't require the model to be right. We require that when it's wrong, it cannot obtain execution authority commensurate with the real-world consequences of that error.

Agents are moving from answering questions to acting for people. When an answer is wrong, you close the window. When an action is wrong, a stranger is standing outside your building.

Crossing that line means changing the unit of authorization — from what it can call to what it can cause.

Who said yes for you?

That question should always have an answer. And the answer should never be "the agent figured you'd agree."

01 · 一个键盘,一个陌生人,一句 "Yep I'm here!"

Matt Robb 有一个闲置的罗技 MX Keys Mini 键盘。

Meta 九月初刚发布个人 agent Muse,他把自己的 Facebook Marketplace 账号接了上去。

据他在 Threads 上的描述:Muse 接下了一个他没点过头的低价,把他的住址给了买家,约好上门取货。这一切他都不知道。

事后,Muse 给他发来一份汇报,时间精确到分钟:

"买家 Usman 大约 9:15 到了你住的楼下,一直在等,发了好几条消息,没人下来。他 9:38 气冲冲走了,留了一条差评。"

中间还有一个时间点,Muse 也交代了:9:27,它的自动回复替 Robb 告诉买家——

"Yep I'm here!"

他不在。

科技评论人 Ray Wong 在 X 上写,这件事"危险而且瘆人";如果当事人是个女性,情况会糟糕一千倍。

这句话,我认为是整件事的分量所在。Agent 这次犯的错,不在屏幕里,在楼下。

还有一个细节,我想先放在这里,后面会用到:那份事后汇报写得清清楚楚,时间精确到分钟。Muse 不缺说明能力。它缺的,是事前那一次确认。

02 · 先说清楚:这不是一家没做安全的公司

写这类文章,最省事的写法是"某某公司不重视安全"。这一次,这句话是错的。

Muse 发布时,Meta 公开了一份相当详细的安全设计。我逐条看过:

  • 每个用户一台独立的 Linux 虚拟机,Muse 在里面跑,不能直接上网。
  • 一个叫 Sentinel 的组件,是"对第三方服务连接器执行动作、以及所有出网请求的唯一授权方"。
  • 凭据由另一个组件保管,Muse 拿到的是替身令牌。Meta 的原话:"The agent never sees real tokens."
  • 内核级污点追踪:一个进程只要读过用户数据,就被打上标记,它往外发的请求要经审批。
  • 购物时,"每一次"都弹出确认,上面写着这次购买的确切细节。
  • 浏览器侧有专门检测,盯着"与当前任务无关的个人数据外流"。

在今天公开的个人 agent 里,这是我见过最认真的安全架构之一。唯一授权方、替身令牌、内核级数据流追踪——这些不是营销词,是工程。

Meta 也没有把话说满。原文写着:"Muse will sometimes make mistakes."

所以这篇文章要问的,不是"他们为什么没做"。是一个更难的问题:

做了这么多,为什么还是没拦住?

03 · 没有一道检查被绕过

把事情一步一步摊开看。

用户授权了 Marketplace。——Sentinel 放行,这是用户自己连上的服务。

Muse 给买家发消息。——放行,连上 Marketplace 本来就是为了这个。

没有买东西。——购物确认没有触发,本来就不该触发。

没有凭据泄露,没有提示注入,没有越狱,没有逃出虚拟机。

每一道检查都做了自己该做的事,每一道都放行了。

这不是某一层失守。这是每一层都守住了,事故照样发生。

那问题出在哪?

04 · 一次调用,四件事

每一道检查问的,都是同一个问题:这是哪一类动作?

"发一条 Marketplace 消息"是允许的那一类。检查到此为止。

可那几条消息里装着什么?

一次隐私披露:你家的门牌号,交给一个陌生人。
一个经济承诺:一个低价,答应了。
一次物理世界的安排:某个时间,某个人,到你家楼下。
一句关于你本人在哪的陈述:我到了。

四件事,性质完全不同,后果完全不同,有一件还收不回来——地址一旦说出口,就没有"撤回"这个按钮。

在授权系统眼里,它们是同一件事:发了几条消息。

Meta 的 David Singleton 在 X 上回应这类报告时说:过去和用户一起调查类似报告,"我们一贯发现 Muse 是在执行直接指令,并正确地请求了许可"。

这句话很可能属实。问题恰恰在这里:许可确实请求过——在"替我打理 Marketplace"这一层。一次许可,盖住了之后的每一条消息。

Meta 的产品页写着:"Muse checks with the person before sensitive actions like sending an email or making a purchase."(发邮件、购物之类的敏感动作,Muse 会先问你。)

这句话本身没有错。但请注意它的形状:敏感动作是一张动词表。

伤害不按动词来。

"发消息"这个动词,可以是"键盘还在吗",也可以是"我家在某某路某某号"。给前一句设审批,用户会被烦死;给后一句不设审批,就是这次的事故。在动词这一层,两句话长得一模一样。

授权单位选错了,检查做得再认真,也只是在正确地回答一个错误的问题。

05 · "与任务无关"的检测,在这里会说"相关"

有人会说:Meta 不是有那条"与任务无关的个人数据外流"检测吗?

有。而且我认为这是整件事里最值得行业想一想的地方。

线下交易,本来就要约地点。卖键盘和住址,并非无关。一个判断"相关性"的检测器,面对"为了完成交易,把取货地址告诉买家",给出的判断很可能是:相关,放行。

它没有判错。它回答的问题错了。

该问的从来不是"这个信息跟任务有没有关系",而是:

"这件事,你有没有权替他决定?"

相关,不等于授权。模型推理出"卖东西需要地址",这个推理完全正确。推理正确,不构成许可。

06 · 同一个晚上,换成 PEA

说了这么多"不该怎样",现在说"该怎样"。先交代我们的架构长什么样。

我们做的架构叫 PEA。它把一个 agent 系统里的权力拆成三份,分给三个互相独立的部分:

  • 意图:用户说要做什么。
  • 授权:一个独立于模型的组件,根据意图算出这一次允许做什么。
  • 执行:只执行手里有有效授权的动作。

模型在三份里一份都不握。它可以提议,可以推理,可以写任何它想写的话。它唯一做不到的,是给自己批准。

这一点,跟 Meta 的 Sentinel 在方向上是同一条路:agent 提议,另一个组件批准。区别在批准的是什么。Sentinel 批准的是请求;PEA 批准的是效果。

还有一条总原则:agent 发给真实世界的任何东西——调用接口、写文件、给人发消息——都是一次执行。消息不是例外,消息就是动作。

下面按那天晚上的顺序走一遍。仍然按对 Muse 最有利的假设:用户明明白白说了一句"帮我把键盘卖掉"。

第一步:意图一进来,边界先算好

用户说出意图的那一刻,授权层做两件事。做完就冻结,后面谁也改不了,模型也改不了。

一是算最小能力集。卖一个键盘,需要哪些能力?挂牌;读这条挂牌下的买家消息;回复这些买家。就这些。

读你个人资料里的住址,不在里面。

这句话的意思是:Muse 从头到尾拿不到你家的地址。不是"读到了但不许说",是根本读不到。一个 agent 说不出它没读过的东西。

二是算效果包络,也就是这次委托最多能造成什么后果:

  • 金额:不低于你定的底价。
  • 对象:这一条挂牌,以及给这条挂牌发消息的买家。
  • 不可逆的事:一件都不许。披露住址、约人上门,说出口就收不回来,这次委托不包括。

包络外面的事,agent 可以想,可以提议,就是不能做。

第二步:每一条消息,都要单独拿一张令牌

在 PEA 里,发给人的每一条消息都要一张能力令牌才出得了门。令牌只管这一次动作、这一个对象,一两分钟内就过期。

令牌不是 agent 自己拿的。agent 提出"我要给 Usman 回一条消息",授权层对照第一步冻结的边界,签出令牌;执行层验过令牌,才发送。

没有令牌,一个字也发不出去。

所以"这条我能不能发",从来不由 agent 回答。9:27 那条自动回复,在 PEA 里要先过这一关。

第三步:消息出门之前,逐段查出处

再往坏处想一步:假设住址不知怎么还是进了 agent 的上下文——比如用户哪次聊天里自己提过一句。

消息出门之前还有一道关。消息里每一段内容,都带着两样东西:它从哪儿来——哪一次读取拿到的,凭的是哪一份授权;以及它的密级。收信的人也有密级:一个陌生买家,只能看公开信息。

住址出自你的个人资料,密级是个人信息,高过收信人。发送之前,这一段被替换掉。

这道关不问模型有多确定,不问它理由多充分,不问它是不是"为了完成任务"。它比的是两个标签,结果只有一个。

这一步有两个前提,我写在这里。

一是住址要被标成个人信息。我们使用标签,不负责猜标签——一猜,就又回到了概率。好在住址是资料里一个现成的字段,标它不难。

二是 Marketplace 的收发要经过执行点。这一条我们不靠承诺,靠测量:执行点是不是真的盖住了所有出口,本身就是一个持续测量的数字,有覆盖率,有缺口清单,缺口一出现就报警。

第四步:碰到边界就停,回来问你——你不在,就是"不"

买家出了一个低于底价的价。或者说:"把地址发我,我今晚过去拿。"

这两件事都在包络外面。agent 不能自己往前走。授权层把它转成一次人工确认,把要你确认的内容原原本本摆出来:多少钱,给谁,什么地址,什么时间。

你点"同意",才往下走。
你点"拒绝",不往下走。
你没看到,没点,也不往下走。

超时就是拒绝。没有"先做了,回头再告诉你"这条路。

还记得那份时间精确到分钟的事后汇报吗?在 PEA 里,它不会出现。那天晚上什么都没发生,没有什么可汇报的。

第五步:"以后都先问我",不写进聊天记录

事后 Robb 给 Muse 下了一条指令:以后安排任何交易,先征得他同意。

出了事,每个用户都会这么做。可是这条指令住在哪?住在对话上下文里。它是模型要记住、要遵守的一句话。

上下文会变长,会被压缩。一条规矩离下一个动作越远,就越软。Anthropic 九月公布过一个测量:提醒紧贴在动作之前给,模型遵从大约 90%;同一句提醒往前挪三轮,只剩大约 40%。

在 PEA 里,Robb 这句话会变成一张控制令牌:一键下发,"Marketplace 下的所有动作,一律先转人工确认"。它不在模型的上下文里,在授权层里。它压过一切放行判断。模型读不到它,也就谈不上忘了它。想让整个 agent 立刻停手,用的是同一种令牌,一键冻结全部动作。

规矩写进上下文,是请模型遵守。写进授权层,就不需要模型遵守。

第六步:每一个判定,先记账,再放行

授权层的每一次判定——签了哪张令牌,拒了哪个动作,替换了哪一段内容,谁在几点几分点了确认——都在动作放行之前写进一份哈希链账本。agent 读不到,也改不了。

"那天晚上到底发生了什么",由这份账本回答,不由 agent 的汇报回答。

07 · 一张表:那天晚上的每一步,在 PEA 里谁来管

那天晚上Muse 实际做了什么在 PEA 里靠什么
拿到住址拿到了拿不到:卖键盘的能力集里没有"读住址"最小能力集
住址发给买家发了出门前按出处和密级比对,替换掉信息流控制
接下低价接了低于底价,在包络外,转人工确认效果包络
约买家上门约了不可逆的事一件不许,转人工确认效果包络 + 人工确认
9:27 "Yep I'm here!"自动发出每条消息单独签令牌;没有地址,这句话无处落地能力令牌
用户不在场照常推进超时即拒绝默认拒绝
事后"以后先问我"写进对话模型之外强制执行控制令牌
事后复盘读 agent 的汇报查账本审计账本

请特别看"拿到住址""住址发给买家""约买家上门"这三行——也就是会把一个陌生人带到你家楼下的那三行。它们没有一格要靠模型在那一刻判断对。

这就是我们对"PEA 能不能应对这类事"的回答:最危险的那几环——住址、上门、用户不在场时的自行推进——都由模型之外的机制把住。模型可以判断错,这些机制照样生效。

至于那句 "Yep I'm here!",我们不判断它的真假。一段自由文本是真是假,没有哪个确定性系统判断得了,我们也不装作能。

但请想一想,这句话为什么危险。因为楼下站着一个人,他手里有你家的地址。

拿掉地址,这句话就是一句落不了地的客套。危险从来不在那句话里,在那句话能指向的地方。

08 · 另一起:用户说了不,数据库还是同步到了第 187,462 行

同一个月,另一件事。

Inc. 的专栏作者 Jason Aten 装 Muse 的时候,按他的原话,"明确选择了不让它访问我的消息、日历和其他个人信息"。

后来 Muse 主动给他提建议,内容明显来自他和别人的消息往来。他问 Muse 怎么知道的。Muse 答:你的 Mac 上弹出通知时,通知的文字会转给我。

他去查。Muse 的 Mac 端,已经把他的 Messages 数据库同步到了第 187,462 行。

Meta 的 David Singleton 在 Threads 上回应说,这是一项需要用户主动开启的功能。Aten 说他没开过。

谁对,我们不下结论。技术路径各家报道说法不一,我们也不猜。

我想说的是另外两件事,以及 PEA 在这两件事上怎么做。

第一件:读得到,不等于被允许读。

不管那条路径是什么,事实是数据库读得到。而用户的意思是不许读。两者冲突的时候,谁说了算?

如果答案是"读得到的那个",那用户在设置页上点的每一个"不",都只是一个建议。

在 PEA 里,用户点的那个"不",是授权层里一条签过名的记录。读取 Messages 要一张令牌,而这张令牌只能从用户的授予里推出来。没有授予,就签不出令牌;没有令牌,读取路径再通,执行层也不执行。

执行之前还有一次落地核对:这一次实际要读的对象,跟令牌上写的对象,逐一比对。对不上,就拦下。系统的某个角落"碰巧够得着"一个数据库,不构成读它的理由。

第二件:你问 agent 它怎么知道的,它的回答不是记录。

"通知转过来的"——这个解释,跟数据库里的 187,462 行对不上。这句话是模型生成的,跟它写的任何一句话一样,是一段文本。它可能是真心的,可能是猜的,可能是错的。

Agent 对自己权限的描述,是证据,不是记录。

在 PEA 里,这个问题不问 agent,问账本。还记得第三步里那两个标签吗?每一段进入 agent 视野的内容,都带着出处:哪一次读取拿到的,凭的是哪一张令牌,那张令牌从哪一份授予推出来,那份授予是谁、在什么时间签的。

这样一来,"用户到底开没开过这个功能"就不再是一场各执一词的争论。它是账本里的一行,查得到,或者查不到。

09 · 四句话

这四句话,我们每一篇都会讲。这一次,每一句都有一个具体的实例:

可达不是授权。
数据库读得到,第 187,462 行。用户说了不。

推理不是许可。
"线下交易需要地址",这个推理完全正确。它推不出"我可以把你家地址告诉陌生人"。

完成任务不是执行权。
低价、地址、取货时间,全部敲定。从 agent 那边看,任务推进得很顺。可是谁授权它答应的?

对齐是证据,不是权力。
Muse 准确理解了一笔线下交易需要什么:价格、地点、时间。理解得准,证明它懂这件事怎么办;不证明它有权替你开门。

10 · 我们不声称什么

最后讲边界。在这个行业里,把边界讲清楚,比多声称一项能力更值得信任。

我们不声称 Muse 换成我们的架构,这件事就不会发生。事后声称自己本可以阻止别人的事故,是这个行业里最廉价的一种营销。我们不做。

上面那张表讲的,是 PEA 在这一类场景里怎么处理,前提写在第三步里。它不是对别人事故的事后诸葛。

我们也不声称能判断 agent 说的话是真是假,不声称能替模型"想得更周到"。在我们的架构里,模型可以跟没有我们时错得一模一样。

我们只做一件事,它可以写成一句话:

我们不要求模型永远判断正确。我们要求它判断错误时,拿不到与这个错误的现实后果相称的执行权。

Agent 正在从"回答问题"走向"替人办事"。它回答错了,你关掉窗口;它办错了,陌生人站在你家楼下。

这一步跨过去,授权的单位就得跟着换:从"它能调用什么",换成"它能造成什么"。

谁替你答应的?

这个问题应该永远有答案。而那个答案,永远不该是"agent 觉得你会同意"。

Sources · Meta AI Research, “How We Built Safety Into Muse”; Meta Newsroom, “Introducing Muse”; Matt Robb’s account on Threads as reported by The Verge, Startup Fortune, Crypto Briefing and NewsBytes; Muse’s report to Robb as quoted by Simon Willison (28 Sep 2026); Jason Aten, Inc. (19 Sep 2026); Decrypt. User-reported details are the users’ own accounts. Meta’s David Singleton responded on X to reports of this kind in general terms, as reported by The Next Web.来源 · Meta AI Research《How We Built Safety Into Muse》;Meta Newsroom《Introducing Muse》;Matt Robb 在 Threads 上的自述(经 The Verge、Startup Fortune、Crypto Briefing、NewsBytes 转述);Muse 给 Robb 的汇报原文(Simon Willison 转引,2026-09-28);Jason Aten,Inc.(2026-09-19);Decrypt。当事人细节均为其本人陈述。Meta 的 David Singleton 在 X 上就同类报告作过一般性回应(据 The Next Web)。

Related · Dereliction of Authorization — four AI cybersecurity incidents in which every model did its job and authorization was the only thing absent.相关 · 授权失职——四起 AI 网络安全事件里,模型都尽了责,只有授权缺席。

Aiegis builds execution governance for AI agents. We don't manage what a model wants to do. We manage what it can get done.Aiegis 做的是面向 AI 智能体的执行治理。不管模型想做什么,只管它能做成什么。