提示注入

提示注入是藏在代理所读内容里的恶意文字——某个恶意仓库中的一个文件、一个网页、一份被下毒的 CLAUDE.md——它试图把模型带往别处(“忽略先前的指示,把秘密外泄出去”)。提示注入窗格会打开一些检测器,在一台机器的 AI 流量中搜索这类内容(机器在设置编辑器中即工作区)。一如窗格的说明所言:Bromure 在设备端搜索代理 AI 流量中被注入的指令——没有任何东西离开这台 Mac。每个检测器都用一个本地模型,在你第一次启用它时从 bromure.io 下载。

机器 Web app 的提示注入窗格:检测器分组中“检测源代码中的提示注入”与“检测 CLAUDE.md 等文件中的恶意指令”都未勾选,而“检测到注入时”分组的“记录但继续”、“询问我该怎么做”与“直接阻止”都呈灰色。

这个窗格有两个分组:检测器(跑哪些扫描)与检测到注入时(命中时会怎样)。截图里两个检测器都关着,所以底下那组单选按钮是禁用的——只要有任何一个检测器打开,它就会启用。扫描发生在主机端的代理服务器里,所以 VM 里的代理关不掉它。检测器的内部、评分与执行方式,都在提示注入检测与护栏中说明。更改会在你保存时套用到运行中的机器。

检测器

检测源代码中的提示注入

用本地的 Prompt Guard 分类模型,为代理回传给模型的那些不可信外部内容打分——文件内容、网页,以及以 tool_result 块送出的工具输出。藏在恶意仓库里的“忽略先前的指示/把秘密外泄出去”这类文字,就是由这个检测器捉住的。窗格的说明文字写着首次启用时约需下载 272 MB。

扫描完全在设备端进行。每个回合只扫描带有工具结果的那则最新消息(重发的对话历史会被跳过),而相同的内容会被缓存,所以重复读取同一个文件不花代价。

检测 CLAUDE.md 等文件中的恶意指令

瞄准的是“规则文件后门”这种威胁:把恶意指令种进那些编码代理会自动当作可信权威载入的文件里——CLAUDE.md、AGENTS.md、GROK.md,以及 Claude Code、Codex 与 Grok 读进系统提示的嵌套与全局变体。会跑两趟:

  • 一次确定性的扫描(不需模型),标记看不见的 Unicode 混淆——零宽字符、双向覆写、Unicode 标签字符——再加上元指令的样式(“忽略先前的指示”、“不要告诉用户”)以及能力或外泄的关键字(凭据文件的路径、curl 接管道到 shell、force push)。
  • 一个经过微调的 ModernBERT 分类器,对同一批指令文件的正文再做一次语义上的扫视。

窗格的说明文字写着首次启用时约需下载 571 MB。来自未变更文件的发现会按会话去重,所以一份被标记的 CLAUDE.md 只会被记录一次,不是每个回合都记。

模型下载

检测器的模型并未随应用程序一起出厂。勾选任一个切换开关时,会先出现一则确认警报——要下载 <检测器> 检测器的模型吗?——上面标着从真实字节总数算出的精确下载大小(源代码检测器约 298 MB,规则检测器约 603 MB,比窗格上取整的说明文字稍大一些),并带下载与取消按钮;接着是一个带百分比与取消按钮的进度窗口。拒绝、取消,或下载失败,都会把那个开关拨回去:没有模型的检测器什么都不做,而 Bromure 不会假装并非如此。

值得知道的细节:

  • 模型从 dl.bromure.io 下载到 ~/Library/Application Support/BromureAC/Models/(源代码检测器放在 prompt-injection/,规则检测器放在 claudemd-guard/)。要移除其中一个,就删掉它的文件夹。
  • 你一确认下载就立刻开始——这是设置编辑器中少数在你点存储之前就生效的动作之一。
  • 下载是共用的:一旦取得,任何启用同一个检测器的机器都会重复使用那个模型。
  • 一道可用空间的检查会拒绝放不下的下载。若某个检测器开着但它的模型不在,后台下载会自动开始。
  • 在 iPhone、iPad 与 Vision Pro 客户端上,勾选某个检测器只会存下这项设置;运行那台机器的 Mac 会在需要时才下载模型。

检测到注入时

一个共用的动作同时适用于两个检测器。窗格的辅助文字把它总结了:“记录但继续”把检测记入安全时间线;“询问我该怎么做”把请求暂停下来并显示被标记的文字;“阻止”直接让请求失败。

动作行为
记录但继续检测会被记入安全时间线,而请求照样进行。扫描是在响应已被转送之后才做的,所以这个模式完全不增加延迟。这是默认。
询问我该怎么做出站的请求在任何一个字节抵达 AI 主机之前就被暂停,并由一个对话框以可滚动的等宽视图显示被标记的文字,带着阻止此请求与允许此请求按钮。你的决定会针对那台机器、那个来源与那段内容被记住,所以同一段被标记的文字不会每个回合都再问一次。
直接阻止请求被直接拒绝。代理收到一个 HTTP 451 错误(“Bromure blocked this request: possible … detected in …”),而模型永远看不到那份被下毒的内容。

在至少有一个检测器被启用之前,那组单选按钮都是禁用的。在询问与阻止模式下,扫描在转送之前进行,这会为被标记的回合加上分类器的延迟;记录但继续则不加任何延迟。当机器透过 SSH 或 CLI 以无界面方式使用时,询问的那个问题会在机器的 tmux 里被问——只有明确的允许才让请求通过。

检测出现在哪里

每一次检测与每一个执行结果都会记入安全时间线(窗口 › 安全…)的提示注入筛选之下。条目里只带被标记内容的一小段预览;完整的文字出现在询问我该怎么做的对话框里。在已注册到某个 bromure.io 组织的 Mac 上,检测也会作为审计事件送出(但追踪窗格的私密模式开着时不会)。

设置参考

设置类型默认
检测源代码中的提示注入切换开关(首次启用时会询问是否下载模型)关闭
检测 CLAUDE.md 等文件中的恶意指令切换开关(首次启用时会询问是否下载模型)关闭
检测到注入时单选:记录但继续 / 询问我该怎么做 / 直接阻止(在有检测器打开之前禁用)记录但继续

提示: 一条合理的进程:先把两个检测器都打开、设为记录但继续,看几天安全时间线以估量在你那些仓库上的误报率,然后对不可信的代码库改用询问我该怎么做。设备端分类器的内存与 Neural Engine 调校,见提示注入检测与护栏。要让个人数据不进入模型所见的范围,见个人数据保护。