All tools
v0.4.1MIT

jev-guard

Type-safe is not the same as correct.

Jev-style forced-choice models are being wired in as guardrails that decide whether a tool call runs. A guardrail that returns a confidently wrong answer with a perfectly valid type still fails open. jev-guard finds the code patterns where that happens.

  • Nine rules, from a dangerous tool with no guardrail in front of it to a forced-choice question with no abstain option.
  • Build-time only: reads your Python source, never calls the model, never touches the network.
  • GitHub Action, pre-commit hook and SARIF output for the Security tab.

Know the limit

Not a guardrail and not a runtime control. It tells you where your guardrail code can fail open; you still validate thresholds against your own adversarial data.

$ pip install jevg
$ jev-guard scan src/ --fail-on HIGH

agent.py:5  [HIGH] JG001  Jev guardrail gates actions with no configured confidence threshold
    ↳ Set an explicit threshold and escalate below it.
agent.py:11 [MEDIUM] JG004  Untrusted content flows into a Jev guardrail's state
    ↳ Separate and sanitize untrusted state.

Used in the guide