Abide
★ 619▲ 9coldteadotai/abide
Hooks into Claude Code, Codex, and OpenCode, and asks Jev one question per rule whether each edit breaks your AGENTS.md or CLAUDE.md rules.
Decision layer for DeepSeek Harness whose failure policy rejects the value allow at configuration time, from plain JavaScript as well as TypeScript. Its verify script installs the built tarballs into a fresh consumer before testing them.
This repository has been archived by its owner and is no longer maintained.
View on GitHub →Hands-on review
A decision layer for DeepSeek Harness whose failure policy refuses the value 'allow' — not by default, but at configuration time, from JavaScript too.
Good for
Watch out for
Tested Sep 22, 2026 at d2f77a1f6890 · node:24 in Docker running its own verify.sh, plus the built core driven from plain JavaScript to attack the failure policy
How we reviewed this: we ran scripts/verify.sh, which is what its CI runs, then built the core and attacked its failure policy from plain JavaScript — the path a TypeScript-only guarantee does not cover. We made no Jev calls.
The decision layer for DeepSeek Harness: the harness runs the agent, Jev makes the small decisions, and code owns the verdict. Two packages — a provider-agnostic jev-core and the dsh-jev plugin that wires it into DSH’s waterfalls.
jev-core’s config declares what may happen when a required assessment produces no usable answer:
/**
* What happens per function when a required assessment produced no usable
* result. Tool assessment may only ask or hold — deriving a permission from a
* failure is rejected at configuration time.
*/
export interface JevFailurePolicy {
readonly toolSelection: 'fallback'
readonly toolAssessment: 'ask' | 'hold'
…
}
A type is a promise to TypeScript users. We are more interested in what happens to everyone else, so we built the package and configured it from plain JavaScript:
toolAssessment: 'ask' accepted
toolAssessment: 'hold' accepted
toolAssessment: 'allow' rejected: onFailure.toolAssessment must be "ask" or "hold":
a missing execution assessment…
toolAssessment: 'off' rejected: same
toolAssessment: undefined accepted (defaults to 'ask')
You cannot configure this thing to allow a tool call because the decision failed. Not “it defaults to safe” — the value is refused, in a runtime check, with a message that says why. Of everything we have reviewed in this category, this is the strongest form of the property: Canny proves it with a pure function, JevLoop prevents it by controlling the option set, and this one refuses to build the object.
Its own suite tests the same shape from the other side, and the test names read like a specification:
That last one is a failure we have found elsewhere by hand — a wrapper adding its own retries on top of the SDK’s, quietly multiplying the worst case.
verify.sh actually doesIt is more than a test run, and it all passed:
✓ Lockfile passes supply-chain policies (301 entries in 2.2s)
== unit + integration tests == jev-core: 82 passed, 8 files
[packaging] installing tarballs + pinned DSH peers (npm, no registry dependency on @buberlo/*)
[packaging] running the runtime smoke (real DSH services + installed plugin)
smoke: OK (standalone core, real plugin load, fail-closed enforcement, single cordis, client artifact)
[packaging] type-checking a consumer that uses the published types
packaging test PASSED
verify: OK
It packs the tarballs, installs them into a fresh consumer with no registry dependency on its own scope, loads the plugin into real DSH services, and type-checks a consumer against the published types. That is the difference between “the tests pass in the repository” and “the thing you would install works”, and it is the gap we found in patdown the hard way — green CI, unusable package.
The config module opens with this:
Thresholds are deliberately uncalibrated defaults: they are a starting point for the target application, not measured operating points. Document any deployment-specific calibration next to the config that carries it.
docs/benchmark.md says its runs “remained fail-closed. No thresholds or completeness checks were weakened”, which is the right thing to record about a benchmark of a gate — the usual temptation is to loosen the gate until the numbers improve.
It is a DSH plugin. jev-core is provider-agnostic and could be lifted out, but the packaging, the settings section and the client card are all DSH. If you do not run DeepSeek Harness there is nothing here to run, only to read — and config.ts and assessment.ts are worth reading.
Arguments are redacted before transmission against a default key list, and the assessment is bound to a hash of the exact arguments, so an approval does not survive the call being changed underneath it. Both are tested; we did not re-derive them.
MIT by package.json; GitHub detects no licence, which scanners will flag.
Small, unshowy, and it gets the one thing right that most of this category gets wrong — and then makes it impossible to get wrong by configuration.
If you run DSH, install it. If you do not, read JevFailurePolicy and the line under it, and ask why your own gate can be configured to allow.
For the same property proved differently, see Canny and JevLoop; for the version that gets it wrong, Jevmind.
See how it compares with other tools in Best Jev tools, tested hands-on.
Review updated Sep 22, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.
coldteadotai/abide
Hooks into Claude Code, Codex, and OpenCode, and asks Jev one question per rule whether each edit breaks your AGENTS.md or CLAUDE.md rules.
dealerdefi/Jevmind
Nine skills over one brain: a shell-command gate, a diff triage, a router and more, each decision appended to a hash-chained ledger that names any record edited afterwards. Runs offline on local reflexes or against Jev.
DevMortimer/pi-warden
Guardrails for the Pi coding agent. Jev judges every write and edit against the rules in pi-warden.md.
New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.
Powered by Buttondown. See our privacy policy.