自动化与运维 prompt-injectiontool-call-securityrisk-scoringpermission-hooksskill-scanningacp-proxycoding-agent-security

Jev Guard

为多种编码代理逐次评估工具调用,并拦截危险操作与提示注入。

FollowAgents 评估 · FARS-2.1
推荐
79/ 100 五分制 4.0 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全19 / 29 · 3.3/5

最小权限为2:只评估经宿主钩子或ACP代理经过的调用,并跳过只读工具,但安装会修改多个用户级代理配置,且会读取会话、转录和指令文件。用户确认为2:deny/ask/allow策略、ACP确认和多宿主适配均有代码测试,但Codex、Gemini等部分宿主无法原生ask,只能警告。数据流透明度为3:README明确列出发送的字段、两个服务端点、本地会话和缓存位置、密钥优先级及未覆盖路径。敏感数据处理为2:密钥文件使用0600且声称不交给代理,但工具结果可能含任意敏感内容并被发送给第三方;零保留只是请求,材料未证明服务端执行。依赖安全为2:运行时宣称零直接依赖并限定Node版本,降低供应链面,但可选peer依赖使用通配版本,且核心判断依赖远程模型/API。外部效果为2:危险操作可阻断或请求确认,安装具有幂等测试;然而默认故障开放,并允许明确用户请求把中风险ask提升为allow。回滚为1:易撤销操作进入风险模型,但未提供卸载命令、配置备份或恢复流程。来源归因为2:仓库、作者、许可证、Jev及价格资料来源均有标示,但发布者身份未经验证,维护主体仅以账号呈现。

2可靠稳定12 / 14 · 4.3/5

自洽性为3:README中的阈值、宿主差异、上下文规则、注入判定和安装行为均与所示测试相互吻合。依赖可用性为2:API调用有三次重试、总超时、双后端和可配置故障关闭;但默认故障开放会在服务不可用时取消保护,且功能仍依赖外部Jev服务。失败消息为3:deny、ask、注入、技能异常、HTTP错误和超时均有明确消息或退出语义,并有相应静态测试;满分仅表示材料中的错误呈现充分,不代表已执行验证。

3适用触发16 / 18 · 4.4/5

受众与场景为3:覆盖八类代理/协议、CI检查、技能扫描、GUI宿主和多种风险场景,并分别说明安装方式。能力边界为3:明确声明其是护栏而非沙箱,只能看到经过代理或钩子的路径,模型可能出错且应保留其他控制。触发精度为2:提供分级阈值、用户请求和不可信来源上下文、讨论内容豁免及大量测试,但短于200字符的结果、本地编辑/搜索结果和可配置跳过项会形成盲区,概率阈值也存在模型误判空间。环境适配为3:针对各宿主输出方言、绝对Node路径、GUI密钥读取、ACP及可调环境变量均有具体支持和测试证据。

4规范维护15 / 18 · 4.2/5

信息架构为3:安装、决策、调优、CLI、开发、安全与源码布局清晰。安装说明为3:每个宿主都有命令、行为差异、密钥位置及通用CLI流程。命名稳定性为2:命令和环境变量体系一致,但项目仍处于0.3.1,且描述字段列举的宿主少于README,显示接口仍可能演进。示例与FAQ为3:包含危险调用、ACP配置、CI用法、阈值表和校准样例;虽无独立FAQ,常见操作问题已充分覆盖。已知限制为3:明确记录默认故障开放、钩子绕过、ACP可见范围、短结果跳过及非沙箱性质。许可证为3:MIT元数据与完整LICENSE一致。版本与变更记录为1:有明确包版本,但材料中没有CHANGELOG、发布历史或升级兼容说明。维护责任为2:提供作者、问题跟踪和私密安全报告渠道,但没有维护团队、响应时限或长期支持政策,且发布者身份未知。

5有效结果12 / 13 · 4.6/5

输出可用性为3:决策被转换为各宿主可消费的deny、ask、warning、flag、异常和退出码,并包含原因与概率信息。边际价值为3:统一多宿主策略,将调用前风险、结果注入检测、会话上下文和技能扫描组合在一个工具中,材料显示相对于宿主原生控制有明确增量。成本收益为2:给出价格、延迟和缓存设计,零直接依赖也降低部署成本;但测量样本仅21次、部分性能与价格来自外部声明,且每次调用的网络延迟、隐私暴露和默认故障开放构成实际成本。

6证据核验5 / 8 · 3.1/5

声明可追溯性为2:关键策略可定位到源码模块、环境变量、阈值和测试,外部价格与隐私声明也标出来源;但未提供相关核心源码文件、宿主清单文件或原始校准记录供本次材料内核验。跨来源印证为2:README、SECURITY、package元数据、许可证和广泛测试彼此支持,尤其印证阈值、安装、密钥权限和宿主方言;然而实时API、速度、662个技能扫描及端到端结果主要是仓库自述,未在所给材料中独立复核。事实与推断分离为2:文档多次区分claimed、measured、tested及限制,但仍用“正是”“不会注意”等推广性表述,并把静态可见的测试代码与已实际通过或线上测量的断言并列呈现。

证据充分度: 评估于 2026年9月20日 审查版本 94996ea80b6b
使用前请注意
  • 默认故障开放:Jev不可达或超时时,保护可能只发出警告并允许调用;高风险环境应评估启用JEV_GUARD_FAIL_CLOSED=1的可用性影响。
  • 工具调用、工作目录和工具结果会发送至TypeSafe或Vercel端点;敏感仓库可能因此向第三方披露源码、日志、凭据或个人数据。
  • 覆盖取决于宿主钩子语义。内建网络访问、未经过钩子的工具路径、短于200字符的结果、部分本地工具结果和显式跳过列表可能绕过检查。
  • 部分宿主不能真正暂停并询问用户,风险调用可能仅收到警告;部署前应逐宿主确认实际强制语义。
  • 材料未提供卸载或配置恢复流程;安装前宜备份各代理的用户级配置。
  • 本评估未执行代码、测试或联网复核;实时API表现、外部隐私承诺、价格、延迟和端到端兼容性仍需独立验证。
评估证据 [1][2][3][4][5]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Jev Guard 是一个面向编码代理的安全钩子,在工具执行前后调用 Jev 进行结构化风险判断。核心由 src/guard.js 的策略、src/context.js 与 src/session.js 的会话上下文、src/skills.js 的指令文件扫描,以及各宿主适配器组成。它把调用分为允许、询问或拒绝,并将工具结果中的提示注入和 canary 标记为不可信内容。项目支持 Claude Code、Codex、Copilot CLI、Gemini CLI、Cursor、pi、OpenCode,以及通过代理接入的 ACP 客户端,但不同宿主的审批能力并不一致。它通过 npm 包、原生钩子、插件或 ACP 代理部署;数据边界仍包含向 TypeSafe API 或 Vercel AI Gateway 发送工具调用或结果。

工具运行前,src/hook.js、src/opencode.js、extensions/jev-guard.ts 或 src/acp.js 接收宿主事件,并将工具名称、参数、当前目录和会话上下文交给 src/guard.js。守卫向 Jev 提交 risk、approval、user_requested 和 from_untrusted 等类型化问题:from_untrusted 达到 0.7 或 risk 达到 2.5 时拒绝;risk 达到 1.5 或 approval 达到 0.75 时通常要求审批;明确由用户请求的操作可从 ask 降为 allow,但不能解除 deny。工具返回后,它用 directed 和 kind 检测面向 AI 的 injection 或 canary,将命中内容写入会话的不可信上下文并警告代理不要执行。src/skills.js 还会扫描技能、插件、规则、CLAUDE.md 和 AGENTS.md,识别数据外传、隐蔽执行、指令覆盖、canary 与无关副作用,并按内容哈希缓存结果。CLI 提供 hook、acp、check、scan、scan-skills、install 和 key 命令,分别用于宿主集成、单次判定、内容扫描与配置。

  1. 同时使用 Claude Code、Codex 和其他编码代理的团队,希望用相同阈值与会话记忆审查各宿主的工具调用。
  2. 允许代理运行 shell、Git、部署或数据库命令,但希望破坏性操作被拒绝、敏感操作先征求人工批准的开发者。
  3. 让代理读取网页、命令输出或 MCP 结果,并担心外部内容夹带提示注入或 canary 指令的用户。
  4. 安装第三方技能、插件或规则文件前,需要筛查数据外传、隐蔽执行和指令覆盖行为的维护者。
  5. 希望在 CI 中用 jev-guard check 或 jev-guard scan 对自定义风险样例和阈值进行校准的安全工程师。
  6. 使用 Zed、JetBrains 等 ACP 客户端,需要在客户端与代理之间增加权限检查代理的团队。

这个 Agent 有哪些优点和局限?

优点
  • 同一核心覆盖八类编码代理或协议接入,并为不同宿主提供薄适配器和一致的会话策略。
  • 不仅评估单次风险,还结合用户最近请求和已读取的不可信内容,能区分用户明确授权与外部内容植入的指令。
  • 同时覆盖执行前判定、执行后提示注入检测和技能或插件指令文件扫描,而非只保护 shell 命令。
  • 策略阈值、问题类型和判定顺序均有明确记录,并提供 check、scan 与 scan-skills 命令用于测试和校准。
  • npm 包无运行时依赖,且 README 报告典型调用成本约为每次 0.00004 美元。
局限
  • 核心判定依赖 Jev 及外部 TypeSafe API 或 Vercel AI Gateway,需要网络连接、API 凭据,并会把工具调用或结果发送到外部服务。
  • 它是安全护栏而非沙箱;配置错误、未经过钩子的内建工具或代理绕过路径都不在其完整控制范围内。
  • Codex 和 Gemini 的相关钩子目前不能原生弹出 ask,因此风险操作只能转成警告;不同宿主的保护语义并不完全一致。
  • 默认采用 fail-open,Jev 不可达时会警告后允许执行;要求强制阻断的环境必须显式设置 JEV_GUARD_FAIL_CLOSED。
  • 短于 200 字符的结果以及本地编辑或搜索工具结果不会扫描,ACP 代理也只能看到实际经过客户端协议的数据。
  • README 仅报告 Claude Code 和 OpenCode 的实时端到端验证;Codex、Copilot CLI、Gemini CLI 与 Cursor 主要按文档载荷格式测试。

如何安装或部署这个 Agent?

需要 Node.js 20.3 或更高版本,以及 TypeSafe 控制台密钥、vck_… Vercel AI Gateway 密钥,或有效的 VERCEL_OIDC_TOKEN。通用安装:

npm i -g jev-guard

jev-guard key "你的密钥"

jev-guard install claude

最后一条可将 claude 替换为 codex、copilot、gemini、cursor、pi 或 opencode。原生安装方式包括:Claude Code 运行 /plugin marketplace add leepokai/jev-guard 后运行 /plugin install jev-guard@jev-guard;Codex 运行 codex plugin marketplace add leepokai/jev-guard,随后从插件浏览器安装并用 /hooks 授予信任;Gemini CLI 运行 gemini extensions install https://github.com/leepokai/jev-guard;pi 运行 pi install npm:jev-guard;OpenCode 0.2.1 及以上版本在 opencode.json 中配置 "plugin": ["jev-guard"]jev-guard key 默认把密钥以 0600 权限保存到 ~/.jev-guard/config.json。

如何使用这个 Agent?

先验证一个工具调用:

jev-guard check Bash '{"command":"rm -rf ~/"}'

退出码 0、1、2 分别表示 allow、ask、deny。扫描文件可运行 jev-guard scan path/to/file,扫描已安装的技能、插件、规则及项目指令文件可运行 jev-guard scan-skills。宿主通过 jev-guard hook [--agent codex|copilot] 以 stdin/stdout JSON 调用统一钩子;ACP 场景使用 jev-guard acp -- <agent command...> 启动代理。可用 JEV_GUARD_DENY_SCORE、JEV_GUARD_ASK_SCORE、JEV_GUARD_ASK_P、JEV_GUARD_INJECT_P、JEV_GUARD_UNTRUSTED_P 和 JEV_GUARD_USER_P 调整策略。默认 API 不可用时会警告并放行;设置 JEV_GUARD_FAIL_CLOSED 后则改为拒绝。

这个 Agent 与同类方案有什么区别?

Claude Code 的 auto mode 使用独立分类模型审查操作;Jev Guard 用 risk、user_requested 和 from_untrusted 等类型化 Jev 问题实现相近的允许、询问和拒绝流程。它的主要差异是同一策略还能用于 Codex、Copilot CLI、Gemini CLI、Cursor、pi、OpenCode 和 ACP,并可在 Claude Code 内作为第二层判断;代价是依赖外部 Jev 服务,且部分宿主无法提供原生 ask 流程。

常见问题

运行成本是多少?
README 给出的 Jev 输入价格为每百万 token 0.042 美元且输出免费;典型调用约 1,000 token,即约 0.00004 美元,1,000 次调用约 0.04 美元。实际费用取决于发送的上下文与调用次数。
服务不可用时会阻止代理吗?
默认不会。Jev Guard 会在 stderr 发出警告并 fail-open;设置 JEV_GUARD_FAIL_CLOSED 后,不可达的 Jev 调用会改为拒绝。
哪些数据会发送到外部服务?
执行前发送工具名称、参数和当前目录等调用数据,执行后可能发送工具结果;请求通过 TLS 发往 api.typesafe.ai 或 ai-gateway.vercel.sh,并请求零数据保留。工具结果可能包含敏感仓库内容,因此采用前应评估 TypeSafe 的隐私政策。
它能替代沙箱或最小权限配置吗?
不能。项目明确将自身定义为护栏;宿主配置错误、未经过钩子的工具路径和模型误判仍可能绕过保护,应继续保留沙箱、权限隔离及其他控制。
可以自行调整阻断和提示注入阈值吗?
可以。风险、审批、提示注入、指令文件和不可信来源阈值均有对应的 JEV_GUARD_* 环境变量,也可用 check 和 scan 命令针对本地样例进行校准。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents