Skip to content
learnjev
Concept 03/05ConceptsBeginner6 min

What "cannot hallucinate" actually guarantees

This is the claim that got the headlines and it is the one most worth being precise about, because the precise version is genuinely valuable and the loose version will get someone hurt.

On this page

The guarantee#

Jev's output space is the type you declared. A Choice over three options cannot return a fourth; a Score over five levels cannot return level six; a Noul cannot return a string. There is no decoding step where a wrong token could slip through, because there is no decoding step. TypeSafe describes violating it as "mathematically impossible", and that is not hyperbole — it is a property of how the output is constructed.

This is worth something real. It removes an entire class of production failure: the parse error, the retry loop around json.loads, the enum value that was almost right, the tool call naming a tool that does not exist. TypeSafe's framing of why that matters is fair — a hallucinated tool call is an inconvenience in a chat agent and a deal-breaker inside a system with latency guarantees or several layers of dependency.

What it does not guarantee#

It says nothing at all about whether the returned value is correct. The model can pick the wrong option, misread the evidence, or assign a high probability to a bad answer — and every one of those is type-safe.

Jev constrains the shape of the output. It does not constrain the judgment.
Anthony Maio

A Hacker News commenter put the same point as a question nobody answered well: "if it puts a high confidence value on a wrong answer, that's still hallucinating, no?" And The Register's assessment was blunter — calling the model hallucination-free "really isn't a fair comparison as its output is not natural language... that does not preclude the possibility of being incorrect."

The 0% on the chart is an axiom#

TypeSafe's launch post includes a hallucination-rate chart with Jev at 0%. Their own footnote explains where that number came from:

Our number is not empirical. Schema matching is guaranteed, thus we can confidently add 0% into the plots.
TypeSafe, launch post

So the bar is not a measurement. It is a definition, plotted next to measurements of a different thing — the LLM bars are empirical schema-failure rates from OpenRouter traffic, which TypeSafe also notes carries routing bias. Comparing a theorem to a sample on the same axis is the part that does not hold up.

Why the distinction has teeth#

Because of where this model is meant to sit. Every deployment pattern in these tutorials puts Jev in a control path: gating a tool call, approving a transaction, screening content, routing a ticket. In a chat interface a wrong answer is visible to a human who can push back. In a control path it is a branch nobody watched.

Combine that with the documented fact that state is not treated as hostile, and the risk profile is clear enough: text an attacker controls, feeding a decision nobody reviews, made by a model that cannot return an invalid answer but can certainly return the attacker's preferred one.

  • Never let a single Jev answer be the last thing between untrusted input and an irreversible action.
  • Give every question an honest exit — other, none of the above, insufficient evidence — because the probability mass has to land somewhere, and without an escape route it lands on the nearest wrong option with real confidence.
  • Keep consequences under code control: permissions, limits, idempotency, rollback.
  • Treat a type guarantee as removing a class of crashes, not a class of mistakes.

In short#

ClaimTrue?Why
Output always matches the declared typeYesStructural. The output space is the type.
Never emits an option you didn't defineYesSame reason.
No parsing or validation step neededYesThis is the practical payoff.
Never returns a wrong answerNoNothing about the guarantee touches correctness.
Never confidently wrongNoCalibration is a population property, not a per-answer one.
0% hallucination as measuredNoAsserted by definition; not measured.

Sources for this page

Last reviewed 2026-09-18. Jev is days old and moving — where a claim is TypeSafe's own rather than independently verified, this page says so in the sentence that carries it.