Mingyu's Library主页

银行为什么拦外部 AI Agent:凭证代登录 vs 受限接入

Why Banks Block Outside AI Agents: Credential Login vs Scoped Access

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.

2026-10-19 · AI 每日简报深度学习
2026-10-19 · AI Daily deep dive

结论先说

The short version

两家美国大机构在同一周公开说:外部 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.

两家银行到底说了什么

What the two banks actually said

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.

两条路:代登录 vs 受限接入

Two paths: credential login vs scoped access

银行拦的是左边那条。留的是右边那条。区别不在「用不用 AI」,在「银行能不能知道、限制、撤销这个 Agent 的权力」。

做法 A:代登录(被拦的) 客户 外部 Agent 银行网站 交出账号密码 用客户身份登录 ✗ 银行看不出是人还是 Agent✗ 权限 = 客户的全部权限 做法 B:受限接入(被留的口子) 客户 授权服务器 外部 Agent 银行接口 / MCP 同意一次 短期 token 带 scope 请求 ✓ token 只写 accounts:read✓ 转账 scope 不发给它
图 1:左边 Agent 拿着客户的全部权力;右边 Agent 只拿到一张写明范围、会过期的 token。

代登录有三个问题。第一,银行看不出是人还是 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.

Path A: credential login (blocked) Client Outside agent Bank website hands over password logs in as the client ✗ Bank can't tell human from agent✗ Power = the client's full power Path B: scoped access (the door left open) Client Auth server Outside agent Bank API / MCP consents once short-lived token calls with scope ✓ token says accounts:read only✓ no transfer scope is issued
Figure 1: on the left the agent holds the client's full power; on the right it holds a token that states its scope and expires.

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.

「受限接入」在技术上长什么样

What "scoped access" looks like technically

银行没公开自己的接口细节,下面是通用标准和 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.

权限梯子:读、交易、转钱

The permission ladder: read, trade, move money

把两家的表态摆在一起,是一把三级梯子。越往上,出错的代价越大,银行放得越慢。

这几家现在给 Agent 的权限梯子 查询 / 研究读余额、做分析 下单交易Schwab:以后会有更多模型能做 转账 / 付款两家都说:不给 ← 已开放(只读,部分)← 未来可能(Schwab 原话方向)← 明确不给 JPMorgan:部分第三方可只读;不能转钱、不能付账单
图 2:查询最先放开,交易是 Schwab 说的方向,转钱两家都明确不给。

这个分层对你设计自己的 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 permission ladder these firms offer to agents Look up / researchread balances, analyze Place tradesSchwab: more models will get this later Move money / pay billsBoth say no ← Open (read-only, some tools)← Possible later (Schwab's stated direction)← Explicitly not allowed JPMorgan: some third parties may read; no money movement, no bill pay
Figure 2: lookup opens first, trading is the direction Schwab described, and money movement is a no from both.

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.

如果你在做 Agent:五件事

If you build agents: five things

  • 别存用户密码,也别让 Agent 驱动浏览器登录别人的账号。这是被拦的那条路,而且 Schwab 明确点名了「浏览器自动化」。
  • 优先找对方官方开放的接口或 MCP server;没有的话,把「这个系统不支持 Agent」当作产品限制写进文档,不要硬绕。
  • 每个 Agent 有自己的身份(独立 OAuth client),日志里能回答「这次调用是哪个 Agent、代表哪个用户」。
  • 读写分 scope;写操作短期 token、人工确认。授权失败(401/403)就停,不换别的凭证重试,也不退回到服务账号。
  • 把撤销做成一键:撤一个 Agent(所有用户)或一个用户(所有 Agent)。

这五条里,第 3、4、5 条来自 WorkOS 的 Agent auth 清单;第 1、2 条是我从银行这次的表态里推的,属于我的判断。

  • Don't store user passwords, and don't have the agent drive a browser to log in to someone else's account. That's the blocked path, and Schwab named browser automation explicitly.
  • Look for the other side's official interface or MCP server first. If none exists, write "this system doesn't support agents" into your docs as a product limit rather than working around it.
  • Give each agent its own identity (its own OAuth client), so your logs can answer "which agent made this call, on behalf of which user."
  • Split read and write scopes. Use short-lived tokens and human approval for writes. On an authorization failure (401/403), stop; don't retry with other credentials or fall back to a service account.
  • Make revocation one click: revoke one agent (across all users) or one user (across all agents).

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.

还没弄清楚的

What is still unclear

几件事我没查到: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.

小词典

Glossary

scope
token 允许做什么的范围,比如 accounts:read。范围越窄,Agent 出错或被劫持时损失越小。
token exchange (RFC 8693)
拿一个宽权限的 token 去换一个窄权限、短有效期的 token。
DPoP (RFC 9449)
把 token 绑定到客户端的私钥,别人偷到 token 也不能用。
step-up
当前权限不够时,重新走一次授权,拿更高的权限。
MCP
Model Context Protocol,让模型调用外部工具和数据的一套开放协议。
scope
What a token is allowed to do, for example accounts:read. The narrower it is, the less you lose when an agent errs or is hijacked.
token exchange (RFC 8693)
Trade a broad token for a narrow, short-lived one.
DPoP (RFC 9449)
Binds a token to the client's private key, so a stolen token can't be used by someone else.
step-up
When current permission isn't enough, run authorization again to get a higher level.
MCP
Model Context Protocol, an open protocol for letting models call external tools and data.

来源

Sources