Skip to content

Jev_steer_or_queue

Coding-agent hook where Jev decides whether a mid-turn message should steer the running task, be queued, or interrupt it.

PluginbetaMIT

Overview

Coding agents treat every message sent mid-turn the same way: Claude Code injects it into the running turn. That suits a course correction but not a follow-up request meant for later, or a stop request that only works if the model chooses to stop. This project adds a UserPromptSubmit hook that sends each mid-turn message to Jev and classifies it as steer, queue or interrupt in about half a second.

Steer lets the message through for native injection; queue holds it in a per-session FIFO and a Stop hook replays it after the turn; interrupt swallows it and ends the turn at the next tool boundary. Only confident answers change behaviour: queue and interrupt need probability of at least 0.9, and interrupt also needs an explicit stop signal. Missing keys, errors or a 2-second timeout fail open. Messages sent while the agent is idle are never sent to Jev. It is tested end to end on Claude Code, and on Codex CLI with the caveat that Codex can only be nudged, not blocked.

What the decision model decides

TypeQuestionAnswers
ChoiceShould this mid-turn message steer the running task, be queued for afterwards, or interrupt the task?steer · queue · interrupt

How it works

  1. Hook detects a mid-turn message via the running turn's prompt_id
  2. Jev classifies it as steer, queue or interrupt (~0.5 s)
  3. Queue or interrupt only if probability >= 0.9 (interrupt also needs an explicit stop)
  4. Otherwise, or on error or timeout, fall back to native behaviour

Strengths

  • Follow-up requests no longer get mixed into the current task
  • Reliable stop without relying on the model to comply
  • High-confidence threshold and fail-open design limit surprises
  • Idle messages never leave the machine

Caveats

  • Codex can only be nudged, not blocked
  • Adds about half a second to mid-turn messages
  • Requires a TypeSafe key

At a glance

Type
Plugin
Status
beta
Language
Python
Runtime
Claude Code plugin / Codex hooks
Has code
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Let TypeSafe Jev decide whether a message you send mid-turn should steer, queue, or interrupt your coding agent. Claude Code plugin; Codex CLI in testing.

    logicrw/awesome-jev-projects
  • Let TypeSafe Jev decide whether a message you send mid-turn should steer, queue, or interrupt your coding agent. Claude Code plugin; Codex CLI in testing.

    hellogumbo/awesome-jev

Frequently asked questions

What does Jev decide?

Whether a message you type while the agent is working should steer the task, be queued for after, or interrupt it.

What happens if Jev is unsure?

Below 0.9 probability, or on any error or timeout, the message is handled by the client's native behaviour.

Which clients are supported?

Claude Code CLI fully, and Codex CLI with the limitation that it can be nudged but not blocked.

Related projects

  • Agent plugin that asks Jev whether the session is at a safe boundary to /compact and can trigger it on Pi and Claude Code.

    PluginbetaTypeScript
  • One skill and MCP server for Claude Code, Codex and Hermes where Jev gates large-model turns, routes models and guards Git steps.

    MCP serverbetaPython
  • CLI where several coding agents draft implementation plans and Jev scores them, decides on cross-review and picks the finaliser.

    ProjectbetaTypeScript
  • Local web and voice interface for Codex and Claude sessions in tmux, where Jev interprets each request and Python performs it.

    ProjectprototypePython
  • Node experiment where Jev picks the next step around a coding agent, with approved actions and Codex or Claude Code delegation.

    ProjectprototypeTypeScript
  • Claude Code skill that splits work into PBIs for Codex, Antigravity or Claude sub-agents, using Jev for model choice and triage.

    ProjectprototypePython