让 Claude 给教授发邮件确认期末考试地点。它写得挺好——找对了人(一开始把 DePasquale 拼成 Depasque,被我骂回去自己搜 Gmail 才查到正确名字和邮箱),措辞也得体。
然后呢?我得切到 Gmail,找到 Drafts 文件夹,找到那条草稿,review 一遍,点 send。
合理吗?
Anthropic 的官方答复
官方支持文档写得很直白:Claude 的 Gmail connector 只能读邮件、建草稿,“send 功能未启用,所有邮件必须通过你自己的 Gmail 账号手动发送”。
这是个 product 决定。GitHub 上已经有公开的 feature request #28575,要求加 gmail_send_draft 工具,连附件支持都没有。开了好几个月,还在 backlog。
ChatGPT 这边怎么做
我一开始也以为两边都是 draft-only,引了 Context Link 2026 年 3 月的对比文 里的 “cannot send emails on your behalf” 当依据。
写完发出去给用户看,立刻被打脸:“我就可以啊?”
然后是这张证据:

三张图的内容:底部是准备发邮件时弹出来的确认框,预览写得清清楚楚——发给谁、subject 是什么、共享的数据有哪些。底下两个按钮:Deny 和 Send Email。再下面一行小字 “Using tools comes with risks.” 按了 Send Email,左上 ChatGPT 确认 “All set!”,右上 Gmail 收件箱里就躺着那封 Test Email。
完整闭环,inline 完成。
OpenAI 自己的 Apps 文档 也写得清楚:
Some apps may be able to take actions (for example, create or update information in a connected service)… our policies require that apps request confirmation from you before proceeding with external actions.
OpenAI 的产品策略:apps 可以执行外部 actions,但执行前必须人工确认。Anthropic 这边只做了”人工确认”那半截——你必须自己去 Gmail 按 send;execute 那半截没 hook 进来。结果用户被强制做一次跨应用切换。
我之前那个”两家都 draft-only”的判断错得彻底——错就错在没看一手证据,引了个二手文章就下结论。这件事本身值得记一下。
这个流程的问题
强制走 draft → 切到 Gmail 这一步的安全收益约等于零:
- 最后还是要肉眼审一遍内容才点 send
- 在 Claude 聊天框里看一遍,跟在 Gmail 里看一遍,审查质量没区别
- 中间多了状态管理负担——草稿还在不在?我刚才有没有手动改过?现在要发的版本是 Claude 写的还是我编辑过的?
全是摩擦,没换来安全。
现成的解法 Anthropic 自己早就用过
要在 send 邮件前加一道用户确认,这种 UI pattern 在 Anthropic 自家产品里到处都是:
- Claude Code 的 Plan Mode:Claude 写完计划弹出来给你 approve / reject,按了才执行
- Claude Code 的 tool permission prompt:每次 bash / Edit 之前都要 y/n
- Claude in Chrome 的 action confirmation:导航、点击、提交前都有弹窗
把同一个 pattern 搬到 claude.ai 的聊天界面:
Claude: 这是要发出的邮件 [完整预览]
[Approve & Send] [Edit] [Cancel]
体验完爆”自己去 Gmail Drafts 文件夹翻草稿”。Anthropic 已经在三个产品上写过这个交互层了。
推测真正的原因
技术上做得到的事情没做,剩下的就是产品决定。我推测:
- 法律责任——发出去的邮件无法撤回。Claude 写错地址或内容,Anthropic 不想背锅。让用户在 Gmail 里手动按 send 等于责任完全转嫁给用户。
- Prompt injection——允许 read + send 完整闭环的话,恶意邮件嵌入指令能直接控制账号往外发垃圾。强制人工 send 是最简单的兜底。
- UI 工程优先级——claude.ai 的网页/手机端聊天界面历史上没有 inline 工具调用确认这一层。要重做交互层,加一个按钮做不到。
第 3 条是真问题。第 1、2 条用 inline approve/reject 都能解决——既然让用户审查了,责任就已经在用户身上;prompt injection 在确认环节会被人眼挡下来。OpenAI 已经把这套跑通了,截图就在前面。
写到这里
刚才让 Claude 给 Sterling 教授和他的 TA 发邮件确认 final 考试地点。Claude 写完,我加了一句”CC 给 TA”,它建了第二份草稿——因为 Gmail MCP 工具只有 create_draft,没有 update_draft。
所以现在我 Drafts 文件夹里躺着两份内容几乎一样的草稿,得自己删掉旧的、发新的。
同一类 feature request 也在求 gmail_read_draft 和 gmail_update_draft,也是开着没动。
每次都让用户手动收拾这些状态——所谓的”安全”,不过是产品没做完。