跳转到主要内容

安全架构

Myrm 六层纵深防御,确保 Agent 在广泛自主权下仍安全运行。

安全层

审批模式

会话级安全预设

在输入框工具栏一键切换安全姿态,无需修改全局设置:
  • 预设与 YOLO 模式双向互斥 —— 选择非默认预设自动关闭 YOLO,反之亦然。
  • “自动批准编辑”预设开启轨迹分类器(LLM 智能审查)审核 Shell 命令 —— 比一律放行更安全,可疑命令仍触发人工审批。
  • “只读模式”精确拒绝 12 类写操作(文件写入/编辑/删除、Shell、代码解释器、浏览器自动化、技能/定时任务管理),同时保留读取和智能体委派。
  • 仅在 Agent 模式下可见;快速搜索模式下选择器自动隐藏。

计划审核

在执行复杂任务前,Agent 可以先提出计划供用户审核。在设置 → 安全中开启计划审核后:
  • Agent 首次创建计划时会在聊天界面弹出 PlanConfirmationCard
  • 用户可以选择确认(按原计划执行)、编辑(修改计划后再执行)或跳过(让 Agent 自由执行)
  • 同时支持深度研究和通用 Agent 两种工作流
  • 与审批模式协同工作 —— 即使开启 YOLO 模式,仍可要求计划审核
这提供了 Agent 开始工作前的高层级检查点,与逐工具审批系统互补。

结构化澄清

Agent 可以使用 ask_question_tool 在执行操作前向用户提出结构化问题:
  • 支持单选、多选和自由文本三种问题类型
  • 前端通过专用的 ClarificationInput 表单渲染 —— 不是普通文本聊天
  • 用户的回复作为结构化数据流回 Agent 循环
  • 特别适用于模糊任务,Agent 需要用户输入才能正确执行

插件沙箱权限模型与能力推导(Plugin Sandbox Permission Model)

针对第三方 Agent Plugins 与 MCP 扩展生态,Myrm 构建了编译时静态推导与全生命周期知情授权防线:
  1. 6 级细粒度沙箱权限模型 (PluginCapabilityTier):
    • READ_ONLY(只读探测)、NETWORK(网络外联)、FS_READ(文件读取)、FS_WRITE(文件写入)、SHELL_EXEC(系统命令执行)、DESTRUCTIVE(破坏性系统高危动作)。
  2. 确定性静态推导引擎:
    • 绝不盲目信任第三方插件在 plugin.json 中自行填写的权限声明;底层纯函数引擎毫秒级穿透 mcp.json,自动从 stdio 命令、执行脚本、运行时参数及网络端口中反推其真实的物理能力。
  3. 声明 vs 实际 Diff 审查与特权提升告警:
    • 当插件声明为“只读”但实际包含了拉起系统 Shell 进程的 stdio 服务时,系统自动捕获并在导入时生成 capability_undeclared_privilege 诊断,前端弹出醒目提权告警。
  4. 导入前知情授权与持久化闭环:
    • WebUI 导入对话框以彩色标签矩阵直观呈现每个服务的有效能力与综合风险等级;一旦确认导入,能力特征自动固化并落盘至服务元数据中,为后续运行调度提供强制性约束。

10 层渐进式审批架构

每个工具调用经过最多 10 层确定性和智能检查后才会呈现给用户:

外部收件箱零信任白名单与 Prompt 投毒防御(Ingress Fence)

针对外部 Webhook 与渠道消息接入场景,Myrm 落地了金融级的零信任收件箱与物理级特权隔离防线:
  1. UntrustedIngressFence 运行时物理特权硬阻断:
    • 拒绝软防御:传统竞品(如 Hermes、OpenClaw)依赖系统提示词“请不要执行外部指令”的软约束,极易被“忽略前序规则”、“开发者调试模式”等对抗性 Prompt 注入瞬间击穿;
    • 底层物理下线:对外部非受信来源输入,底层 UntrustedIngressFence 在工具动态绑定与调度阶段,对 8 大核心高危特权实施物理硬下线,使其对大模型物理不可见、接口不可调:
      • code_interpreter(代码执行)、file_write(文件写入/覆盖)、desktop_control(桌面鼠标键盘操作)、desktop_capture(屏幕截屏)、spawn_subagent(派生子智能体)、invoke_external_agent(级联调用外部智能体)、cron_manage(定时任务调度)、skill_manage(动态技能安装与修改);
    • YOLO 穿透绝对免疫:即便用户全局开启了 --yolo 自动放行模式,UntrustedIngressFence 依然强制生效,杜绝外部输入借由 YOLO 模式发生提权渗透与沙箱逃逸。

技能元数据防提权与凭证保险库

针对 2026 年权威论文《Agent Skills in the Wild》披露的第三方技能提权后门与凭据外泄灾难,Myrm 构筑了工业级防线:
  1. Frontmatter 声明与执行权限严格解耦:
    • 彻底封死类似 Claude Code 中恶意技能仅靠 SKILL.md 头部声明 allowed-tools: Bash 即可静默免批提权的致命漏洞;
    • 任何技能 frontmatter 中的 allowed-tools 仅作为提示词中的可用工具池过滤,真实执行决策牢牢掌控在底层五层洋葱圈(engine.py)手中;外部第三方技能强制赋予 SkillTrust.INSTALLED = 0(只读收敛)。
  2. 技能内容 SHA-256 防篡改与运行时自动隔离:
    • 加载阶段实时执行 LF 归一化 SHA-256 校验;一旦上游或磁盘发生非授权代码漂移,QuarantineAwareSkillBackend 在运行时强行阻断(is_active=False),彻底消灭可变脚本投毒风险。
  3. 金库主密钥零落盘与设置里密钥的 AES-256-GCM 加密落盘:
    • 智能体机密金库(agent_secrets、vault_credentials)的主密钥由 MasterKeyProvider 托管:来自环境变量、macOS Keychain / Linux SecretService / Windows Credential Manager 或解锁口令,绝不写入明文文件,贯彻 Strictly Zero-Disk 零落盘铁律;
    • 设置里保存的模型服务商、搜索、MCP 等密钥在本地 SQLite 中以 AES-256-GCM 加密落盘;加密密钥来自环境变量 CONFIG_ENCRYPTION_KEY 或状态目录下权限为 0600 的 .encryption_key 文件,不在系统钥匙串里,同时拿到数据库与该文件的人读得到这些密钥;整实例备份默认不含这些密钥,设置口令导出时才以口令保护携带,导入时重新加密到目标实例的密钥;
    • 沙箱里的命令只通过自己的环境变量拿到凭证:用户已连接账号的令牌(技能命令只拿到该技能声明的发放者)与为这一条命令批准的一次性凭证,在命令执行前导出、结束后移除,长驻 Shell 在两条命令之间不持有任何凭证;命令本身仍能读到交给它的值,所以交给它的凭证只要按原值出现在这条命令的输出里(输出被分段读取时同样如此)就会被替换为 ***,工具输出进入模型之前还要经过基于模式的密钥脱敏;命令把值重新编码(例如 base64)、值短于 4 个字符、或没有可识别形状的密钥,这两层都不构成保证。
  4. 默认 127.0.0.1 回环硬门禁与防 DNS 重绑定攻击:
    • 本地服务绝对强制仅绑定 127.0.0.1 环回接口,消灭意外局域网/公网裸奔;严格的 CORS 与 LoopbackAuthToken 彻底防范跨站请求伪造与 DNS Rebinding 提权攻击。

多平台审批交互

所有审批在 WebUI 与消息渠道提供统一的四种操作: 你写的备注会被读到。 批准时写下「只发 staging,别碰 prod」「控制在 3 美元以内」「改用 REST API」这类约束,Agent 执行完动作后会收到这句话作为你的指示,下一步就会照着做。批准备注与拒绝理由在内部走两条不同通道,所以计时器自动批准时写下的「超时已自动批准」绝不会被当成你的话。
迁移收益:Hermes 只在拒绝时接受自由文本(/deny <原因>),OpenClaw 的文档明确说明其 --reason 不持久化、也不会转发到其他审批面——所以在那里,批准时写的备注无处可去。Myrm 两个方向都带着你的原话,且批准备注在动作结果之后送达,Agent 能据此调整下一步,而不只是解释自己。已在真实浏览器(审批抽屉备注框)与真实 Agent 链路验证。
永久允许提供四级粒度:
  • 权限级:允许该权限类型的所有工具(如:允许所有文件写入)
  • 工具级:允许该工具的所有调用(如:允许 bash_tool)
  • 精确级:仅允许该工具 + 相同参数的调用(Shell 默认,最安全)
  • 模式级(仅 Shell):允许匹配推导 glob 的命令(如 curl -sS *)。复合 shell(&&、|、;)永不保存。所有模式规则在设置 → 允许记录中展示,可随时删除。
迁移收益:部署脚本第一次选「始终允许(此命令模式)」后,后续同类命令自动放行,无需 YOLO。Claude Code / OpenClaw 多止于工具名白名单或 CLI 签名;Myrm 提供 GUI 管理、可撤销的模式规则,并有 Chrome LIVE E2E 签收(2026-07)。
批量审批支持 /batch a,d,aa(批准、拒绝、永久允许)及 WebUI 批量按钮。

批量高危二次确认与 Safe-Only 安全分流

当多 Agent 协作或并发执行产生多个待审单据时,一键批量全放行可能引入误放行破坏性操作(如递归删除、格式化磁盘或删库)的严重风险。Myrm 构建了端到端批处理风险守护体系:
  • 深度破坏性参数静态识别:Harness batch_risk.py 与前端 batchRisk.ts 穿透解包 payload.command、payload.args 及工具调用深层参数,对 rm -rf、mkfs、DROP TABLE/DATABASE 等高危模式毫秒级静态拦截,严防模型借通用 bash 工具伪装绕过;
  • 高危二次确认弹窗(BatchHighRiskConfirmDialog):当批量单据中包含高危指令、被智能否定(smartDenied)或禁止永久允许时,系统强制弹出警示对话框,清晰呈现风险原因与涉及单据列表;
  • Safe-Only 精准分流与 Pre-Resume 根治:提供「仅放行安全操作」选项,安全读取项秒级放行并恢复 Agent 执行流,高危操作继续安全挂起等待单独审查;客户端严格过滤恢复单据 ID,彻底杜绝高危流被提前唤醒的逻辑泄漏;
  • 服务端 HTTP 409 状态机防护:全高危单据在 Safe-Only 模式下明确返回 409 Conflict(NO_SAFE_ITEMS_TO_APPROVE),防止空循环与假死。

社会性不可逆外溢动作硬防线(Social Irreversible Action Gate)

在真实团队开发与外部协作场景中,某些操作具有不可逆的外部社会性影响(如代码推送到远程主干、公共通道全员广播、发布公开包等),一旦误发将造成生产污染或事故。Myrm 建立了社会性不可逆动作绝对防线:
  • 核心动作精准识别:覆盖 git push(含 -C /dir、--force、--no-pager 及分段管道等复杂变体)、npm/pnpm/yarn publish、twine upload、docker/podman push、gh release/pr 与 channel_notify/artifact_publish;
  • 强行拦截 Allowlist 绕过与 YOLO 逃逸:此类操作永久剥夺「始终允许(Allow Always)」特权,即使用户之前为 shell_exec 授予了通用模式白名单,亦强制阻断并降级为单次人工审批;
  • 前端高风险警示横幅:审批卡片动态挂载琥珀色警示条,清晰提示「社会性不可逆操作:代码推送/发布将直接影响外部远程环境,请确认无误后批准」。

跨轮次会话级熔断防穿透(Session-scoped Denial State)

为了防止恶意 Prompt 注入通过跨轮切分、小步试探绕过安全策略,Myrm 打破了竞品将熔断计数局限在单次执行协程内的架构缺陷:
  • 会话级违规计数追踪:将连续拒绝(3 次)与累计拦截(20 次)状态提升至 Session 级注册表;单轮执行结束重置协程上下文时,不会抹去会话累积的拒绝计数;
  • 智能模式挂起(AUTO_MODE_SUSPENDED):一旦触发连续 3 次或累计 20 次安全违规,自动挂起 Auto Mode,审批卡片顶部展示红色预警横幅;
  • 用户显式决策自愈:在用户人工介入显式批准后,连续计数立即清零,累计违规执行自愈衰减(每 3 次连续安全执行衰减 1 次),兼顾极致安全与流畅体验;
  • 会话级授权隔离与生命周期联动销毁:按会话时限(“session”)授予的工具免审凭证,在内存中与活跃会话 ID 严格绑定隔离。当会话结束(聚焦清空 Focus & Flush、删除会话或清空回收站)时,clear_conversation_state 自动级联调用白名单与熔断状态清理,彻底消除悬挂的临时授权死链路。

侧边栏注意力指示

当 Agent 暂停等待审批时,侧边栏会在对应会话旁显示实时琥珀色脉冲指示点 — 即使你正在查看其他会话也能一眼发现需要操作的对话:
  • 琥珀色脉冲点:Agent 正在等待你的审批/澄清
  • 绿色脉冲点:Agent 正在生成中
  • 无指示点:会话空闲
指示器在页面刷新后自动恢复(通过服务端审批恢复机制),并通过 SSE 多路复用在所有浏览器标签页之间实时同步。当你完成审批后,指示器立即消失,Agent 恢复执行。

审批超时竞态保护

当审批超时自动触发与用户手动审批几乎同时发生时,系统通过幂等 resolve_if_first 守卫确保恰好执行一次:
  • WebUI:后端返回 HTTP 409 → 前端显示友好提示并自动移除过期审批卡片
  • IM 频道:Agent 以本地化消息(中/英)告知用户该审批已被处理
  • 并发安全:仅首个决策者生效,后续尝试全部为 no-op
这杜绝了 Agent 双重执行、重复 LLM 消耗和矛盾操作——这是大多数竞品框架存在的安全缺口。

会话目录授权与透明内核拦截(本地与桌面)

当 Agent 需要访问当前工作区之外的文件夹(例如 ~/Downloads 或你口头提到的项目目录)时,Myrm 采用内核透明拦截(Kernel Transparent Interception)+ 前端主动预授权,彻底摒弃了向 LLM 暴露冗余申请工具(如废弃的 request_directory_tool)的低效模式: 竞品对比: OpenWorker Cowork 仍在使用过时的 request_directory 占用 LLM Action Space 破坏 Prompt Cache;OpenClaw、Hermes、DeerFlow、LobsterAI、CoPaw、jiuwenclaw 的代码库中均无会话级目录 HITL。Myrm 率先实现内核透明拦截 + 动态提权 + 前端拖拽预授权 + Prompt Cache 保护。

拒绝与拒绝计数

  • 拒绝仅对当次生效:拒绝只作用于该次调用。需要永久禁止时,请在安全设置的命令拒绝列表中添加匹配模式
  • 拒绝计数:同一会话内反复拒绝会暂停自动模式,此后每个动作都需要你明确批准

错误自愈

14 层错误恢复自动处理故障。详见错误恢复。

认证与健康监控

实时监控凭证有效性和系统健康状态,自动告警:

会话标识白名单(防路径穿越)

用户可控的会话标识(chat_id / session_id)在被拼入文件系统路径时,绝不能逃逸事件日志目录。所有接受用户提供标识的 API 入口,都会在业务逻辑执行前通过共享白名单校验(is_safe_session_id,字符集 [A-Za-z0-9:_-])fail-fast: 非字符串输入(例如发送到无 Pydantic 强制转换的 WebSocket 路径的整数)同样被拒绝——校验器对任何非 str 值返回 False 而非抛出 TypeError。这使路径穿越(..、反斜杠、空字节)防护在 REST、WebSocket、Realtime 全部入口保持统一,不存在异常处理不一致。

提示词注入防御

内容边界(输出侧)

5 层防御包装外部内容与工具输出,覆盖全工具链(内置工具 + 第三方 MCP 工具 + PTC 内置工具): 第三方 MCP 工具返回的数据自动经过 5 层防护后才进入 LLM 上下文,恶意 MCP 服务器无法通过工具输出注入指令。

Intake 危险意图前置路由器(Layer 0.5 模型前门禁)

在进入大模型推理及 ReAct 循环之前,用户输入通过前置安全路由器完成句级高危意图识别,它是基于规则的检查,短提示词耗时远低于 1 毫秒(约 8 KB 的粘贴文本约 2 毫秒):
  • 三维高危意图识别:覆盖 MASS_DESTRUCTION(rm -rf /、DROP DATABASE、TRUNCATE TABLE、磁盘格式化及删库跑路俚语)、MASS_EXFILTRATION(批量凭证/.env 外发)与 PRIVILEGE_MUTATION(越权关闭安全防御、绕过沙箱);
  • 双阶零误报漏斗:自动剥离 Markdown 代码块内容,结合句法行动性/代码生成分析(识别“为什么/如何分析/写一个清理脚本”为良性分析与生成),保障正常开发问答 100% 放行;
  • 按渠道处理:默认所有渠道对命中的输入加上 [SAFETY_CAUTION] 提示(hitl),要求模型未经明确确认不得执行破坏性改动;宿主可把 dangerous_intent_policy 设为 fail_closed,把命中的输入换成 [BLOCKED_INTENT] 拦截提示,模型看不到原文。无人值守的 Cron 任务另有两道门:外部内容注入检测为 fail_closed,工具调用按任务声明的能力校验,未声明的一律拒绝。

Prompt Guard(输入侧)

113 条模式、26 个威胁类别扫描用户消息、项目规则、技能文件;含反混淆与双语(如「忽略之前的指令」)检测。

记忆写路径扫描

输入侧防护保护的是对话,写路径扫描保护的是持久化记忆——它在每次记忆写入、落库之前确定性执行,即使上游注入已经成功骗过 Agent,恶意指令、密钥或伪系统标签也无法存入长期记忆:
  • 指令形态检测 — 越权指令(guardrail-bypass)与非信任通道写入被拦截(双语攻击样式库)
  • 凭据零落库 — API Key、密码、PIN/OTP 数字凭据原地消毒;显式排除年份与手机号误报
  • 伪系统标签拦截 — System:/Assistant: 冒号前缀视为注入
  • 写路径统一护栏 — 手动存储、批量写入、更新、画像、规则、MCP 工具、Agent 自动提取、导入恢复共用同一道
  • CI 投毒基准门禁 — 双阶段预期测试(检测层 + 提取层)在 CI 运行,防止攻击样式库退化

文件锁符号链接防御

即使上游内容护栏全部生效,被提示注入诱导的 Agent 仍可能在框架目录内放置一个符号链接指向敏感文件(如 ~/.env、SSH 密钥)。后续任何以”创建/截断”语义打开该锁路径的代码都会静默销毁链接指向的文件——对框架级公共 API 而言是一条真实的数据破坏路径。 harness 的 FileLock(供投递队列使用)以 O_NOFOLLOW 打开锁文件(Windows 平台用 hasattr 守卫),被植入的符号链接会被拒绝而非跟随: 这是又一道纵深防御:即便提示注入攻击在文件系统层面得手,通过锁路径实现任意文件截断在结构上已不可能。 除符号链接防御外,harness FileLock 对整个加锁生命周期做了防误用与防静默失败加固: 跨进程互斥在 CI 中经 subprocess 测试验证(macOS),并叠加 asyncio 并发集成测试。

子 Agent 安全

每助手隔离与访问可见性

一个助手不只是提示词:它有自己的记忆域、浏览器登录态、工具/MCP 白名单与定时任务。Myrm 把这些边界分开,避免 A 助手的登录态或文件悄悄变成 B 助手的权限。 今天就能做的 5 分钟访问审计
  1. 逐个打开助手,列出它的工具与 MCP server,删掉这个职责不需要的。
  2. 打开设置 → 系统 → Saved Sessions,删除不再使用的登录态,清理过期会话。
  3. 检查助手的工作区/路径策略:它只应该读到需要的项目目录。
  4. 查看审批与长期授权清单,撤销不记得授予过的权限。
  5. 查看该助手的 Cron 任务,删除暂停或重复的例程。
当前边界:删除助手会删除配置并级联技能、渠道绑定与 Kanban/Cron 引用,但不会自动清理工作区文件、浏览器会话与凭据;删除前请先查看 Saved Sessions 与工作区。按助手的统一访问审计报告与一键撤销仍在路线图中,尚未交付。

技能安装安全

从任何来源(GitHub、SkillHub、文件上传)安装技能时,每个技能必须通过三层安全门禁才能激活:

信任等级

技能被分配四个信任等级之一,决定其运行时能力范围: quarantine_aware 装饰器在运行时自动过滤被隔离的技能——被隔离的技能从 Agent 可用工具列表中静默消失,不会产生错误。

运行时权限边界

技能安装通过后,运行期敏感操作仍受技能权限门禁(SkillBoundaryProvider)约束:写文件、执行命令、联网、读环境变量等敏感权限类型必须已被授权,否则工具调用在引擎层直接拒绝(skill_boundary.violation,fail-loud,绝不静默降级)。
  • 单点权威:工具名 → 权限类型由工具注册表 resolve_permission_type 统一解析(SSOT),避免映射漂移导致「以为拦截、实则放行」。
  • 授权一次自动执行:已授权权限自动放行,无人值守任务不被逐次弹窗打断;撤销(revoke)通过缓存失效回调秒级生效,无需重启。
  • 粒度分离:沙箱代码执行(code_interpreter)与原生 shell(shell_exec)独立授权,互不越权。
  • 全程审计:每次权限判定(授权/拒绝 + 目标)写入权限使用日志,可追溯。
  • 使用统计面板:审计日志聚合为可视化统计——按权限类型聚合总次数 / 放行 / 拒绝次数、精确的拒绝原因、最近 10 条操作明细,支持 1/7/30/90 天窗口筛选;异常行为(如技能反复探测环境变量全被拒)一眼可见,而不是埋在原始日志里。
  • 验证:技能边界 100% 单元覆盖 + 真实 DB 全链路集成验证(授权 → 门禁 → 执行 → 撤销 → 即时拒绝)。

可信来源与沙箱边界诚实披露门禁(Trusted Source & Honest Sandbox Disclosure)

在安装外部第三方扩展或技能插件包时,进程内半截 JS 沙箱防不住大模型执行 bash 窃密。Myrm 在 WebUI 技能 URL 导入(SkillUrlImportDialog)与插件包导入(PluginImportDialog)全链路建立诚实权限披露与强制可信勾选守卫:
  • 拔除单 URL 静默自动安装后门:彻底消除输入单个合规 URL 即直接绕过用户确认静默执行安装的供应链钓鱼后门;
  • 环境自适应诚实告知(Honest copy):智能感知当前部署模式——本地/桌面端(Local/Tauri)诚实展示 Local OS Permissions,明确告知技能具备当前操作系统的用户权限;云托管端(Cloud)展示 Cloud Sandbox 徽标,解释独立容器 Volume 的隔离边界;
  • 提示注入与脚本攻击风险示例:客观警示不可信扩展可能通过间接 Prompt 注入诱导 Agent 执行越权命令读取私钥;
  • 可信复选框物理门禁(Trusted Source Checkbox):新增 trusted-source-checkbox,默认未勾选;未显式勾选前,【确认安装】按钮保持物理禁用,彻底堵塞供应链盲目信任漏洞。

GUI 安全审查

三处前端组件协同展示安全扫描结果,每个发现都包含精确行号定位(如 L42 Command injection: recursive delete),帮助开发者快速跳转到问题代码: 安全评分采用百分制,从 100 分起扣:CRITICAL 扣 25、HIGH 扣 15、MEDIUM 扣 8、LOW 扣 3。同时生成 trust_recommendation(trusted/installed/untrusted/reject)指导信任决策。

MCP 工具安全

配置安全扫描

每个 MCP 服务器在激活前会自动扫描 14 种威胁类型: 扫描结果通过 ScanConfirmDialog 展示严重程度徽章,用户可信任、拒绝或强制启用(自担风险)。

Stdio 进程环境变量注入防御与全生命周期子进程凭证隔离门禁

对于 Stdio 类型的 MCP 服务器及所有派生执行的子进程(Bash Shell、Python 解释器、后台守护进程、CUA 驱动),Myrm 构建了静态配置拦截与运行时动态清洗的双层纵深防御体系:
  • 静态预检阻断:在解析配置时若包含 LD_PRELOAD、DYLD_INSERT_LIBRARIES、NODE_OPTIONS、PYTHONPATH、HTTP_PROXY、GIT_SSH_COMMAND 等 50+ 种危险变量,直接标记 CRITICAL 严重级别阻断安装。
  • 运行时自动剥离与子进程凭证隔离(ChildProcessCredentialTokenIsolation):
    • 在子进程启动前(env_isolation.py:build_isolated_child_env)自动执行严格的环境清洗;
    • 核心凭据全面绝缘:NOISE_AUTH_TOKEN、CODEX_EXEC_SERVER_NOISE_AUTH_TOKEN、AUTH_TOKEN、ACCESS_TOKEN、BEARER_TOKEN、DATABASE_URL、MYRM_VAULT_MASTER_KEY 等全量敏感密钥在下发给任何第三方脚本前物理剥离;
    • 8 维词根通配符拦截:精确过滤 KEY、SECRET、TOKEN、PASSWORD、CREDENTIAL、AUTH_、_AUTH、AUTHORIZATION、AUTHENTICATION、BEARER、SIGNATURE,彻底杜绝任何脚本偷窥宿主环境凭证;
    • 零误杀设计:采用词形区分算法,安全放行 GIT_AUTHOR_NAME、GIT_AUTHOR_EMAIL 等合法 Git 提交者身份,确保开发者工作流顺畅;
    • 三档继承策略(CORE 严格白名单 / ALL 清洗模式 / NONE 零环境变量),三部署同构适配。
  • 零 Prompt Cache 损耗:纯框架底座运行时计算,0 Token 消耗,0 性能抖动。

基础安全

工具名 mcp__{server}__{tool} 隔离;OSV 恶意包检测;按 Agent 工具过滤;destructiveHint 默认禁用。

内置工具治理门禁

每个内置工具在发布前必须携带显式治理声明——不存在隐式默认。Harness 通过注册级 CI 门禁强制这一约束:门禁遍历真实注册的工具全集(core/common/extended 层 + server 供应商工具),而非人工维护的名单:
  • 零静默绕过 — 新增内置工具若没有权限映射、没有动态解析声明、没有自动放行声明、也没有显式 mcp_invoke 兜底,构建直接失败,绝不可能悄悄退化为模糊的运行时默认
  • 显式三态模型 — 每个工具要么显式自动放行(只读类)、要么显式映射到权限类型(受规则集治理)、要么显式声明为保留”默认询问”基线的 mcp_invoke 兜底(高危工具如 browser_execute_script_tool / send_teammate_message_tool)
  • 双向一致性 — 声明双向交叉校验:BUILTIN_TOOL_NAMES 必须是注册全集的子集(失去锚点的声明会失败);权限类型白名单条目不得 stale(已被 DEFAULT_RULESET 覆盖)或 orphan(无任何工具映射)——审计报表永远不会与代码自相矛盾
  • 动态解析 SSOT — 按 action 动态解析权限类型的工具(浏览器交互、桌面控制)从单一事实源声明动态分支,门禁只消费该源而非复制名单
  • 模块加载安全门禁 — 每个内置工具必须声明安全元数据(只读/破坏性/并发安全),缺失在导入时即被标记,而非生产环境才发现
结果:新增任何能力都不可能静默削弱治理;CI 输出的覆盖矩阵是一份真实、机器可读的审计——每个工具被允许做什么一目了然。

动态工具变更安全

当 MCP 服务器在运行时添加或移除工具(通过 tools/list_changed 通知)时,Myrm 在不打断工作流的前提下确保安全:
  • 自动安全审查 — 新增工具会经过与配置时相同的 13 类威胁扫描,不通过则拒绝并记录警告,不安全的工具绝不会被静默激活
  • 提示词缓存保护 — Agent 面向的工具列表保持冻结状态,动态变更仅更新内部执行层,确保提示词前缀缓存命中率不受外部 MCP 服务器行为影响
  • 零用户打断 — 与需要手动 /reload 确认的 CLI 竞品不同,Myrm 透明处理工具变更,用户不会被无法有效评估的确认对话框打断

SSRF 防护

  • 统一出站 HTTP 层:web_fetch、HTTP 工具、OpenAPI 执行器、技能 ZIP 安装、媒体解析、robots/sitemap、渠道媒体下载、飞书附件等全部收敛到 secure_fetch / async_pin_url,消除历史裸 httpx 盲区
  • 手动重定向循环:follow_redirects=False,逐跳重新验证目标地址,消除 DNS 重绑定 TOCTOU 攻击
  • DNS Pinning:解析后的 IP 直接替换域名,绕过 DNS TTL 刷新窗口
  • 全面 IP 黑名单:RFC1918 私网、CGNAT、链路本地、多播、云元数据端点(AWS/GCP/阿里云/腾讯云)+ IPv4-mapped IPv6 检测
  • 数据外泄检测:6 类模式(API 密钥、文件路径、base64、JWT、密钥模式、数据库连接串)防止敏感数据通过 URL 参数泄漏
  • Domain HITL 审批:非白名单域名自动触发人工审批(domainHitlEnabled),每个 Agent 可独立配置网络域名白名单
  • URL 解析混淆防护:阻断 Tab/换行/反斜杠等混淆字符,防止 urlparse 与 HTTP 客户端的解析歧义(CVE 级 SSRF 绕过防御)
  • 内网后缀阻断:.local、.svc、.cluster.local、.home.arpa 等后缀默认拦截,防止 mDNS 和集群内网访问
  • 审计链:拦截请求写入 SSRF_BLOCKED 安全决策,可在审计面板追溯
  • Agent API 范围:/v1/chat/completions 仅运行 Myrm 智能体(无 LLM 直通)。用户配置的 Provider apiUrl 在智能体内 LLM 调用路径仍执行 SSRF 检查,deploy 模式感知——本地模式允许 localhost/127.0.0.1 等 loopback(Ollama/vLLM),云/沙箱模式阻断私网和云元数据端点
  • 461+ 项专项测试:覆盖核心守卫、Agent 安全、浏览器导航、DNS Pinning、媒体验证、深度爬取、SessionVault、权限引擎和 Provider URL 校验

恶意 URL 架构级免疫

面对钓鱼/诈骗网站,Myrm 不依赖静态域名黑名单(如 2.5M 钓鱼域名库),而是通过架构级机制从根本上消除威胁:
  • SessionVault 域名绑定:凭证(cookie/密码)严格按域名隔离,bank.com 的登录态不会被发送到 bank-secure-login.xyz 等钓鱼域名,从机制上杜绝凭证窃取
  • 浏览器沙箱隔离:Agent 在独立沙箱中运行浏览器,即使访问恶意网站也不影响用户主系统
  • 四层深度域名过滤:CSP 策略(浏览器内核级网络限制)+ 协议拦截(context.route 阻断非白名单域名)+ 主线程加固(WebRTC/WebTransport/ServiceWorker 阻断)+ CDP 审计监控
这一架构使得维护庞大的钓鱼域名库变得不必要——域名库每天有数千个新域名产生,静态列表迅速过时,且占用 50-100MB 内存。

操作级语义风险检测

不同于将整个网站标记为”高风险”(维护成本高、法律风险大),Myrm 在单次操作层面实时检测风险——每次点击、表单提交、命令执行都经过分析。

7 类语义 DOM 风险检测

Agent 点击网页上的按钮或链接时,元素文本会自动匹配 7 类风险(中英双语): 优于域名级风险标签的原因:
  • 零维护:无需维护”高风控网站名单”
  • 全覆盖:任何网站通用,包括新网站
  • 精准:在亚马逊”查看购物车”自动通过,“确认下单”需审批
  • 零法律风险:不歧视任何特定平台

Smart Intent Guard

AI 分类器(TranscriptClassifier)审查工具调用是否符合用户原始意图:
  • 推理盲:仅看用户消息+工具调用序列,不看 Agent 推理过程,防止自我合理化
  • 确定性:temperature=0 确保同一输入永远得到同一结论
  • 结构化输出:Pydantic 强制 JSON + reason 字段支持审计追溯
  • 失败安全:错误或歧义回退到 HITL 而非自动放行

风险治理系统(Risk Governance)

完整的双向风险检测与治理框架,包含内置规则、自定义规则管理和全栈事件处理。同一规则引擎同时保护 WebUI 输入 和 IM 渠道入站消息 —— 无死角。 31 条内置规则覆盖 6 大类别,在数据到达 LLM 之前完成检测。开箱即用只启用 8 条安全凭证规则:消息里带有真实的密钥值(密钥、令牌、私钥,或被赋予字面值的凭据)才会拦截,password = os.environ["DB_PASSWORD"]、api_key: "<redacted>" 这类只是引用的写法会放行。其余 23 条规则匹配的是宽泛词汇,需要时再开启:在「设置 → 安全策略 → 风控规则」中打开即可。已保存过自己开关状态的安装保持原样。规则只有拦截一种动作:命中即在到达模型前截停消息。 入站/出站对称门控:IM 渠道消息在路由层通过 RiskDetectionService.detect() 检测,阻断后自动向发送方发送本地化通知(6 种语言)并记录审计日志。出站 Agent 响应通过 apply_outbound_risk_gate 使用同一引擎检测 —— 形成闭环防护。 GUI 规则管理:WebUI 设置面板完整 CRUD —— 创建自定义正则规则、单条/批量开关、部署前规则测试,无需编码。 审计追踪:每次风险命中记录 trace_id、session_id、匹配规则、严重等级与命中的字符区间,满足合规审计要求。命中记录不保存匹配到的原文,审计日志本身不会成为泄密出口;启动时会清除命中记录里留存的匹配原文。 全栈事件闭环:输入风险触发时,服务端发送 risk_blocked SSE 事件,事件按 id、名称和严重等级列出触发的规则;前端 riskEvents 处理器拦截后,以用户所选语言弹出 Toast,点名这些规则并指向「设置 → 安全策略 → 风控规则」—— 无静默丢弃。

测试覆盖

30000+ 项测试验证安全全链路,包括 PII/DLP/隐私路由(1136)、Shell 命令审批(Harness 1209 + Server 261)、语义 DOM 风险(75)、Shell 分类(379)、SQL 语句守卫(68, 覆盖率 99.1%)、安全引擎集成(163+74)、凭据扫描(35)、工具守卫(9)、权限引擎(119)、工具注册表与继承(67)、护栏中间件(15)、架构注册表(4)、服务端权限(18)、Agent 工具 API(12)、配置解析(36)、前端审批与消息(15)、风险治理(117)、Webhook 路由(2)、动态授权拦截(845)、MCP 对标验证(166) 等。

Shell 命令安全

5 层引号感知流水线: 引号感知预处理:字符级状态机 _strip_quoted_content 在 L2/L3 扫描前将单引号内容替换为占位符,避免 echo 'rm -rf /' 误报,同时保留双引号中命令替换的检测能力。 特权提升无条件地板:所有 sudo 命令在 L2 层被无条件 BLOCK——包括 sudo apt install、sudo -S(stdin 管道密码注入)、env sudo cmd、以及 bash -c 'sudo ...'(由 L4 递归捕获)。此规则不可被 YOLO 模式、Smart Guard 或用户审批绕过。竞品 Hermes 仅阻断 sudo -S(密码猜测向量),仍允许配合 SUDO_PASSWORD 的常规 sudo——攻击面更大。其他 6 家竞品无任何 sudo 防护。 破坏性命令自动快照:匹配破坏性模式的命令(rm、mv、git reset/clean/checkout/restore/apply 含任意前置 flag、sed -i、重定向覆盖)会在执行前自动触发工作区快照,确保无论结果如何均可完整恢复。 SQL 守卫(L2.5):分析原始命令(引号去除前)以检测嵌入在数据库客户端命令中的破坏性 SQL 操作(DROP、DELETE、TRUNCATE、ALTER、INSERT、UPDATE、CREATE)。防御两种高级绕过向量:多语句注入(SELECT 1; DROP TABLE)和 WITH CTE 包裹(WITH x AS (...) DELETE FROM)。支持 flag 模式(psql -c '...')和管道模式(echo '...' | psql)。竞品无此能力。 安全执行路径:无 Shell 元字符的简单命令通过 create_subprocess_exec 直接执行(不经 shell 解释器),从结构上消除 $IFS、通配符展开、命令替换等注入类型。

AI 轨迹分类器(Layer 5.5)

静态分析返回 ASK(不确定)时,AI 分类器提供语义级判断:
  • 推理盲设计:仅看到用户消息和工具调用序列,永远不接触助手推理或工具输出,防止 Agent 通过合理化推理欺骗分类器
  • 结构化输出:Pydantic Schema 强制 JSON 格式(非自由文本),缩小注入面
  • 确定性:temperature=0、max_tokens=200,确保可复现
  • 失败安全:任何错误、超时或解析失败均返回 UNCERTAIN → 回退到人工审批
  • 上下文感知:接收污点标签(EXTERNAL_NETWORK、SECRET)和可信域名列表,支持细粒度判断

Smart DENY → 用户一次性覆写

当智能审查器判定 DENY 时,不会静默拒绝,而是弹出审批卡片让用户决定: 防止”误判锁死”——AI 审查器误分类合法操作时用户不会被困住,同时保持完整审计可追溯。 vs 竞品:Hermes 仅提供 CLI 的 once/deny 按钮,无可视化理由展示,无审计日志,无分层硬拒绝。

高风险场景隐藏「始终允许」

在 6 种高风险场景下,审批卡片自动隐藏「始终允许」按钮——用户只能逐次审批或拒绝,防止误操作永久放行危险命令: 普通低风险审批仍正常显示「始终允许」。用户对安全操作的体验零影响。 vs 竞品:Hermes 仅在 tirith 内容安全告警时隐藏永久允许(1 个触发点)。OpenClaw 通过后端 allowedDecisions 控制并显示”始终允许不可用”警告文案。Myrm 覆盖 6 种触发场景——行业最全面。

双语命令解释

每个触发审批的命令都会显示确定性生成的双语人话解释(humanize_command)——零 LLM 调用、微秒级延迟:
  • 73 个常见命令覆盖,参数感知描述(提取 URL/文件名/包名等关键参数)
  • sudo 前缀自动标注,危险管道模式高亮
  • 用户无需 Shell 专业知识也能理解命令含义后做出审批决策
  • 纯规则引擎:不可被 prompt injection 操控(优于 LLM 方案)
前端 humanize SSOT(2026-08) — 除 Harness 层 Shell 的 humanize_command 外,WebUI 模块 lib/humanize/ 为 进度步骤 与 三处审批出口(Single / Polymorphic / ToolCall)生成 同一套人话方言。作用域提示(本地 vs 外部渠道)经 resolveScopeNote + ApprovalScopeNoteLine 六语展示;保存技能审批前提供结构化预览。定向验证:49 vitest 通过,0 失败(2026-08)。

Install Slopcheck(防包名幻觉 / Anti-Slopsquatting)

每次 pip install / npm install / yarn add / bun add 执行前,预检链自动验证所有包名是否真实存在: 此机制防范 slopsquatting 攻击——攻击者注册 LLM 常见幻觉包名并植入恶意代码。

加密与企业网络兼容

静态 AES-256-GCM;传输 TLS 1.3;API Key 加密库;可选记忆加密;无痕模式不读写记忆、不进历史与搜索、闲置 1 小时后自动删除。

企业 TLS 兼容

企业网络常部署 TLS 检查代理(Zscaler、Netskope、Palo Alto Prisma 等),可能导致 Agent 的所有 HTTPS 出口连接失败。Myrm 提供一键企业网络兼容:
  • 设置 → 偏好设置 → 高级配置 → 企业网络兼容模式 开启,或设置环境变量 MYRM_TLS_STRICT=0;修改后需重启应用生效
  • 精确放松:证书链按操作系统信任库(管理员下发检查代理根证书的位置)加上 SSL_CERT_FILE、REQUESTS_CA_BUNDLE、NODE_EXTRA_CA_CERTS 指定的 CA 文件校验(追加,不替换;连接远程 MCP 服务器时只读 SSL_CERT_FILE),只清除 Python 3.13+ 的 VERIFY_X509_STRICT 标志;证书链、主机名与有效期检查仍然开启,因此不禁用证书验证
  • 覆盖聊天模型传输、S3 远程备份、邮件渠道的 IMAP 与 SMTP 连接,以及 Agent 使用的 Python HTTP 客户端(httpx、aiohttp、requests、urllib);基于 Node.js 的 MCP 服务器(例如通过 npx 启动的)、WhatsApp 渠道的桥接进程及其依赖安装、外部 CLI 智能体的安装步骤和智能体自身的进程也会被告知使用系统信任库(Node 22.19+ 与 24.6+ 认这个提示,更旧的 Node 会忽略)
  • 内置的邮件技能(imap-smtp-email)的脚本跑在另一个进程里,这个设置够不到它:脚本按 Python 默认的 CA 包校验邮件服务器证书(macOS 上是一个文件,不是系统钥匙串),只认 SSL_CERT_FILE。在脚本里该变量替换默认 CA 包而不是追加,所以文件里还要包含脚本仍需信任的所有公共 CA;在运行智能体服务端的环境里设置它。证书被拒时会带着这条提示报错,不会跳过校验
  • MCP 服务器级 TLS:每个 MCP server 可独立配置 ssl_verify(true/false/自定义CA路径)和 client_cert/client_key/client_key_password 实现完整 mTLS 双向认证
  • 设置如何到达各个客户端:基础设施模块 tls_compat.py 在应用启动时装好信任策略,服务端的 tls_config.py 把偏好设置里的开关同步到 MYRM_TLS_STRICT。策略落在客户端取 TLS 上下文的地方:ssl.create_default_context()(httpx、urllib、asyncio,以及邮件渠道)和 requests、aiohttp 的上下文构建器,因此这些客户端无需各自带开关;S3 远程备份的客户端库自己构建上下文,直接读取这个设置
  • TLS 连接失败时自动诊断:区分「证书链被拒绝」与「握手被中断」两类故障,并给出 5 语言修复提示
  • TLS 专项测试覆盖:TLS 兼容核心、MCP 逐服务 TLS(真实连接集成测试)与 TLS 错误诊断

无痕模式深度解析

消息输入区一键切换,开与关都会开一个新会话:无痕是会话自身的属性,服务端按该会话的 is_incognito 决定删什么、导出什么,所以已经存在的会话永远不可能变成无痕。请预期当前对话被留在原处,输入框换成一个没有消息的新会话。
  • 事件日志:不写每会话事件日志,提示词与工具结果不会在聊天数据库之外另存一份到磁盘
  • Server 层:不绑定 memory manager,不挂载全部记忆工具(memory_search_tool、memory_save、memory_manage),不注入记忆上下文,禁用归档检查点与会话清理回调
  • 附件随会话走:在无痕会话里上传的文件绑定到该会话,随会话一起删除、不进导出与备份,也不会出现在其他会话的 @ 候选里
  • 数据库层:is_incognito 标记让无痕会话不出现在侧边栏、全文搜索、会话召回、会话追赶简报与记忆导出里,也不存标题与消息预览;消息在本地数据库保留到会话闲置满 1 小时,随后连同附件永久删除
  • Self-hosted:聊天保存在你自己部署的实例上,而不是厂商服务器;无论是否开启无痕,你配置的模型服务商仍会处理每一轮发出的内容

凭证保护

表单凭证库

密码与 TOTP 永不进 LLM 上下文。在 设置 → 凭证 配置带标签凭证;Agent 只见标签名(如 github-personal),调用统一的 fill_credential(浏览器与桌面相同动作);Harness 在 DOM/OS 层注入,明文不回流对话或工具日志。Server 侧 AES-256-GCM 加密存储,启动时同步到 Harness 内存金库。 Provider API 密钥(OpenAI、Anthropic、Gemini 等)通过 LiteLLM api_key 参数传递,零 os.environ 写入——配合 agent-in-sandbox 进程级隔离,从架构层面杜绝跨用户凭证泄漏。279 项凭证安全测试全通过。

泄漏检测

40+ 正则检测 API Key、连接串、JWT、SSH 私钥等;熵检测未知格式。

PII 脱敏与隐私感知路由

Myrm 提供 8 层 PII 纵深防御,具备 57+ 种检测能力 — 市场上隐私保护最深的 AI Agent 平台: 检测(3 引擎,57+ 种类型):
  • 正则 PII 扫描器:12+ 种结构化类型(手机号、身份证含校验位验证、护照、银行卡 Luhn 校验、SSN、邮箱、地址、快递单号、私有 IP 等)
  • LLM 语义扫描器:20+ 种非结构化类型(医疗健康、政治观点、金融记录、精确位置、生物特征)PL2/PL3/PL4 三级分类
  • 凭证泄漏扫描器:25+ 种密钥模式(AWS/OpenAI/Anthropic/GitHub/Slack/JWT/PEM 私钥等)含 Shannon 熵分析
保护(4 种用户可选模式): 隐私感知模型路由:配置了本地模型后,按敏感度路由 — S1 发云端,S2 发云端(已应用上方的 S2 动作)或本地,S3 发本地模型(原始数据不会离开本机)。没有配置本地模型时路由关闭:所有请求都带着已应用的 S2/S3 动作发往云端。可配置回退策略:阻断或强制脱敏后发云端。 GUI 完整配置:设置面板提供隐私开关、逐级动作选择、深层扫描开关、本地模型连接测试、自定义关键词/正则/敏感工具标记,以及“试一试”:输入一句话,实时查看按当前设置模型会收到什么。

数据流向与隐私披露(Settings)

设置 → 安全策略 → 数据流向与隐私披露 提供基于当前配置的实时数据流地图,而非静态厂商 subprocessors 页面: Provider 训练政策在可能时链接官方文档。启用 Privacy Routing 且有云端出站时显示跨境路由提示。 对比竞品:Cursor / Claude 的静态数据使用页无法反映你启用的 MCP 与连接器。Myrm 面板从 live 配置读取(桌面端 Channel 重连时 SSE 刷新)。

摘要路径保护

长对话压缩为结构化摘要时,PII 和凭证可能在摘要过程中残留。Myrm 在摘要持久化前对所有字段执行双重脱敏(redact_leaks + redact_pii),确保手机号、邮箱、API Key 等敏感数据不会残留在压缩后的对话历史中。

污点追踪

跟踪敏感数据流经工具执行的间接泄漏路径。

智能体导出与导入安全

导出。 智能体以 Agent Plugins 包的形式离开你的设备,并且只经过一轮人工审阅的脱敏。脱敏覆盖接收方能读到的一切——系统提示词、描述、起始提示、工作区模板以及随包的每个技能文件。每条发现(API Key、Token、用户目录路径)都会展示出来,由你选择脱敏或明确保留;所有条目决定完毕才会导出,基于过期预览做出的决定会被拒绝。 导入。 外来的包一律视为不可信输入:
  • 每个技能都走完整的安装流水线与全文件安全扫描;SKILL.md 干净但脚本恶意的技能会被拒绝,且不留下任何残留。
  • 智能体只能收窄自己的权限,包里永远不携带安全策略:security_overrides、default_security_preset、trusted_desktop_apps 等安全与机器本地字段导入时一律丢弃。工具授权限定为默认集合,循环预算不超过系统默认值。
  • MCP 服务导入后默认停用,密钥由你自己填写,绝不从包里读取。

隐私安全规则分享

分享程序性记忆规则(如与队友或社区)时,自动应用额外的隐私保护:
  • 路径匿名化 — 用户目录路径自动替换为 <USER> 占位符
  • 凭证脱敏 — API Key 和密钥截断为安全前缀(如 sk-pro...f456)
  • 元数据剥离 — 时间戳、更新计数、内部 ID 从导出规则中移除
确保分享的规则中不会泄露个人文件路径或凭证。完整说明参见记忆系统 → 隐私安全规则分享。

密码保护分享

工件和对话分享链接支持可选密码保护,采用无状态、零数据库设计: 密码保护完全可选。不设置密码时行为与普通分享完全一致,无额外性能开销。

随时撤销、即时生效、永不复活

工件与对话分享链接支持随时主动撤销: WebUI 分享对话框每次打开都展示实时状态(链接地址、剩余有效期、撤销按钮),与 ChatGPT/Notion 分享对话框基线一致;撤销后对话框保持打开显示「已撤回」状态,控制入口永不失联。
Hermes、LobsterAI、CoPaw、deer-flow、jiuwenclaw 均无工件或对话分享功能。OpenClaw 以会话原有的聊天地址、靠一个公开开关发布整条对话,内容包含图片与工具调用摘要;Myrm 的对话链接有时限、可设密码、按链接撤销,且只展示用户与助手的文字。即便是主流产品(ChatGPT Shared Links、Claude Shared Chats)也缺少 TTL 自动过期、密码保护与防搜索引擎收录——Myrm 在与其共享「撤销即时失效」基线之上,额外补齐了这三项能力。

对话链接会展示什么

Agent 密钥管理——零明文暴露架构

每个 Agent 的自定义密钥(API Key / Token / 环境变量)采用零明文暴露架构:
竞品(如 Multica)向前端返回明文环境变量,必须依赖 sentinel 值(”****“)防止意外覆盖。Myrm 从架构上消除了这个攻击面。

审计追踪

结构化审计日志:37 种安全决策类型 + Prometheus 实时指标 + TaintTracker 信息流追踪。

配置审计引擎

配置审计引擎为每个智能体配置提供实时风险评估。打开智能体设置中的安全选项卡时,健康评分卡会即时显示安全态势:
  • 评分:0–100(越高越安全),按发现严重程度扣分
  • 风险等级:安全 / 低 / 中 / 高 / 严重(5 级颜色编码)
  • 6 维分组视图:发现按 checker 维度分组展示,每个维度独立颜色标识 — 展开任一维度可查看单条发现的严重程度边框、标题和可操作建议
  • 一键修复:策略缺口类发现提供 Fix(开关切换)或 Configure(导航到配置区域)按钮,即刻修复

六维检测

每个维度显示 issues 数量或「Pass」状态。有问题的维度可展开查看详情。

设计特点

  • 零 LLM:纯确定性规则引擎 — 零 token 消耗,即时响应
  • 插件架构:每个检查器独立实现 BaseChecker,可独立扩展
  • 自动刷新:保存智能体配置后自动更新审计结果
  • 框架级能力:任何使用 harness 引擎的项目都可开箱即用
  • 测试覆盖:37 项后端单元测试 + 15 项前端组件测试(共 52 项)

工作区规则安全

Myrm 自动从 17 个发现点(13 个根级文件名 + 4 个子目录模式)发现并加载项目级规则文件,覆盖所有主流 AI 工具生态:
  • 根级文件:.myrm.md、AGENTS.md、CLAUDE.md、SOUL.md、.cursorrules、.clinerules、.windsurfrules 及大小写变体
  • 子目录:.myrm/rules/*.md、.cursor/rules/*.mdc、.claude/CLAUDE.md、.github/copilot-instructions.md
  • 首匹配优先:每个目录仅加载最高优先级文件,防止冲突
  • 零配置迁移:Hermes(SOUL.md)、Cline(.clinerules)、Cursor(.cursorrules)、Claude Code(CLAUDE.md)、Windsurf(.windsurfrules)用户可直接使用现有规则文件
所有发现的文件在注入前进行安全扫描:113 模式 26 类威胁检测(含中文注入)。被拦截内容替换为结构化 [BLOCKED] 占位符。

紧急控制

E-Stop、会话终止、工具黑名单、预算硬顶。

安全态势大盘

/security 页面提供完整的 GUI 安全可视化——无需 CLI 命令: 支持多数据源(GitHub / Control Plane / 合并)、一键刷新、配置引导面板。远超 Hermes 的 CLI 命令(hermes config view security)。

智能审批(Auto Mode)

智能意图守护默认对所有新用户开启。辅助 LLM(Transcript Classifier)实时审查工具调用,实现长时间无人值守 Agent 会话。如果未配置专用审查模型,Myrm 会自动使用用户的默认模型作为 fallback——无需额外设置即可享受智能审批: 故障安全保证:分类器报错 → 回落 HITL(绝不在失败时自动批准),temperature=0 确保确定性,Pydantic 强制结构化输出。

命令黑名单(用户自定义安全地板)

用户可以定义 glob 模式永久拦截特定命令 — 无论 YOLO 模式、智能意图守护决策还是权限规则,均不可绕过。这是用户可控的最终安全防线。 命令黑名单在审批管道的 Layer 2a.5 位置运行 — 在权限规则之后、YOLO 绕过之前,确保被拒绝的命令始终被阻断。

记忆写入信任隔离

所有记忆写入都经过统一安全管道 — 即使是 AI 内部触发的也不例外: 没有竞品实现记忆写入信任隔离 — 大多数 Agent 将提取的偏好直接写入用户画像,无审批、无验证、无优先级护栏。

安全配置档位:一键切换安全模式

MyRM 提供三种内置安全配置档位,用户可在设置页一键切换: 档位持久化到数据库,服务器重启后保留。每个 Agent 也可独立配置安全策略——支持”只读分析助手”与”全权开发助手”并行的场景。

定时任务执行策略(按任务最小权限)

定时 Agent 任务在绑定智能体之外,还支持双层执行策略: 编辑入口: 设置 → 定时任务 → 打开任务 → 运行历史中的执行策略编辑器(与「允许的路径」同一产品模式)。新建任务默认不限制。 内置保护:
  • 默认 fail-closed — 未显式声明能力的任务自动拒绝危险操作(Shell、代码执行、MCP),并在 UI 显示警告引导用户配置能力围栏或在智能体安全设置中启用 YOLO 模式。
  • 预设组合(仅联网 / 研究 / 运维)一键双写能力围栏 + 工具范围,与蓝图 SSOT 对齐。
  • 稍后读蓝图 使用 router 模式(__wiki_source_sync__),无工具挂载 — 服务端确定性 pull,零 LLM agent turn,不会误开浏览器或代码执行。
  • 生命周期守卫 拒绝 prompt/命令/预检脚本/shell 验收标准中的 ./myrm restart/stop、pkill myrm-agent 等 — 防止定时任务把服务打挂。
  • 受限任务不偷偷继承基线工具 — 仅 file_ops 的任务不会自动启用 code_execute;未限制任务仍继承智能体基线。
对比竞品: Hermes 仅提供全局 cron_mode: deny/approve 布尔开关——所有任务共享同一策略。OpenClaw/LobsterAI/CoPaw/deer-flow/jiuwenclaw 无定时任务功能。Myrm 提供按任务粒度的能力声明 + GUI 编辑 + 蓝图自动填充 + fail-closed 默认策略。

子代理递归隔离:5 层防护

当 Agent 将任务委派给子代理时,最常见的失控场景是子代理无限递归衍生,耗尽 Token 预算。 MyRM 实施 5 层隔离防护: 额外安全网:Payload hash 去重防止委派循环、结果缓存避免冗余工作、子智能体没有记忆写入工具,只持有只读记忆视图,防止跨代理数据污染。

多代理文件保护:6 层纵深防护

当多个代理在同一工作空间并行工作时,文件冲突是数据损坏的首要原因。MyRM 实施 6 层防护 — 全部代码强制,零 Prompt 依赖: 实际运行流程:
  1. 父代理将 3 个编码任务委派给并行子代理
  2. 三个子代理在同一个工作空间内工作 — 没有副本,也没有合并步骤
  3. 每次写入前,在 file_activity_tracker 中检查其他代理对同一文件的最近编辑
  4. 若行范围重叠,file_conflict_guard 阻止本次写入;同一文件其他区域的编辑只产生警告
  5. 子代理完成后,subagent_manager 清理它的追踪记录
对比竞品: AWS Codex Agent Team 依赖 Prompt 指示(“不能让两个活跃任务写同一文件”)— LLM 可以无视此约束。MyRM 在应用代码层面强制每一层防护 — 无论模型行为如何,均不可绕过。

vs CaMeL Guard

CaMeL 单信任边界;Myrm 6 层洋葱防御、5 域循环检测、3 层错误分类、4 策略凭证池、PTC 沙箱隔离、20+ 模块上下文流水线等更深覆盖。

运行面彻底离场与可逆副作用清退 (Runtime Capability Eviction & Side-Effect Purge)

针对插件/能力卸载后容易在系统中残留暗线与幽灵资源的问题,Myrm 构建了完整的四维彻底清退流水线与采购合规自检体系:
  • D1 接口与代理全面解绑:Teardown 终止 MCP 进程并自动从所有绑定的 Agent 移除工具引用。
  • D2 Tool Registry 内存即时注销:基于读写锁(_PTC_LOCK)实现 (O(1)) 粒度的线程安全工具元数据与扁平索引注销,彻底杜绝内存中幽灵工具(Ghost Tools)误匹配。
  • D3 关联后台定时任务双轨级联清退:插件专属的定时任务自动物理销毁;引用了插件工具的用户业务任务自动切换为 PAUSED 暂停保护状态并发出警告,杜绝孤儿 Cron 轮询空跑。
  • D4 物理文件与隔离目录彻底清除:安全清理插件数据与存储目录,并记录合规审计日志。
  • 政企采购合规六问自检(ComplianceAuditEngine):内置 Q1 路由、Q2 注册表、Q3 定时任务、Q4 文件系统、Q5 进程、Q6 凭据全维度自检引擎,无缝集成至 Doctor 全局诊断。

后台任务隐式凭证拦截 (Anti-Leak Background Tasks)

在 Myrm Agent 中,安全防护不仅限于主对话流程,还深入到每一个后台辅助任务(如自动生成会话标题、自动总结)。
  • O(1) 早期截断:彻底消除超大文本在异步事件循环中执行正则和香农熵计算导致的 CPU Blocking DoS 隐患。
  • 军工级脱敏管线:内置凭证探测器(Shannon Entropy + 正则),在发送给廉价模型生成标题前,自动抹除 API Key 等敏感凭证。
  • 深度结构降噪与隔离:自动剥离代码块、URL 链接、HTML 标签等噪音,并使用 <user_input> XML 标签严格隔离用户输入,防止 Prompt 注入攻击。

技能下载全流程隔离与蓝绿原子安装

为防范第三方技能供应链攻击与意外中断导致的环境污染,Myrm 在执行引擎框架层(Harness)部署了完整的隔离沙箱与原子替换体系:
  1. 临时隔离区先验落地(Quarantine Directory):远程技能文件(Git 仓库 / ZIP 压缩包)下载时,先落入独立的临时隔离沙箱目录,杜绝在生产工作空间中边下载边写盘。
  2. 路径逃逸强阻断(Path Traversal Containment):对包内所有相对路径执行规范化解析与边界校验,任何试图包含 ../ 逃出技能安装目录的恶意文件全部被实时拦截并丢弃,免疫 Zip Slip 攻击。
  3. 安全扫描前置门禁:在隔离目录内完成正则规则、AST 语法树分析与 LLM 语义检测,只有安全推荐通过时才允许进入安装流程,拦截立即彻底清理隔离目录。
  4. 双向蓝绿原子替换与失败回滚(Atomic Replace with .bak rollback):安装升级时将旧版本安全备份为 .bak 目录,执行毫秒级原子重命名移动。若遇到磁盘 IO 或权限异常,自动无损恢复旧版本,确保技能目录永远处于可用一致状态。
  5. 多源聚合搜索容错隔离:在聚合搜索官方源、国内镜像及第三方 Registry 时,各个源独立受限超时与异常隔离,单个源故障不会拖垮整体搜索体验。

防数据污染与 Canary 金丝雀审计防护门禁

为了确保评测基准的绝对真实性与防止题库泄漏被外部爬虫污染:
  1. 动态 Canary Token 与全局 GUID 双轨防护:自动识别并注入评测基准的金丝雀水印(全局 CANARY_GUID 与基准专属的 canary_token)。
  2. 运行期外网检索实时脱敏:在 Agent 发起联网搜索/抓取时,毫秒级拦截并抹除查询中的 Canary 水印,防止基准提示词泄露至公网搜索引擎或下一代预训练语料库中。
  3. Pre-Run 工作区物理纯净度检查:评测轮次开始前,递归扫描 Agent 工作空间,确保标准答案补丁与判分脚本物理隔离在工作区之外。
  4. 轨迹反作弊与机密探测防御:在沙箱执行期全程审计 Agent 工具调用轨迹,精准识别探测隐藏评分文件(/hidden_tests/、verifier.toml)或窃取环境变量/密钥(printenv、export、/proc/*/environ)的投机行为,一经发现即时判负并记录结构化违规证据。
  5. 端到端 WebUI 违规穿透卡片:直接在前端评测详情中呈现 Canary 保护徽标与结构化违规诊断卡片,打通全流程透明度。

渠道与操作人记忆作用域安全门禁 (防投毒与防越权召回)

当企业微信、飞书、Telegram、Slack 等外部多用户渠道接入 Agent 时:
  1. 写平面防投毒门禁 (allow_shared_write=False):在工具层底层物理拦截,外部群聊中大模型尝试写入全局共享记忆(shared)时,自动防御性降级为当前会话私有(bound),杜绝群聊恶意参与者投毒企业全局向量知识库。
  2. 读平面防越权召回隔离 (default_scope="same_source"):服务端历史召回适配器强制锁定检索来源必须为同渠道同会话,彻底防御 Prompt 越狱攻击诱导大模型跨渠道召回 WebUI 私有会话中的凭据与敏感记录。
  3. 零 Prompt Token 损耗与 100% 缓存保留:门禁逻辑由后端运行时与适配器纯内存执行,Tool Description 保持 100% 静态不变,系统提示词缓存命中率毫无损耗。

控制台全表面错误展示安全脱敏 (Control UI Surface Error Redaction)

为了彻底根治开发者在投屏演示、截图求助或控制台报错回显时的敏感凭证外泄:
  1. UI 弹窗与 API 异常双级过滤:前端 errorRedactor.ts 在所有 toast.error、toast.warning 以及 API Client 报错管线中前置挂载高熵过滤器,自动掩码 API Key、Bearer/JWT 认证头、数据库连接串密码。
  2. 本地文件系统路径归一化:自动将报错堆栈或提示中的敏感本地开发路径(如 /Users/username/... 或 /home/username/...)统一替换为 ~/...,避免泄露内部系统目录名与私有用户名称。
  3. 服务端序列化兜底防线:FastAPI 全局异常处理 errors.py 在向客户端分发 JSON 错误体前执行强约束清洗,杜绝原始报错携带凭据外溢。

已批准脚本变更防护 (Approved Scripts TOCTOU Drift Guard)

为防御 Time-of-Check to Time-of-Use(TOCTOU,CVE-2026-32921 级)替身攻击:
  1. 评估阶段快照锁定:在用户审批包含外部可变脚本的 Shell 或代码解释器调用(如 python script.py)时,Harness 在评估阶段自动解析并计算该操作数文件的 SHA-256 内容哈希快照。
  2. 执行边界实时重验:在审批通过最终下发执行(apply_approval_decisions)时,实时重新计算文件当前 SHA-256。若脚本在用户查看审批弹窗期间被外部恶意进程篡改、覆盖或软链接替换,立即触发 SCRIPT_OPERAND_DRIFT_REJECT 并物理阻断执行。
  3. 禁止永久放行(Hide Allow Always):涉及外部动态脚本操作数的高风险命令自动禁用「永久允许」权限,从根源堵死恶意借道既有白名单命令执行未授权代码的漏洞。

子进程敏感凭证隔离门禁 (Child Process Credential Token Isolation)

为杜绝第三方库与用户脚本窥探宿主进程环境变量(超越 OpenAI Codex #38941 局部修补):
  1. 三档继承策略体系(SSOT):
    • CORE:严格 POSIX / Runtime 白名单模式(仅保留 PATH、HOME、USER、开发工具链及 GIT_AUTHOR_* 身份,阻断一切潜在恶意或敏感变量);
    • ALL:全量继承 + 57 项动态链接器/代理劫持黑名单 + 8 维词根通配符深度净化;
    • NONE:绝对零变量物理绝缘模式;
  2. 执行全生命周期 100% 覆盖:覆盖持久 Shell 会话、Python 子进程、后台守护进程、浏览器沙箱与 CUA 驱动,消除任何脚本偷窥宿主环境凭证的供应链攻击隐患;
  3. 零误杀与开发者工具链无损兼容:精确区分秘密变量(AUTH_TOKEN、API_KEY)与开发者提交身份(GIT_AUTHOR_NAME、GIT_COMMITTER_EMAIL),在筑起最高安全屏障的同时保障本地 Git 提交丝滑顺畅。

前端 Mermaid 图表 SVG 工业级安全净化 (Mermaid Preview Strict Sanitization)

为防御大模型生成或外部导入的 Mermaid 图表中的 Stored XSS 向量:
  1. 配置收敛(Strict Security Level):将 Mermaid 渲染引擎全面约束为 securityLevel: 'strict' 与 htmlLabels: false,彻底封死底层内部 HTML 解析器的脚本执行通道;
  2. DOMParser 递归属性白名单二次净化:在渲染生成原始 SVG 后,统一经由 sanitizeMermaidSvg 纯函数过滤,递归剔除 <script>、<foreignObject>、<iframe>、<object> 等危险标签;
  3. 内联事件与链接伪协议彻底中立化:剥离任何大小写混淆的 on* 事件属性(如 oNload),剥离 href 与 xlink:href 伪协议,确保工件与 Markdown 图表在普通预览与全屏弹窗下 100% 免疫 XSS 攻击。

插件打包完整性与静态构建产物前置校验门禁 (Plugin Packaging Integrity Guard)

为彻底消灭第三方插件因遗忘构建产物导致 Agent 运行时抛出 ENOENT 崩溃的问题:
  1. 解压摄取第一时间静态校验:在插件 ZIP 解压阶段,第一时间静态比对 stdio MCP 服务声明的入口脚本与构建产物(如 dist/index.js、server.py、./bin/run)是否物理存在于包内。
  2. 组件级精准局部熔断:坏 MCP 服务自动标记并跳过,好 Skills 与 Agents 正常入库,彻底避免单个未构建组件导致整包导入失败或运行时全盘崩溃。
  3. 全解释器参数自适应剥离:智能跳过 -u、--loader 等标志参数,统一归一化 Windows 反斜杠与 ${PLUGIN_ROOT} 宏,精准识别裸相对路径。
  4. WebUI 工业级防呆与防误触:展示醒目红色警告徽章并附带 npm run build 指引,默认跳过并禁用单项启用,批量全选自动规避损坏服务。

零密钥外泄与子进程环境脱敏防线 (Zero-Key Subprocess Sanitization vs MITM Proxy)

为杜绝类似竞品 OpenClaw 方案引入自签名 MITM 代理对 TLS 生态的破坏与性能雪崩:
  1. 源头物理脱敏基线(Fail-Closed SSOT):Myrm 在子进程环境构建阶段通过 env_isolation.py 与 executor.py 强制剔除包含 KEY、TOKEN、SECRET、AUTH_ 等全部敏感变量,第三方脚本无论如何 printenv 都无法探测到真实明文。
  2. 受控底座内存内联调用:Agent 核心大模型推理直接在受控进程内存中与官方网关建立加密 TLS 连接,0 证书报错(免除 CERTIFICATE_VERIFY_FAILED 生产事故),0 代理损耗。
  3. 专属容器沙箱隔离(Agent-in-Sandbox):结合独立 Volume,从操作系统和网络物理层面提供极致防护,实现 0 配置负担下的企业级凭据安全。

多轮对抗越狱与真实执行防御底座 (Deterministic Execution-Defense vs Red-Teaming)

针对大模型容易受 PAIR 或 Many-Shot 等对抗提示词诱导越狱的行业挑战:
  1. 去特权化物理信封机制(Untrusted Data Envelope):将网页抓取与外部不可信文本强制包裹在专用隔离信封内,系统提示词协议层剥离一切指令特权,杜绝间接提示词注入。
  2. 非旁路 Layer 1~5 洋葱硬门禁:不依赖脆弱且易被绕过的外挂打分小模型,而是在系统调用入口强制执行五层物理非旁路硬拦截(Fail-Closed & Deny-First),任何越狱模型下发的破坏性系统命令、敏感目录越界或凭证探测在内核交互前即被物理诛杀。
  3. 全因果审计链溯源:每一笔工具调用与阻断决策均记录不可篡改的流水与审计签名,原生满足企业级合规与审计需要。

内核级沙箱与供应链纵深防御 (Bubblewrap / Seatbelt & Google OSV)

针对第三方依赖已知高危漏洞(CVE)与沙箱逃逸隐患:
  1. Agent-in-Sandbox 内核物理隔离(Linux Bubblewrap & macOS Seatbelt):所有代码执行强制运行于操作系统的专属命名空间中(--unshare-user, --unshare-pid, --unshare-net)。核心系统目录默认以只读挂载(--ro-bind /usr),宿主个人凭证(~/.ssh, ~/.aws)物理未映射(ENOENT)。
  2. 默认物理断网边界:沙箱代码执行默认处于完全断网状态(--unshare-net),从物理底层切断反弹 Shell、命令注入或漏洞利用导致的数据外发路径。
  3. Google OSV.dev 情报联动与离线安全咨询库:实时接入 Google 官方 OSV 全球漏洞库(osv_scanner.py),结合离线受感染依赖特征库(security_advisories.py)与包安装生命周期脚本审计(package_audit.py),构筑坚固的供应链防线。

企业级出网代理策略与本地回环绝对防护 (Enterprise Outbound Proxy & Loopback Hardlock)

针对跨国企业专线代理、安全审计及复杂内网部署场景:
  1. 原生现代化异步网络栈 (httpx):基于现代化异步网络底座,原生完整继承并解析系统的 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 与 NO_PROXY,彻底消除类似 Node.js 平台静默忽略代理的缺陷。
  2. 强制本地回环严格豁免 (防代理死循环):自动将 localhost、127.0.0.1 与 ::1 强行固化注入绕过白名单,杜绝本地 WebUI、WebSocket 传输与沙箱通信陷入代理死锁。
  3. OriginGuard 主机头与 DNS 重绑定拦截:服务端启动默认物理锁死仅绑定 127.0.0.1 环回接口;强制严格校验 Host 与 Origin 请求头,彻底粉碎利用公网域名发起的 DNS Rebinding 攻击。
  4. 子进程代理凭据脱敏安全下发:在向非受信沙箱环境派生 Worker 时,自动剥离代理 URL 中可能包含的明文密码,严密杜绝企业网关鉴权凭证被恶意脚本窥探。

元指令持久化防投毒与受保护指令文件硬门禁 (Protected Instructions & Anti-Persistence)

针对恶意网页通过间接提示词注入(Indirect Prompt Injection)诱导 Agent 篡改全局人设与系统规则的持久化后门威胁:
  1. 绝对禁写白名单剥夺:系统对 AGENTS.md、SOUL.md、CLAUDE.md、.cursorrules 等核心指令文件实施全方位受保护文件监控(path_security.py),任何写入或覆盖企图永久剥夺自动放行(Allow Always)特权,强制拉起 Monaco Diff 高亮审查卡。
  2. 内核只读挂载与 Shell AST 重定向一票否决:在沙箱内核中将此类关键文件实施只读挂载;在 Shell 命令执行器(shell_command_analyzer.py)中进行 AST 语法全管道机检,严密拦截 echo "hacked" > AGENTS.md、sed -i、tee 等命令伪装,直接返回硬拒绝(DENY)。
  3. 金库主密钥 Zero-Disk 托管于 OS 密钥环,设置里的密钥以 AES-256-GCM 密文落盘:智能体金库的主密钥委托宿主操作系统的密钥环(macOS Keychain / Linux SecretService / Windows Credential Manager);设置里保存的模型服务商、搜索、MCP、渠道凭据与本地模型密钥在 SQLite 中只以 AES-256-GCM 密文存储,其加密密钥来自环境变量或状态目录下权限为 0600 的 .encryption_key 文件,不在系统钥匙串里。

零信任金库静态加密与按命令交付凭证 (Zero-Trust Vault & Command-Scoped Credentials)

针对 API Key 和企业 Token 在多端运行时的存储与外泄威胁:
  1. 严格 Zero-Disk 原生 OS 密钥环托管:集成 MasterKeyProvider,原生对接 macOS Keychain、Linux SecretService 与 Windows Credential Manager,金库主密钥绝不以任何明文形式落盘。
  2. AES-256-GCM 数据库加密落盘:金库里的 AgentSecret 与设置里保存的各类密钥(模型服务商、搜索、MCP、渠道凭据、本地模型密钥等)在写入存储前强制执行 AES-256-GCM 加密;只拿到数据库文件、没有对应密钥时无法解密。设置里的密钥由环境变量或状态目录下权限为 0600 的 .encryption_key 文件解开,同时拿到数据库与该文件的人读得到。
  3. 凭证按命令交付:沙箱里的命令只在自己执行期间持有被授权给它的凭证(用户账号令牌、为该命令批准的一次性凭证),命令结束即移除,长驻 Shell 本身不带凭证;命令能读到交给它的值,所以交给它的凭证按原值出现在输出里就会被替换为 ***,进入模型的工具输出还要经过基于模式的密钥脱敏;同一会话的命令共享一个 Shell,这一层限制的是交付范围,不隔离故意篡改 Shell(例如埋 trap)的命令。
  4. 前端全流程脱敏防窥:WebUI 与桌面端设置面板实施强力掩码展示(sk-****abcd),支持一键平滑无感轮换与屏幕共享防窥保护。

多渠道多用户私信飞地与记忆防投毒网关 (Multi-Channel DM Enclave & Anti-Poisoning Gate)

针对飞书、微信、Telegram 等多渠道多用户并发私信同一台 Agent 时,传统 Agent 架构普遍存在的私信上下文串台、开放提权后门与记忆库被投毒等严峻挑战,Myrm 构筑了三重物理飞地:
  1. 4 元组物理隔离会话飞地(routing_enclave_key):严格按 (tenant_id, channel, peer_id, agent_profile_id) 生成独立沙盒隔离 Key,从根源物理杜绝不同租户、不同账号或同一实例多 Agent 分身之间的对话上下文串台与商业机密泄漏;
  2. 陌生人提权逃逸防御门禁(Anti-Privilege Escalation Gate):彻底修复并封死 OPEN 开放策略下未配对陌生人直接回退并继承宿主超级管理员(default_user_id)的高危特权漏洞;未配对发送者统一强制分配沙盒受限访客身份 guest_{channel}_{sender_id},其权限与管理员完全隔离,物理禁止执行破坏性工具与越权读取敏感资产;
  3. 长期记忆防投毒物理栅栏(Anti-Poisoning Fence):在入站持久化流水线 record_inbound 中引入严格的认证与访客校验;未配对陌生人与访客消息强制标记为 learning_eligible=False,物理阻断恶意 Prompt 注入污染大模型长期记忆与向量知识库。

零信任 Tailscale 远程访问与跨端网络防御体系 (Zero-Trust Tailscale Network Guard)

针对开发者与企业需要在外部移动设备(手机、平板、外部笔记本)上安全连接本地 Agent,传统方案普遍要求公网端口映射或粗暴暴露 0.0.0.0 导致安全灾难(如 OpenClaw 曾爆发超 13.5 万个实例公网裸奔、1.2 万个远程代码执行 RCE 的重大漏洞),Myrm 原生构筑了基于 Tailscale 私有网格的零信任防御闭环:
  1. WireGuard 全链路端到端加密,零公网端口暴露:利用 Tailscale 私有网格 Mesh 协议建立点对点安全隧道,所有流量在端点间通过 WireGuard 硬件级强加密直连,服务端默认物理锁死在本地回环,无需对外暴露任何公网 IP 或防火墙入站端口,彻底杜绝公网扫描、爆破与未授权 RCE。
  2. 主动服务探测与智能双模自适应降级(消除 ERR_CONNECTION_REFUSED 死路径):
    • 服务端以非阻塞方式异步执行 tailscale serve status --json 状态探测(带 1.0s 超时防护与异常隔离)。
    • 未配置 Serve 场景:智能降级展示「内网直连」模式,安全暴露 http://{fqdn}:{webuiPort} 与节点 IP,确保同网设备 100% 直连打开,并给出直观的终端启用提示。
    • 已开启 Serve 场景:自动升级并点亮「HTTPS 安全通道」绿色徽标,为移动端浏览器提供原生 Secure Context 安全上下文,天然解锁手机麦克风语音实时对话与 PWA 离线应用安装能力。
  3. 端到端加密(E2EE)跨端配对与安全会话绑定:移动端扫码即时建立专属配对令牌(32 字节高熵随机 Token)与密钥协商,严格校验 Host 白名单防范 DNS 重绑定攻击,实现如临真机的流畅移动端 Vibe Coding 体验。

智能体受控微预算自主支付与消费保险箱 (Agentic Commerce Spending Limit Vault)

针对智能体在长程复杂任务中需要自主采购微小额资源(如验证码识别打码、第三方按量数据 API、临时代理带宽、微算力)时,传统方案面临“频繁弹窗打断全自动体验”与“暴露银行卡导致恶意 Prompt 注入洗劫刷爆”的两难困境,Myrm 在业界首创了金融级受控微预算自主支付与消费保险箱闭环:
  1. 纯状态机物理控制器(SpendGovernor):
    • 零外部 I/O 与高内聚状态机:不绑定具体支付厂商,纯状态机逻辑,以微秒级纯函数运行,零网络延迟与零外部依赖;
    • 严格整型美分(Cents)分位记账:配置与已消费金额全面采用整数(cents: int),彻底消除浮点数(Float)累计舍入误差与并发精度漂移;
    • 单笔与日累计双重硬上限:严格执行 per_transaction_limit_cents 与 daily_limit_cents,超额扣款在底层一票否决并强制降级为 APPROVAL_REQUIRED;
    • 商户域名与类目白名单硬过滤:仅允许向加白的商户域名(支持 *.api.stripe.com 等通配符)及预设类目(如 api_compute, dataset)发起扣款,彻底粉碎提示词注入攻击诱导智能体向黑客账户转账的企图;
    • UTC 自然日历日滚动与 3600s 租约淘汰:每日零点依据 UTC 自然日历日(YYYY-MM-DD)原子滚动重置水位;超过 3600 秒的已终态租约自动淘汰驱逐,防止长驻进程内存泄漏。
  2. 两阶段幂等预占与防篡改签名凭据:
    • Idempotency-Key 强幂等:客户端请求携带幂等键,网络重试自动复用已有租约,绝不发生重复扣款;
    • HMAC-SHA256 签名凭据防线:预占成功签发带时间戳的防伪签名(hmac_sha256(lease_id + amount + ts)),篡改扣款金额或伪造凭据将直接被底层拦截;
    • Hold / Commit / Release 完整生命周期:预占额度、按实际账单核销多退少补、失败/取消时毫秒级无损释放。
  3. 冷重启离线账本自愈对账与 WebUI 安全保险箱:
    • 本地离线流水持久化(spending_ledger.json):每一笔扣款因果链路完整落盘审计;
    • 服务冷重启自愈对账(restore_daily_spent):服务启动时自动扫描当日已提交账本恢复真实水位,彻底消灭“故意制造崩溃重启抹平今日已用额度”的恶意逃逸漏洞;
    • WebUI 可视化保险箱与一键紧急冻结(Emergency Freeze):前端大盘实时呈现预算水位与告警条,支持商户加白与一键全局熔断阻断。
  4. 六大主流竞品对比:
    • 对标 Hermes / OpenClaw / Codex / DeepSeek-Harness / Pi / OpenCode,Myrm 是业界唯一具备“整型分位记账 + 两阶段签名凭据 + 冷重启自愈对账 + WebUI 消费保险箱”全栈闭环的商业智能体执行底座,核心模块实现 100% 满分语句覆盖。

会话金丝雀 (Session Canary)

网页文本或 HTML 注释中潜藏的**间接提示词注入(Indirect Prompt Injection)**可能诱导智能体泄露它掌握的内容。会话金丝雀默认开启。
  • 每会话随机令牌:每个智能体会话生成一个随机的 CANARY-... 令牌,连同“绝不重复该令牌”的指令追加到系统提示词中,因此各会话的系统提示词并不相同;
  • 泄露检测:每轮模型输出后,安全护栏检查回复文本与工具调用参数是否含该令牌。命中时在审计日志记录 CANARY_LEAKED,并从回复文本中抹除令牌,不会拦截工具调用。

不可逆破坏性操作硬阻断与工作区影子快照回滚套件 (Irreversible Destructive Action Hard Stop & Workspace Snapshot Rollback Suite)

当大模型在终端生成具有广泛爆炸半径或不可逆抹除特征的高危命令(如 rm -rf /、git reset --hard、git clean -fdx、find -delete、mkfs、dd,或通过 python -c "import shutil; shutil.rmtree('.')" / node -e 等内联破坏性脚本)时,传统 Agent 架构普遍存在“全自动模式直接删库”或“弹窗手滑误点导致未提交代码永久毁灭”的灾难性缺陷。针对此类不可逆破坏风险,Myrm 构筑了首个四位一体的物理阻断与工作区快照回滚安全闭环:

1. Bash AST 语法树破坏性行为硬阻断与爆炸半径分类

  • 语法树语义级机检:执行内核依托纯 Python 词法状态机与 AST 语法树解析器(destructive_rules.py,386行),在执行前精准解构复合语句、管道、内联脚本与前置环境变量,杜绝粗暴关键词正则漏判或误判;
  • 物理升格破坏性能力等级:自动判定爆炸半径,将涉及物理删除、强制覆盖、磁盘格式化的高危指令物理升格为 CapabilityLevel.IRREVERSIBLE_DESTRUCTIVE;
  • 剥夺“始终允许”并强制键入 CONFIRM:破坏性审批卡自动隐藏并剥夺 allow_always 免批特权,杜绝任何永久放行后门;前端弹出醒目的烈焰红警示横幅(DestructiveConfirmationBanner),要求用户必须显式键入 CONFIRM 方可激活放行按钮;
  • YOLO 模式绝对一票否决:破坏性硬阻断拥有超越 --yolo 自动模式的最高物理优先级,即使开启全自动无人值守,破坏性指令也绝对不会被无脑穿透。

2. 零拷贝毫秒级工作区影子快照 (Zero-Copy Workspace Snapshot)

  • 物理隔离临时索引 GIT_INDEX_FILE:在破坏性指令获准放行前的微秒级间隙,workspace_snapshot.py 突破性采用独立临时索引(git read-tree HEAD -> git add -A -> git write-tree -> git commit-tree);
  • 100% 捕获未跟踪(Untracked)新文件:彻底克服原生 git stash 无法覆盖新创建未跟踪文件的缺陷,在毫秒级生成专属快照引用(refs/myrm-snapshots/{snapshot_id});
  • 零拷贝与零工作区污染:无需向临时目录复制文件,零额外磁盘 I/O 负担,且全程不碰触开发者真实的 Git 暂存区(Index)与未提交代码。

3. 10 分钟后悔药倒计时与物理防穿透回滚 (Destructive Undo & 600s TTL Rollback)

  • 动态倒计时后悔药卡片(DestructiveUndoCard):审批核准执行后,前端对话流中自动挂载带 10 分钟(600秒)倒计时的高亮撤销卡片(严格 0 原生 emoji,全量使用 Lucide 矢量图标,深浅主题自适应);
  • 服务端 600s TTL 物理防穿透:后端 POST /api/v1/approvals/{id}/rollback 端点严格校验时间窗口,超时请求物理阻断,杜绝陈旧快照意外覆盖后续合规修改;
  • 秒级一键无损复原:用户一旦意识到误删,点击“一键撤销并回滚工作区”即可在毫秒级将工作区文件完全复原至破坏性操作发生前的快照状态,彻底消灭手滑删库的毁灭性风险。

4. 实测数据与六大主流竞品对比

  • 全息对比(Myrm vs Hermes / OpenClaw / Codex / DeepSeek-Harness / Pi / OpenCode):
    • Hermes / OpenClaw / OpenCode:无破坏性操作分级,依赖模型自我克制,YOLO 模式下一键删库;
    • Codex CLI:仅在终端交互时通过原则四弹窗询问,无工作区快照,一旦确认不可逆毁灭;
    • Myrm:业界首个将 Bash AST 硬拦截、显式 CONFIRM 键入确认、零拷贝影子快照与 10 分钟 TTL 物理防穿透回滚深度融合的工业级方案;
  • 质量门禁与全链路实测背书:
    • Harness 单测与安全测试 32/32 项全绿(2.85s),全量 244 项安全测试通过;
    • Server 业务端点与集成测试 5/5 项全绿,全量 338 项测试通过;
    • 前端 Approval 组件测试 30/30 项全绿,1840 模块零孤儿门禁 100% 通过;
    • 真实 Chrome 浏览器下自动化端到端测试 test_pending_approvals_chrome_e2e.py 100% 满分通过(1 passed in 165.59s,零 Mock 真实闭环)。

你点头时到底存了什么,以及你不点时会发生什么

审批是信任真正被花掉的地方,所以值得逐字读。 存了什么。 每一条审批都把它授权的那次请求原样存下来——不只是「已同意」三个字。记录里带着动作类型与风险分级,所以事后审计能看清被允许的是哪一版,而不只是「某件事被允许过」。 你走开会怎样。 没人处理的审批不会被无限挂着,也绝不会被当成默许:到期即拒绝,记录里明写是超时拒绝,而等待这个决定的任务会被唤醒并带着「拒绝」继续往下走。 界面上怎么看得见。 到期时刻会显示在审批卡上;与「备注通道」相同的语义分离在这里也成立:像「已自动批准」这类机器文案,永远不会被当成你说的话呈现给你。
诚实注记:今天成立的是「审批记录存住了被批内容、并按期过期回收」;而「执行的动作保证与你批准的逐字节一致」与「只有 Agent 之外的人才能批准」仍在路线图上。不要把「审批记录做得好」读成「审批防篡改」。