← All reviews

Repo review · Tested September 28, 2026

dzhng/jevgrep lets a coding agent ask where the code is

dzhng/jevgrep is a semantic code search tool for coding agents: ask a plain-English question, get ranked files and excerpts. With its paid Jev model counted, making the agent search with jevgrep first raised our total cost by 19%.

Verdict: adopt with care
View repository ↗
A slate-blue pigeon in a mustard cardigan stands on a rolling ladder against a wall of wooden card-catalog drawers, many pulled partly open, and lifts an index card from one drawer with its beak while a coin meter on the cabinet holds a tray of orange coins.
dzhng/jevgrep checks the card catalog for your coding agent and pulls the right card, while Jev's coin meter charges for every drawer it opens.

A coding agent in a repository it has never seen has to find the code before it can change it. It greps for words from the issue, reads a file, and greps again.

dzhng/jevgrep, published on npm as @dzhng/jevgrep with the command jg, is a semantic code search tool for that first step. The agent asks one plain-English question, and jg returns ranked files, excerpts with line numbers, and where the relevant functions are declared. To rank the files, jg asks Jev many small questions about folders, file previews, and declarations. Jev is a model from TypeSafe that answers yes-or-no questions with a probability. Our fast-jev-compaction review covers another tool built on Jev.

The README promises “Same intelligence. ~30% lower cost.” That figure, like the 40% in the launch post, leaves out what Jev costs. With Jev counted, requiring a jg search first cost 19% more than grep alone on our six bug fixes.

Tested: version 0.4.2, commit baf2d1c4c719e339f10e7dfb20cf90f9fe402e01, on September 28, 2026. Workflow: Claude Code with Sonnet 5 worked six recent bug fixes from networkx, pyparsing, black, zod, mobx and pinia two ways: grep only, and with jg required as the first search. The upstream fix’s own tests, unseen by the agent, judged each result. Result: requiring jg fixed 3 bugs to grep’s 2 and cost 19% more once Jev is counted. In all eight of its searches, jg’s ranked list included the file the upstream fix changed. Verdict: adopt with care for finding code in unfamiliar repositories, with Jev’s cost counted.

dzhng/jevgrep needs a Jev provider key and sends your code to that provider

The README lists three setup steps: npm install -g @dzhng/jevgrep, jg auth to save a key for one of four services that serve Jev (Vercel AI Gateway, TypeSafe, OpenRouter, or OpenCode Zen), and jg skill to teach the agent when to call it. The README says jg needs Node 22 or newer on macOS or Linux and that everything except the Jev requests runs on your machine. We ran it on Ubuntu. The project is MIT-licensed and pre-1.0.

Those requests carry your code. The README says jg sends “eligible source content” to the provider, skips binaries and obvious credential files by default, and warns that these filters “are not a guarantee”; it tells you to pick a search folder you are willing to send. At version 0.4.2 the README also says endpoint overrides are not used, so you cannot point jg at your own gateway.

We planted fake secrets in .env, .env.local, config/secrets.yml, id_rsa, and a hidden folder, then asked jg where credentials are configured. None of them appeared in any request to Jev. The check covers one small project and one question, so keep sensitive folders out of the search, as the README advises.

Requiring jg first fixed one more bug and cost more

Both setups used one prompt template, the same model, and a 15-minute limit; the jg setup added an instruction to call jg before any other search. The six bugs came from Python and TypeScript projects of 292 to 975 files, all fixed upstream since June 2026, and none from SWE-bench, the public set of bug-fix tasks the project tuned on. No figure below is an invoice. Claude costs are the sessions’ token counts priced at Anthropic’s API list prices. Jev costs apply TypeSafe’s published $42 per billion input tokens to the token counts its direct service reported. Other Jev providers are untested.

Setup Bugs fixed (of 6) Claude cost Jev cost Total
Grep only 2 $3.64 $0 $3.64
jg required first 3 $3.56 $0.77 $4.33

A third setup, with both tools available and the agent choosing, is not reported because one of its sessions timed out.

The extra fix with jg required is one bug (zod) in one run. Neither setup fixed networkx, pyparsing, or mobx. One run on each of six tasks is too few to show whether jg adds or loses fixes; in this sample it lost none.

The advertised saving leaves Jev out

On Claude spend alone, requiring jg was 2.3% cheaper than grep. Add Jev and it was 19% more expensive. The project’s own benchmark points the same way: its README reports the cost of Sol, the agent model it used, falling from $7.62 to $5.44 across ten Python tasks, “excluding Jev cost”. Adding the Jev charges the project recorded for that run gives about $7.01. That is about 8% below the $7.62 baseline by our arithmetic; the project’s Jev figure is incomplete, so the real saving is at most 8%.

On X, the maintainer replied that Jev costs “about 1 cent per task”. We measured $0.03 to $0.21 per task with jg required, about $0.10 per search on average. The project’s committed results show $0.009 to $0.415 per task, a range our figures sit inside. One user reported $1.30 for a single search on a large codebase; our largest repository had 975 files, so that case is untested here.

The main comparison ran jg with its local answer cache off (--no-cache). The cache is on by default, so an agent that repeats a question on an unchanged repository may pay less than we measured. Count the Jev provider’s usage with your agent costs before judging any saving.

jg ranked the fixed file in every list, and grep found it too

With jg required, the agent ran eight jg searches across the six tasks. Every ranked list included the file the upstream fix changed, at positions one to seven, and it was first in six lists. The grep-only agent also found that file on five of the six tasks. Every issue named functions or classes, and named code is easier for any search to find.

jg may help more when the issue does not name the code, but none of these six tasks tested that case.

jg marks incomplete searches as incomplete

When the provider answered with rate-limit errors, jg stopped, exited with an error code, and printed “0 relevant files; discovery incomplete” with the provider’s error. In a separate check with the cache on, the provider returned server errors partway through; jg printed “2 relevant files; discovery incomplete” and named the error. A rerun with the same cache, after the errors stopped, reused the answers it already had and requested only the rest.

Asked where the pinia codebase exports Prometheus metrics, which it does not, jg answered “0 relevant files” for about one cent.

Use jg to find your way into unfamiliar code

Adopt dzhng/jevgrep with care for finding code in repositories your agent does not know, and count Jev’s cost with your agent’s. Its ranked lists included the file each fix changed in all eight searches, but requiring jg first raised the total with Jev to 19% above grep on six bug fixes.

Skip it when the issue names code grep can find, when source must stay on your machine, or when you need your own endpoint. Claude Code’s Grep and Glob tools have no separate provider fee, and ast-grep covers searches where code structure decides the match. These results cover six tasks, one agent, and TypeSafe’s service; Claude Code’s Explore helper agent and repositories over 975 files are untested. A release whose published benchmark counts Jev and still shows a lower total would change this call.