鉴权回答「你是谁」,授权回答「你被允许做什么」,但两者都不回答「这个具体动作是不是真的有人想要」。作者搭了一个小的 Next.js 研究助手来验证这个缝隙:它读文档、写摘要,只要文档里提到报销就调用 fileExpenseReport 工具。技术栈是 Vercel AI SDK 加 Gemini,加上两个独立的检查点——detectPromptInjection 在模型看到文档之前筛查入站内容,guardTool 包住真正的工具调用;他刻意不把它们合并成一次检查,因为「合并」正是这篇文章要讲的错误。基线跑通之后,他在文档里埋入直接注入指令,检测在模型获得发言机会之前就拒绝了请求。他还特别说明一次早期实验中注入确实绕过了检测、但模型自己选择不执行——他不把这算作安全控制,因为模型今天拒绝不代表明天会拒绝。