360 Secure SkillHub
360 安全技能中心

jev-gate approval firewall

该 Skill 在风险操作前把即将执行的动作与上下文发给托管判定服务,返回 approve、hold 或 escalate、置信度与触发规则,并用退出码供代理分支;决策会进入账户日志供人工复核。核心依赖 curl 与 API Key,可选 MCP 或 Claude Code 接入。

huckcity
huckcity
热度 7.64
最近更新 2026-09-20 22:47:33
分类:安全依赖:代码执行 / 第三方 API应用场景:工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add jev-gate
Metadata
name
jev-gate
description
Ask a hosted judge before risky agent actions. Returns approve, hold, or escalate with a confidence number and the rule that fired, and keeps a reviewable decision log. Use before deleting data, spending money, touching production, or messaging customers.
version
1.0.0
metadata
{"openclaw":{"requires":{"env":["JEV_GATE_KEY"],"bins":["curl","python3"]},"primaryEnv":"JEV_GATE_KEY","envVars":[{"name":"JEV_GATE_KEY","required":true,"description":"API key from https://jev-gate.fly.dev (14-day free trial, card required, not charged during the trial)."},{"name":"JEV_GATE_URL","required":false,"description":"Override the gate base URL. Defaults to https://jev-gate.fly.dev."}],"homepage":"https://jev-gate.fly.dev","emoji":"🚦"}}

jev-gate — ask before you act

Run this before an action you would not want to take unsupervised: deleting or overwriting data, moving money, touching production, messaging a customer, changing credentials. The gate answers with a verdict, a confidence number, and the rule that fired — and keeps the decision in a log a human can review later.

Setup (once)

  1. Get a key at https://jev-gate.fly.dev — 14-day free trial, card required and not charged during the trial; cancel any time in the billing portal.
  2. Export it:
export JEV_GATE_KEY=jgate_...

That is the whole install: one key, one HTTPS call. No package, no dependencies beyond curl.

Check an action

scripts/jev-gate-check "about to delete 1,204 rows from the staging events table"

Exit codes, which is all an agent needs:

code verdict what to do
0 approve continue with the action
2 hold pause this action and queue it for routine human review; do not retry
3 escalate stop, tell the user a human decision is required
1 error the gate could not answer — treat as blocked, never guess

The raw call, if you would rather do it yourself:

curl -s https://jev-gate.fly.dev/v1/gate \
  -H "Authorization: Bearer $JEV_GATE_KEY" \
  -H 'content-type: application/json' \
  -d '{"transcript":"agent is about to drop the orders table in production","tool_calls":["psql drop"]}'
{
  "action": "escalate",
  "confidence": 0.38,
  "violation": 0.71, "needs_human": 0.72, "risk": 2.4,
  "reasons": ["risk 2.40 ≥ 2.00", "needs_human 0.72 > 0.60"],
  "latency_ms": 474
}

Branch on action — never on the prose. reasons is the rule that fired, and it is what makes the decision explainable to the human who reviews it.

Reading the log

Every call lands in the account's dashboard at https://jev-gate.fly.dev/dashboard with the transcript, the verdict, the reasons, and the latency. There you can tune the four thresholds it branches on (approve if confidence ≥, hold if violation >, escalate if needs_human >, escalate if risk ≥), work the review queue for the muddy middle, and export CSV/JSON. Reviews are closeable: mark reviewed, annotate, reopen.

Going further

  • MCP: curl -sO https://jev-gate.fly.dev/client/jev_gate_mcp.py, then point your MCP config at that file — the gate becomes a check_action tool.
  • Python, any framework: from jev_gate_mcp import guarded wraps your tool dispatcher so held and escalated calls raise before the side effect.
  • Claude Code: curl -sO https://jev-gate.fly.dev/client/claude_code_hook.py and wire it as a PreToolUse hook; exit 2 blocks the call.
  • All client files: https://jev-gate.fly.dev/client

Rules of thumb

  • Gate the action, not the thought: pass what is about to happen and the context behind it.
  • A hold is not a failure — it is the product working. Queue it and keep moving.
  • If the gate is unreachable, block. A firewall that guesses is not a firewall.