leepokai/jev-guard

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Not tested (needs a key we did not have) · Linux / Luna: Not tested

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/leepokai--jev-guard.svg).

agent-harness

Not tested

The saved checks do not establish a current product result.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxneeds a key we did not havenot tested

Linux / Haiku 5.5: needs a key we did not have · Oct 23, 2026 · cda06c49ceaa · claude-code / 2.1.300 (Claude Code)
Recorded operation: limited checks

Linux / Luna: not tested · Oct 23, 2026 · cda06c49ceaa · codex / codex-cli 0.163.0
Recorded operation: node src/cli.js check Bash '{"command":"rm -rf ~/"}'

Does what it says
not tested (blocked)
  • The CLI assesses one tool call and reports allow, ask, or deny.: The README documented command exited `jev-guard: fetch failed (exit 3)` against the configured local System One endpoint; a working Jev provider is needed to produce the promised risk decision.

    Source: jev-guard check <tool> '<json input>' Assess one tool call; exit 0 allow, 1 ask, 2 deny

    Input: Bash {"command":"rm -rf ~/"}

    Expected: DENY

    Command: node src/cli.js check Bash '{"command":"rm -rf ~/"}'

    Observed: The README documented command exited `jev-guard: fetch failed (exit 3)` against the configured local System One endpoint; a working Jev provider is needed to produce the promised risk decision.

MCP
No
Local or hosted
local
Local: runs on your machine
Needs keys or browser
Needs a key or login on some setups
Maintained
Maintained
actively maintained: last commit 21 days ago; 27 commits and 4 merged PRs in 90 days; 1 open issues, 0 open PRs; 6 of 7 recent threads got a maintainer reply, median first reply 81.2h; latest release 2026-09-17

Last commit Oct 1, 2026

Issue
not tested
Examples
not tested (blocked)
  • README development test suite: command exited with code 1: hree tries, never outlives its budget --- duration_ms: 3665.827059 ... # Subtest: issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked ok 17 - issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked --- duration_ms: 0.399266 ... # Subtest: opencode: skill results are checked as instruction files (\#2) ok 18 - opencode: skill results are checked as instruction files (\#2) --- duration_ms: 6.238713 ... 1..18 # tests 18 # suites 0 # pass 17 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 6493.083815

    Source: README.md#Development

    Input: npm test

    Expected: The suite runs; its result is captured despite a failing install configuration assertion.

    Command: npm test

    Observed: hree tries, never outlives its budget --- duration_ms: 3665.827059 ... # Subtest: issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked ok 17 - issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked --- duration_ms: 0.399266 ... # Subtest: opencode: skill results are checked as instruction files (\#2) ok 18 - opencode: skill results are checked as instruction files (\#2) --- duration_ms: 6.238713 ... 1..18 # tests 18 # suites 0 # pass 17 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 6493.083815

Evidence
some README behavior checked
Agent interfaces
CLI
CLI

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.163.0 · not tested · Oct 23, 2026 on cda06c49ceaa

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 14 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict.

Source contains download and execute; review its purpose. src/guard.js

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 6 findings.

Reviewed as expected for a test run: resolver address lookups that send no data.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Needs credentials · full use untested

Operation / attempted scope limited checks

Agent-reported scope: Run jev-guard's documented safety check on a tool call (jev-guard check Bash '{"command":"rm -rf ~/"}') and get a allow/ask/deny verdict from the Jev model

Run details
run
leepokai--jev-guard-claude-haiku-5-5-1792801374704956307
date
Oct 23, 2026
time to working
not recorded
product hosting / execution
Not recorded
recorded operation scope
limited checks
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.025293
Recorded source
https://github.com/leepokai/jev-guard
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "cda06c49ceaac207904142ec92bfab793bbd18b1", "url": "https://github.com/leepokai/jev-guard"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
cda06c49ceaac207904142ec92bfab793bbd18b1

Prerequisite: full use remains untested. This is not a repo defect.

Whose fault: prerequisite · diagnosed

No Jev API key (JEV_API_KEY, AI_GATEWAY_API_KEY, or jev-guard key) is available in this guest, and the product cannot judge a tool call without one.

Recorded blocker / warning

Step: jev-guard check Bash '{"command":"rm -rf ~/"}' (the product's core operation) exits 3: no Jev API key configured.

No Jev API key (JEV_API_KEY, AI_GATEWAY_API_KEY, or jev-guard key) is available in this guest, and the product cannot judge a tool call without one.

Safety: Review signals: 1 download and execute, 6 known vulnerability.

Review signals: 1 download and execute, 6 known vulnerability.

Reviewed as expected for a test run: resolver address lookups that send no data.

Source contains download and execute; review its purpose. src/guard.js

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 6 findings.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Install / setup / connection checks
[
  {
    "status": "PASS",
    "details": {
      "working": false,
      "argv": [
        "jev-guard",
        "install",
        "claude"
      ],
      "kind": "cli",
      "returncode": 0,
      "stdout": "jev-guard: written to <guest-path>\nNo API key found yet: run `jev-guard key <key>` (or export JEV_API_KEY / AI_GATEWAY_API_KEY). Until then the guard fails open.",
      "stderr": "",
      "needs_credentials": true,
      "needs_browser": false,
      "scope": "partial: install"
    },
    "check": "install",
    "optional": false
  },
  {
    "status": "PASS",
    "details": {
      "working": false,
      "argv": [
        "jev-guard",
        "check",
        "Bash",
        "{\"command\":\"rm -rf ~/\"}"
      ],
      "kind": "cli",
      "returncode": 3,
      "stdout": "",
      "stderr": "jev-guard: no credentials: run `jev-guard key <key>` or set JEV_API_KEY / AI_GATEWAY_API_KEY (exit 3)",
      "needs_credentials": true,
      "needs_browser": false,
      "scope": "partial: missing credentials"
    },
    "check": "credentials_error",
    "optional": false
  }
]
Answers recorded for this run
  • install writes the guard hooks into the agent's user config: Real input produced the expected result: jev-guard: written to

    Source: `install` is idempotent and writes the absolute path of the current `node`

    Input: jev-guard install claude with HOME set to a scratch directory

    Expected: settings.json written under the scratch HOME

    Command: jev-guard install claude

    Observed: jev-guard: written to <guest-path> No API key found yet: run `jev-guard key <key>` (or export JEV_API_KEY / AI_GATEWAY_API_KEY). Until then the guard fails open.

  • check exits with a verdict code: needs a Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter); none is available in this guest, so the CLI exits 3 with 'no credentials'

    Source: Assess one tool call; exit 0 allow, 1 ask, 2 deny

    Observed: needs a Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter); none is available in this guest, so the CLI exits 3 with 'no credentials'

Examples

  • offline test suite (README Development section): command completed successfully

    Source: README.md Development: npm test

    Input: npm test in a copy of the checkout named jev-guard (the snapshot path 'workspace' makes one install-path test fail)

    Expected: 18 of 18 tests pass

    Command: npm test

    Observed: duration_ms: 3666.697281 type: 'test' ... # Subtest: issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked ok 17 - issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked --- duration_ms: 0.423151 type: 'test' ... # Subtest: opencode: skill results are checked as instruction files (\#2) ok 18 - opencode: skill results are checked as instruction files (\#2) --- duration_ms: 5.454866 type: 'test' ... 1..18 # tests 18 # suites 0 # pass 18 # fail 0 # cancelled 0 # skipped 0 # todo 0 # duration_ms 8028.744001

  • classify a tool call (README Install quickstart): needs a Jev API key; none provided. The documented call was run and exits 3 with 'no credentials' (see probe.json credentials_error)

    Source: README.md Install: jev-guard check Bash '{"command":"rm -rf ~/"}'

    Expected: documented command completes successfully

    Observed: needs a Jev API key; none provided. The documented call was run and exits 3 with 'no credentials' (see probe.json credentials_error)

Local or hosted: local

Suggested next step (agent-reported): Provide a TypeSafe, Vercel AI Gateway or OpenRouter key (export JEV_API_KEY or run jev-guard key) and rerun the check and scan commands from the README. Separately, make the 'install writes valid config' test not depend on the checkout directory name.

What the agent did

Run jev-guard's documented safety check on a tool call (jev-guard check Bash '{"command":"rm -rf ~/"}') and get a allow/ask/deny verdict from the Jev model

cd <guest-path> && pwd && ls -la && id -u && (. /etc/os-release; echo $PRETTY_NAME) && python3 --version && git --version; which node npm uv 2>&1; ls /inputs 2>&1
cd <guest-path> && cat README.md 2>/dev/null | head -300
cd <guest-path> && cat package.json && ls -la .coldpass src test hooks && sudo -n true && echo SUDO_OK; command -v node npm; echo "PATH=$PATH"
cd <guest-path> && git init -q 2>&1; git remote add origin https://github.com/leepokai/jev-guard 2>&1; timeout 120 git fetch --depth 1 origin cda06c49ceaac207904142ec92bfab793bbd18b1 2>&1 | tail -5; git reset --mixed FETCH_HEAD 2>&1 | tail -3; git log --oneline -1 2>&1; git status --short | head; apt-cache policy nodejs | head -3
export DEBIAN_FRONTEND=noninteractive; (curl -fsSL https://deb.nodesource.com/setup_22.x -o /tmp/ns_setup.sh && sudo -E bash /tmp/ns_setup.sh) 2>&1 | tail -5; sudo apt-get install -y nodejs 2>&1 | tail -3; node -v; npm -v
env | grep -iE 'jev|ai_gateway|openrouter|vercel|proxy' | sed -E 's/=.{0,6}.*/=<set>/' ; ls -la ~/.jev-guard 2>&1; cd /tmp && timeout 20 curl -sS -o /dev/null -w '%{http_code}\n' https://api.typesafe.ai/ 2>&1; timeout 20 curl -sS -o /dev/null -w '%{http_code}\n' https://registry.npmjs.org/jev-guard 2>&1
cd /tmp && export NODE_USE_ENV_PROXY=1 && timeout 300 npm i -g jev-guard 2>&1 | tail -5; echo "rc=$?"; command -v jev-guard; jev-guard --version 2>&1 | head -3; npm root -g
cd /tmp && export NODE_USE_ENV_PROXY=1 && timeout 300 npm i -g jev-guard 2>&1 | grep -iE 'error' | head -15
cd /tmp && export NODE_USE_ENV_PROXY=1 && timeout 300 sudo -E npm i -g jev-guard 2>&1 | grep -v notice | tail -3; command -v jev-guard; jev-guard --version 2>&1 | head -3; jev-guard --help 2>&1 | head -30
cd /tmp && timeout 60 jev-guard check Bash '{"command":"rm -rf /"}'; echo "rc=$?"; echo ---; echo 'hello' | timeout 60 jev-guard scan; echo "rc=$?"
cd <guest-path> && export NODE_USE_ENV_PROXY=1 && timeout 300 npm test 2>&1 | tail -15; echo "rc=${PIPESTATUS[0]}"; echo ---; grep -rniE 'cron|schedul|setInterval|--once|--now|webhook|loop' src hooks extensions .claude-plugin .codex-plugin .cursor-plugin 2>/dev/null | head -20
cd <guest-path> && export NODE_USE_ENV_PROXY=1 && timeout 300 npm test 2>&1 | grep -B2 -A25 '^not ok\|  not ok' | head -60
cd <guest-path> && sed -n 255,290p test/guard.test.js
cd <guest-path> && H=$(mktemp -d) && HOME=$H timeout 60 node src/cli.js install claude; echo "rc=$?"; ls -la $H/.claude 2>&1; grep -n 'claude' src/cli.js src/hook.js | head -20; command -v claude || echo "no claude cli"
cd <guest-path> && H=$(mktemp -d) && HOME=$H node src/cli.js install claude >/dev/null 2>&1; grep -c 'jev-guard' $H/.claude/settings.json; grep -o '"command": *"[^"]*"' $H/.claude/settings.json | head -3; cat -A /dev/null; cat $H/.claude/settings.json | head -20
rm -rf /tmp/jevcheck && mkdir -p /tmp/jevcheck && cp -r <guest-path> /tmp/jevcheck/jev-guard && cd /tmp/jevcheck/jev-guard && rm -rf .git && timeout 300 npm test 2>&1 | grep -E '^# (tests|pass|fail)'; echo "rc=${PIPESTATUS[0]}"
set -e; cd <guest-path>
cat > probe.json <<'EOF'
{"checks":[
 {"check":"install","kind":"cli","argv":["jev-guard","--help"],"cwd":"<guest-path>","expected_text":"dangerous-action guard"},
 {"check":"credentials_error","kind":"cli","argv":["jev-guard","check","Bash","{\"command\":\"rm -rf ~/\"}"],"cwd":"<guest-path>","expected_returncode":3,"expected_text":"no credentials"}
]}
EOF
cat > claims.json <<'EOF'
[
 {"kind":"claim","claim":"install writes the guard hooks into the agent's user config","source":"`install` is idempotent and writes the absolute path of the current `node`","input":"jev-guard install claude with HOME set to a scratch directory","expected":"settings.json written under the scratch HOME","probe_kind":"cli","argv":["jev-guard","install","claude"],"env":{"HOME":"<guest-path>"},"expected_text":"jev-guard: written to","cwd":"<guest-path>"},
 {"kind":"claim","claim":"the offline test suite runs against a fake Jev","source":"node:test with a fake Jev","input":"npm test in a checkout directory named jev-guard","expected":"all 18 tests pass","probe_kind":"cli","argv":["npm","test"],"expected_text":"# fail 0","cwd":"/tmp/jevcheck/jev-guard"},
 {"kind":"claim","claim":"check exits with a verdict code","source":"Assess one tool call; exit 0 allow, 1 ask, 2 deny","testable":false,"reason":"needs a Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter); none is available in this guest, so the CLI exits 3 with 'no credentials'"}
]
EOF
cat > examples.json <<'EOF'
[
 {"kind":"example","claim":"offline test suite (README Development section)","source":"README.md Development: npm test","input":"npm test in a copy of the checkout named jev-guard (the snapshot path 'workspace' makes one install-path test fail)","expected":"18 of 18 tests pass","argv":["npm","test"],"cwd":"/tmp/jevcheck/jev-guard","expected_text":"# fail 0"},
 {"kind":"example","claim":"classify a tool call (README Install quickstart)","source":"README.md Install: jev-guard check Bash '{\"command\":\"rm -rf ~/\"}'","reason":"needs a Jev API key; none provided. The documented call was run and exits 3 with 'no credentials' (see probe.json credentials_error)"}
]
EOF
cat > cycles.json <<'EOF'
{"detected":false,"reason":"Entry points inspected: src/cli.js commands (hook, acp, check, scan, scan-skills, install, key), README CLI section, hooks/*.json. jev-guard runs as a per-tool-call hook invoked by the host agent, with no cron, scheduler, loop, --once/--now or webhook; src/session.js notes 'no scheduler'. No product cycle to trigger.","checks":[]}
EOF
python3 -I -c "import json;[json.load(open(f)) for f in ['probe.json','claims.json','examples.json','cycles.json']];print('json ok')"
rm -rf /tmp/tmp.uRrlE0yVsa; ls -la
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -80; echo "rc=${PIPESTATUS[0]}"
set -e; cd <guest-path>
cat > probe.json <<'EOF'
{"checks":[
 {"check":"install","kind":"cli","argv":["jev-guard","install","claude"],"cwd":"<guest-path>","env":{"HOME":"<guest-path>"},"expected_text":"jev-guard: written to"},
 {"check":"credentials_error","kind":"cli","argv":["jev-guard","check","Bash","{\"command\":\"rm -rf ~/\"}"],"cwd":"<guest-path>","expected_returncode":3,"expected_text":"no credentials"}
]}
EOF
cat > claims.json <<'EOF'
[
 {"kind":"claim","claim":"install writes the guard hooks into the agent's user config","source":"`install` is idempotent and writes the absolute path of the current `node`","input":"jev-guard install claude with HOME set to a scratch directory","expected":"settings.json written under the scratch HOME","probe_kind":"cli","argv":["jev-guard","install","claude"],"env":{"HOME":"<guest-path>"},"expected_text":"jev-guard: written to","cwd":"<guest-path>"},
 {"kind":"claim","claim":"check exits with a verdict code","source":"Assess one tool call; exit 0 allow, 1 ask, 2 deny","testable":false,"reason":"needs a Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter); none is available in this guest, so the CLI exits 3 with 'no credentials'"}
]
EOF
python3 -I -c "import json;[json.load(open(f)) for f in ['probe.json','claims.json']];print('json ok')"
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo "rc=$?"; python3 -I -c "
import json,sys
t=open('<guest-path>').read()
i=t.find('{')
try:
  d=json.loads(t[i:])
  print('valid:',d.get('valid')); [print('PROBLEM:',p[:600]) for p in d.get('problems',[])]
except Exception as e: print(t[:3000])
"
cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"needs_credentials",
 "fault_owner":"prerequisite",
 "operation":"Run jev-guard's documented safety check on a tool call (jev-guard check Bash '{\"command\":\"rm -rf ~/\"}') and get a allow/ask/deny verdict from the Jev model",
 "operation_scope":"Installed the published npm package globally on Ubuntu 24.04 (Node 22.23.4, npm 10.9.9). Ran the local, credential-free parts: install claude into a scratch HOME (works), and the offline test suite (18/18 pass in a copy named jev-guard). The live Jev verdict could not run because no Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter) is available in this guest.",
 "steps":[
  "git init; git remote add origin https://github.com/leepokai/jev-guard; git fetch --depth 1 origin cda06c49ceaac207904142ec92bfab793bbd18b1; git reset --mixed FETCH_HEAD",
  "README Install prerequisite: node >= 20.3 (package.json engines). Ubuntu default nodejs is too old; installed Node 22 via NodeSource setup_22.x and apt-get install nodejs (v22.23.4, npm 10.9.9)",
  "README Install: npm i -g jev-guard (run as sudo -E npm i -g jev-guard, see deviations); jev-guard installed at /usr/bin/jev-guard",
  "README CLI: jev-guard check Bash '{\"command\":\"rm -rf ~/\"}' -> exit 3, 'jev-guard: no credentials: run `jev-guard key <key>` or set JEV_API_KEY / AI_GATEWAY_API_KEY'",
  "README Install: jev-guard install claude (HOME set to a scratch dir) -> 'jev-guard: written to .../.claude/settings.json'",
  "README Development: npm test -> 18 tests, 18 pass when the checkout directory is named jev-guard"
 ],
 "deviations":[
  "Ubuntu 24.04 apt nodejs is below the required Node 20.3; installed Node 22 from NodeSource (setup_22.x) instead.",
  "npm i -g jev-guard as non-root failed with EACCES on /usr/lib/node_modules; reran the same README command with sudo -E.",
  "npm test in <guest-path> 17/18 passed. The failing test (install writes valid config for every target) asserts the hook config contains the string 'jev-guard'; the hook command embeds the checkout path, which here ends in 'workspace', not 'jev-guard'. A copy at /tmp/jevcheck/jev-guard passes 18/18. This is a path artifact of the snapshot directory, not a product defect.",
  "No Jev credential provided or obtained; the documented check/scan operations were not exercised live (credentials_error recorded instead).",
  "The checker's replay of the install claim wrote its settings.json under <guest-path> (the checker's HOME override was not applied); this is outside the workspace."
 ],
 "stuck_step":"jev-guard check Bash '{\"command\":\"rm -rf ~/\"}' (the product's core operation) exits 3: no Jev API key configured.",
 "main_blocker":"No Jev API key (JEV_API_KEY, AI_GATEWAY_API_KEY, or jev-guard key) is available in this guest, and the product cannot judge a tool call without one.",
 "plain_failure":"The guard's main job, asking the Jev model whether a command is safe, could not be run live because the product needs a Jev account key and none was provided. Install, the local hook configuration, and the offline test suite work.",
 "suggested_fix":"Provide a TypeSafe, Vercel AI Gateway or OpenRouter key (export JEV_API_KEY or run jev-guard key) and rerun the check and scan commands from the README. Separately, make the 'install writes valid config' test not depend on the checkout directory name."}
EOF
python3 -I -c "import json;json.load(open('report.json'));print('report ok')"; cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo "rc=$?"; python3 -I -c "
import json
t=open('<guest-path>').read(); d=json.loads(t[t.find('{'):])
print('valid:',d.get('valid')); [print('PROBLEM:',p[:400]) for p in d.get('problems',[])]"; ls -la <guest-path>
Earlier attempts (1)

Luna

Native agent · Not tested

Operation / attempted scope node src/cli.js check Bash '{"command":"rm -rf ~/"}'

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

Run details
run
leepokai--jev-guard-gpt-6-luna-1792803210016918988
date
Oct 23, 2026
time to working
not recorded
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/leepokai/jev-guard
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "cda06c49ceaac207904142ec92bfab793bbd18b1", "url": "https://github.com/leepokai/jev-guard"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
cda06c49ceaac207904142ec92bfab793bbd18b1
Whose fault: prerequisite · diagnosed

No Jev provider credentials or running System One endpoint is available.

Recorded blocker / warning

Step: A working provider-backed CLI assessment

No Jev provider credentials or running System One endpoint is available.

Safety: Review signals: 1 download and execute, 6 known vulnerability.

Review signals: 1 download and execute, 6 known vulnerability.

Reviewed as expected for a test run: resolver address lookups that send no data.

Source contains download and execute; review its purpose. src/guard.js

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 6 findings.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • The CLI assesses one tool call and reports allow, ask, or deny.: The README documented command exited `jev-guard: fetch failed (exit 3)` against the configured local System One endpoint; a working Jev provider is needed to produce the promised risk decision.

    Source: jev-guard check <tool> '<json input>' Assess one tool call; exit 0 allow, 1 ask, 2 deny

    Input: Bash {"command":"rm -rf ~/"}

    Expected: DENY

    Command: node src/cli.js check Bash '{"command":"rm -rf ~/"}'

    Observed: The README documented command exited `jev-guard: fetch failed (exit 3)` against the configured local System One endpoint; a working Jev provider is needed to produce the promised risk decision.

Examples

  • README development test suite: command exited with code 1: hree tries, never outlives its budget --- duration_ms: 3665.827059 ... # Subtest: issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked ok 17 - issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked --- duration_ms: 0.399266 ... # Subtest: opencode: skill results are checked as instruction files (\#2) ok 18 - opencode: skill results are checked as instruction files (\#2) --- duration_ms: 6.238713 ... 1..18 # tests 18 # suites 0 # pass 17 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 6493.083815

    Source: README.md#Development

    Input: npm test

    Expected: The suite runs; its result is captured despite a failing install configuration assertion.

    Command: npm test

    Observed: hree tries, never outlives its budget --- duration_ms: 3665.827059 ... # Subtest: issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked ok 17 - issues \#1–\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked --- duration_ms: 0.399266 ... # Subtest: opencode: skill results are checked as instruction files (\#2) ok 18 - opencode: skill results are checked as instruction files (\#2) --- duration_ms: 6.238713 ... 1..18 # tests 18 # suites 0 # pass 17 # fail 1 # cancelled 0 # skipped 0 # todo 0 # duration_ms 6493.083815

Local or hosted: local

Suggested next step (agent-reported): Provide a working Jev provider or a local System One service, then rerun the documented check. Investigate why the Claude install test expects a settings file that the install path did not produce.

What the agent did

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

cd <guest-path> && pwd && rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'Makefile' -g '.github/workflows/**' | head -80 && python3 --version && id -u && git status --short --branch && ls -la
cd <guest-path> && find . -maxdepth 3 -type f | sort | head -100 && cat README.md && ls -la
cd <guest-path> && cat package.json && node --version && npm --version && git init && git remote add origin https://github.com/leepokai/jev-guard && git fetch --depth 1 origin cda06c49ceaac207904142ec92bfab793bbd18b1 && git reset --mixed FETCH_HEAD && cat src/cli.js
sudo -n apt-get update && sudo -n apt-get install -y nodejs npm
cd <guest-path> && node --version && npm --version && git init && git remote add origin https://github.com/leepokai/jev-guard && git fetch --depth 1 origin cda06c49ceaac207904142ec92bfab793bbd18b1 && git reset --mixed FETCH_HEAD
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -n bash - && sudo -n apt-get install -y nodejs
cd <guest-path> && node --version && npm test && sed -n '1,180p' src/cli.js && sed -n '1,180p' src/jev.js && sed -n '1,140p' src/guard.js
cd <guest-path> && sed -n '1,220p' src/cli.js && sed -n '1,180p' src/jev.js && sed -n '1,100p' src/guard.js
cd <guest-path> && JEV_BASE_URL=http://127.0.0.1:9 node src/cli.js check Bash '{"command":"rm -rf ~/"}' ; true
cd <guest-path> && sed -n '1,260p' test/guard.test.js | tail -130 && sed -n '260,290p' test/guard.test.js && ls -la .coldpass
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["node","src/cli.js","check","Bash","{\"command\":\"rm -rf ~/\"}"],"cwd":"<guest-path>","env":{"JEV_BASE_URL":"http://127.0.0.1:9"},"expected_returncode":3,"expected_text":"fetch failed"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"The CLI assesses a potentially destructive tool call and reports a deny decision.","source":"jev-guard check <tool> '<json input>'   Assess one tool call; exit 0 allow, 1 ask, 2 deny","input":"Bash {\"command\":\"rm -rf ~/\"}","expected":"DENY","probe_kind":"cli","argv":["node","src/cli.js","check","Bash","{\"command\":\"rm -rf ~/\"}"],"cwd":"<guest-path>","env":{"JEV_BASE_URL":"http://127.0.0.1:9"},"expected_returncode":3,"expected_text":"fetch failed","testable":false,"reason":"The documented assessment needs a Jev API/provider service, and the configured local <email>:9 returned fetch failed."}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"README development test suite","source":"README.md#Development","input":"npm test","expected":"17 passed, 1 failed","argv":["npm","test"],"cwd":"<guest-path>","expected_text":"not ok 11 - install writes valid config for every target"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"The README and entry points describe per-tool hooks and a CLI, not a product scheduler or recurring cycle. The documented operation is a single `jev-guard check` invocation.","checks":[]}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cd <guest-path> && cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"The CLI assesses one tool call and reports allow, ask, or deny.","source":"jev-guard check <tool> '<json input>'   Assess one tool call; exit 0 allow, 1 ask, 2 deny","input":"Bash {\"command\":\"rm -rf ~/\"}","expected":"DENY","probe_kind":"cli","argv":["node","src/cli.js","check","Bash","{\"command\":\"rm -rf ~/\"}"],"cwd":"<guest-path>","env":{"JEV_BASE_URL":"http://127.0.0.1:9"},"expected_returncode":3,"expected_text":"fetch failed","testable":false,"reason":"The README documented command exited `jev-guard: fetch failed (exit 3)` against the configured local System One endpoint; a working Jev provider is needed to produce the promised risk decision."}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"README development test suite","source":"README.md#Development","input":"npm test","expected":"The suite runs; its result is captured despite a failing install configuration assertion.","argv":["npm","test"],"cwd":"<guest-path>","expected_text":"not ok 11 - install writes valid config for every target","expected_returncode":1}]
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cd <guest-path> && cat .coldpass/claims.json && cat .coldpass/probe.json && cat > .coldpass/report.json <<'EOF'
{"outcome":"blocked","fault_owner":"prerequisite","operation":"jev-guard check Bash '{\"command\":\"rm -rf ~/\"}'","operation_scope":"Pinned jev-guard cda06c49ceaac207904142ec92bfab793bbd18b1; Node 20.20.2 installed. A working Jev provider is required for the documented risk assessment.","steps":["Installed Node.js using the NodeSource Node 20 setup script and apt.","Ran the documented npm test command: 17 tests passed and the install configuration assertion failed.","Ran the documented CLI check operation; it reached the provider call but failed with `jev-guard: fetch failed (exit 3)` against the local test endpoint.","Replayed probe, README claim, cycles, and example artifacts with the checker."],"deviations":["The Ubuntu apt Node package initially installed v18.19.1, below the project's >=20.3 engine requirement; replaced it with Node 20.20.2.","No provider credentials were available; used a loopback <email>:9 to capture the actual no-service behavior.","`npm test` failed at `install writes valid config for every target`: expected Claude config presence was false."],"stuck_step":"A working provider-backed CLI assessment","main_blocker":"No Jev provider credentials or running System One endpoint is available.","plain_failure":"The guard could not evaluate the tool call because it could not connect to its Jev service. The documented test suite also has one failed install configuration assertion.","suggested_fix":"Provide a working Jev provider or a local System One service, then rerun the documented check. Investigate why the Claude install test expects a settings file that the install path did not produce."}
EOF