主页
Schwab 和 JPMorgan 同一周公开表态。拦的是什么,留的是什么,做 Agent 的人该怎么办。
Schwab and JPMorgan spoke up in the same week. What they block, what they leave open, and what agent builders should do.
两家美国大机构在同一周公开说:外部 AI Agent 想拿客户的账号密码代登录、动客户的钱,不行。但它们都留了口子:只读查看、通过 MCP 接口做查询研究。
这对做 Agent 的人意味着一件事:接金融类系统,别指望「模拟用户登录」这条路。要走银行愿意开的受限接口,并且把「只读」和「能动钱」分开设计。
Two big US institutions said the same thing in the same week: an outside AI agent that logs in with a client's password and moves the client's money is not allowed. Both left a door open, though: read-only views, and lookup/research through an MCP interface.
If you build agents, the takeaway is simple. Don't count on "pretend to be the user and log in" for financial systems. Build for the narrower interfaces banks are willing to open, and design "read" and "move money" as two separate things.
Schwab。CEO Rick Wurster 对 Bloomberg Television 说,Schwab 会拦截未经授权的外部 Agent(包括 Meta 的 Muse)去动客户的钱。他最担心的是客户把登录凭证交给 Agent。他的原话大意是:我们控制不了,客户也控制不了,出了事谁负责?据 The Next Web,Schwab 每周收到拦截报告,被拦的大型 Agent「几十个」;American Banker 的说法则是这类拦截「很少」,因为大多数客户不这样用 AI。两家报道的口径不一样,我不替它们调和。
Schwab 给的替代方案有两个:一是自家助手 Charley(9 月 30 日发布,基于外部大模型和 Schwab 自己的数据);二是 The Next Web 提到的 MCP server,让客户自选的模型查余额、做研究,但不能转钱。American Banker 补充:客户用自己的 LLM(比如 ChatGPT)连 Schwab 能完成部分交易,以后会有更多模型能「交易」,但转钱不会开放。
JPMorgan。Jamie Dimon 在财报电话会上说,银行不会让「随便什么外部 Agent」进入内部系统,「对客户和对 JPMorgan 都太危险」,还说「你不想要流氓 Agent,而且可能是成千上万个」。发言人对 CNBC 的说法是:不允许第三方用客户的银行凭证替客户登录。Cybernews 报道:像 Muse 这样的第三方 Agent 可以只读查看部分账户数据,不能转钱或付账单。
Schwab. CEO Rick Wurster told Bloomberg Television that Schwab blocks unauthorized outside agents, Meta's Muse included, from moving client money. His main worry is clients handing their login credentials to an agent. Roughly: we can't control it, the client can't control it, so who is liable if something goes wrong? According to The Next Web, Schwab gets a weekly report on blocks and sees large agents stopped "in the tens and twenties" a week. American Banker says such blocks are rare because most clients don't use AI that way. The two reports differ in tone, and I won't smooth that over.
Schwab offers two alternatives. One is its own assistant, Charley (announced September 30, built on outside LLMs and Schwab's own data). The other, per The Next Web, is MCP servers that let a client's chosen model check balances and do research, but not move money. American Banker adds that clients can use their own LLM, such as ChatGPT, to connect to Schwab and complete some transactions, and that more models will be able to trade later, but money movement will not be opened up.
JPMorgan. Jamie Dimon said on the earnings call that the bank won't let "just any outside agent" operate inside its systems, because it is "too risky for clients and for JPMorgan." He added, "You don't want rogue agents, and it could be thousands of them." A spokeswoman told CNBC the bank does not allow third parties to log in with customers' banking credentials. Cybernews reports that third-party agents such as Muse can view some account data read-only, but cannot move money or pay bills.
银行拦的是左边那条。留的是右边那条。区别不在「用不用 AI」,在「银行能不能知道、限制、撤销这个 Agent 的权力」。
代登录有三个问题。第一,银行看不出是人还是 Agent(Schwab 说的是「Agent 来我们网站,替客户登录」)。第二,Agent 一旦拿到密码,权限就是客户的全部权限,没法只给「看」不给「转」。第三,出事了责任归谁没人说得清,Wurster 问的就是这个。
The banks are blocking the left path and leaving the right one open. The difference isn't "AI or no AI." It's whether the bank can know about, limit, and revoke the agent's power.
Credential login has three problems. The bank can't tell a human from an agent (Schwab's phrase was an agent "coming to our site and trying to log in on behalf of a client"). Once the agent has the password, its power is the client's full power, so you can't give "look" without "move." And nobody can say who is liable when it goes wrong, which is exactly Wurster's question.
银行没公开自己的接口细节,下面是通用标准和 MCP 规范里的做法,不是 Schwab 或 JPMorgan 的实现(这点我没查到)。
MCP 的授权规范(draft)要求:MCP server 实现 OAuth 2.0 Protected Resource Metadata(RFC 9728),客户端发请求时必须带 resource 参数(RFC 8707),让 token 只对这一个服务有效;token 必须放在 Authorization: Bearer 头里,不能放 URL。权限不够时,服务器返回 403 加 insufficient_scope,客户端再走 step-up(升级授权)流程。
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer error="insufficient_scope",
scope="files:write",
resource_metadata="https://mcp.example.com/.well-known/oauth-protected-resource"
在这之上,行业文章里常见的几条加固:用 RFC 8693 token exchange 把用户的宽 token 换成窄的、几分钟过期的任务 token;用 DPoP(RFC 9449)把 token 绑到客户端私钥,偷到 token 也用不了;高风险动作(付款、改权限)要求人工确认;每次工具调用在运行时做策略判断,而不是只在发 token 时判断。以上来自 WorkOS 和 Zylos 的指南,是社区做法,不是银行披露的。
The banks haven't published their interface details. What follows is the general standards and the MCP spec, not Schwab's or JPMorgan's implementation (I couldn't find that).
The MCP authorization spec (draft) requires MCP servers to implement OAuth 2.0 Protected Resource Metadata (RFC 9728). Clients must send a resource parameter (RFC 8707) so a token is valid for one service only. Tokens go in the Authorization: Bearer header, never in the URL. When scope is not enough, the server returns 403 with insufficient_scope, and the client runs a step-up flow.
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer error="insufficient_scope",
scope="files:write",
resource_metadata="https://mcp.example.com/.well-known/oauth-protected-resource"
On top of that, industry guides commonly add a few hardening steps. Use RFC 8693 token exchange to trade the user's broad token for a narrow, minutes-long task token. Use DPoP (RFC 9449) to bind a token to the client's private key, so a stolen token is useless. Require human approval for high-risk actions (payments, permission changes). Evaluate every tool call against policy at runtime, not only when the token is issued. These come from the WorkOS and Zylos guides; they are community practice, not something the banks disclosed.
把两家的表态摆在一起,是一把三级梯子。越往上,出错的代价越大,银行放得越慢。
这个分层对你设计自己的 Agent 产品也适用:把「只读工具」和「有副作用的工具」拆成不同的 scope,甚至不同的 server。读的 scope 可以宽松发,写的 scope 单独申请、短期有效、需要人点头。
Put the two statements side by side and you get a three-step ladder. The higher the step, the costlier a mistake, and the slower the banks open it.
The same layering works for your own agent product. Split read-only tools from side-effect tools into different scopes, or even different servers. Hand out read scopes freely; make write scopes a separate request, short-lived, and gated by a human.
这五条里,第 3、4、5 条来自 WorkOS 的 Agent auth 清单;第 1、2 条是我从银行这次的表态里推的,属于我的判断。
Items 3, 4 and 5 come from the WorkOS agent-auth checklist. Items 1 and 2 are my inference from what the banks said, so treat them as my judgment.
几件事我没查到:Schwab 和 JPMorgan 具体怎么识别 Agent(American Banker 那篇没写);银行说的「MCP server」是已经上线还是计划;责任归属在法律上怎么算(The Next Web 说美国国会还在讨论)。
另外要留意动机。分析师 Tim Welsh 对 American Banker 说:「外部 Agent 为客户工作,Charley 为 Schwab 工作。」Schwab 第三季净利息收入约 34.8 亿美元,很大一块来自约 4930 亿美元的现金清扫账户。安全理由是真的,商业利益也是真的,两者可以同时成立。
最后,这几篇报道里的拦截数字和表态,都是转述 CEO 对媒体说的话,没有银行自己的原始文档,我没看到。
A few things I couldn't find: how Schwab and JPMorgan actually detect agents (the American Banker piece doesn't say); whether the "MCP servers" Schwab mentioned are live or planned; and how liability works legally (The Next Web says Congress is still debating it).
Keep motive in view too. Analyst Tim Welsh told American Banker: "An outside agent works for the client. Charley works for Schwab." Schwab reported about $3.48 billion in Q3 net interest revenue, much of it on roughly $493 billion in cash-sweep accounts. The security reasons are real, and so is the business interest. Both can be true.
Finally, the block counts and statements in these reports are secondhand accounts of what executives told the media. I didn't see any primary documents from the banks.
accounts:read。范围越窄,Agent 出错或被劫持时损失越小。accounts:read. The narrower it is, the less you lose when an agent errs or is hijacked.我没有读到银行的原始文件;文中所有引语都经过媒体转述。以原文为准。
I did not read any primary documents from the banks; every quote here is relayed by the press. Defer to the originals.