cd /news/ai-agents/reverse-jev-ending-a-turn-with-a-cho… · home topics ai-agents article
[ARTICLE · art-137522] src=blog.kvit.app ↗ pub= topic=ai-agents verified=true sentiment=· neutral

Reverse Jev: Ending a Turn with a Choice

A new Claude Code plugin called whats-next@kvit enforces that a coding agent's turn ends with a short report plus a card of two to four selectable options via the built-in AskUserQuestion tool, rather than prose the user must parse. The plugin hooks into Claude Code events and blocks at most twice per prompt, within Claude Code's own ceiling of eight, and does not block while background tasks are running. The argument cites TypeSafe AI's Jev, a model that returns a typed decision from a question and schema instead of generating text, and notes Claude Code's Concise output style, added in version 2.1.237, shortens prose but leaves the decisions buried in it.

read6 min views3 publishedSep 22, 2026
Reverse Jev: Ending a Turn with a Choice
Image: source

Reverse Jev: Ending a Turn With a Choice #

When coding agent finishes a turn, see list of decisions instead of wall of text.

Before: Wall of text!

After: Look at bottom for quick info and action

The turn’s report #

When a coding agent finishes a turn, it hands control back to you (the handoff), by writing a report saying what it did, what it fixed, what it found, some unrelated things it uncovered. Buried in that wall of text are the decisions you have to make: whether to commit or keep going, whether to run the tests now or after the next change, and whether the flag it raised halfway through matters. You read the paragraph to find them, then you type “continue”.

The agent already framed the options in sentences, but it sends them as prose you must parse, decide on, and reply to before any of them can happen. You do the parsing and the typing for a decision the agent had already framed.

Shorter paragraphs still hide the decisions #

The standard remedy aims at length. Claude Code includes one itself: an output style called Concise, added in version 2.1.237 and described in the product as making Claude “respond tersely, leading with results and skipping preamble and narration”. Around it sits a layer of rules in the per-project instruction files (CLAUDE.md files) telling the agent to skip padding, recaps, and explanations of what it is about to do. A number of community-written instruction packs (skills) compress the wording further.

They do what they say and the output gets shorter. What they leave unchanged is the shape of the output: prose you must read to find the decisions, now in a smaller paragraph, with the detail you needed in order to decide compressed out. Shorter output removes the detail that makes a handoff usable.

End the turn with selectable options #

At the moment the agent hands control back to you, its output does not need to be prose. The agent knows the two or three things that could reasonably happen next, and what it needs from you is a choice between them. Claude Code already has the built-in question tool for that (AskUserQuestion), which draws a card of labeled options you pick with one key, with free text always available.

So how about to have the rule: a turn that changed something ends with a short report — one headline sentence carrying the material fact, bullets for what changed, a line saying how it was verified — and then a card of two to four options for user to quickly select. Agent gives user list of options, user pics most relevant - reverse Jev!

TypeSafe AI made a version of this argument when they launched Jev, a model that does not generate text at all: you send it a question and a schema, and it returns a typed decision your software can act on directly. Their case is that when the answer is a choice, generating prose around it is wasted work for everyone downstream. That holds just as well at the other end of the conversation, where it is the agent asking you for the decision, so the only difference is who is being asked.

Why this is a plugin and not an instruction #

You can tell an agent to end its turns with a question and it will for a while. Then a context compaction, where Claude Code summarizes the transcript to free space, drops the instruction, or a long turn crowds it out, and the agent goes back to paragraphs. No step detects the missing question because no step reads the transcript for it. This is the usual result when a behavior depends only on prompt text.

What’s Next, the whats-next@kvit plugin, hooks to Claude Code events to enforce the rule: a turn that changed something ends with question tool.

The obvious objection to a plugin that can block your agent is that it might keep blocking. This one blocks at most twice per prompt, well inside Claude Code’s own ceiling of eight, and it does not block while background tasks are still running. Faults in a card you have already answered — a header too long to fit, an option with no description, no way to stop — do not block at all, because sending the agent back would only redraw a better-formatted card for a question you have answered, so those print as a note and the turn ends.

A week of daily use #

I implemented this as whats-next@kvit plugin and run it on my own work for about a week. As a result I no longer swear at Claude for incomprehensible reports with jargons and awkward lingo! The flow is much smoother with much more clear and easy transitioning to next turn. I now wouldn’t use Claude Code without the plugin - I feel it would give up too much without it.

One irritation remains and I have not fixed it. I often find the question card on its own is not enough to decide from. Each option gets a short label and a short description, and the tool that draws it has nowhere to put the reasoning behind the choice, so I read the options, cannot tell which is right, and scroll back into the report. That is the cost of building on a general-purpose question tool. AskUserQuestion was made for an agent to ask a factual question, without a place to attach the evidence behind each option.

I have implemented different type of tool within my own coding agent with philosophy that I don’t want to see unstructured wall of text report from agent, agent is allowed to use only specific set of blocks types in final report and my harness supplies ui to render it with hiddent by revealable details. You can check it out here kvit-coder, and this plugin is the part of that idea that can run inside Claude Code today.

Installing What’s Next #

Two lines in Claude Code:

/plugin marketplace add https://github.com/kvitapp/kvit-plugins.git
/plugin install whats-next@kvit

The next session starts with the rule in force, and uninstalling removes it; there is no style to select and nothing left behind. A project can switch it off in its own directory with { "env": { "REPORT_GATE": "off" } } in .claude/settings.json.

It uses only the Python standard library and needs Python 3.8 or later. On Windows it needs Git Bash, because the hook shim is a bash script — the same requirement Anthropic’s own security-guidance plugin has. There is also a Gemini CLI and Codex CLI extensions in the repository.

None of this is about a plugin. The handoff at the end of a turn is a place where an agent has already framed the decision and then sends it as prose you must parse again, and that is worth fixing wherever it happens — in a plugin, in an editor, or in whatever tool you use next.

The code is at kvitapp/kvit-plugins, MIT licensed.

── more in #ai-agents 4 stories · sorted by recency
── more on @claude code 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/reverse-jev-ending-a…] indexed:0 read:6min 2026-09-22 ·