06When a local model stalls

Keep any model
on task.

Smaller local models such as Qwen3.8-27B need more help to finish a task. Caudra nudges the model when a turn stalls, gets cut off, loops, or stops after announcing work. The rules react to what a reply did, so the same defaults work well with flagship models.

The reply I will run make check now, followed by the dim row The turn ended on a statement of intent. The work it announced was not performed. Below it, the expanded text the model received, Carry out what you said you would do now, using tool calls, and the make check card with 4 pass and 3 fail.

Terminal recording · Nudge a turn that stopped earlyA real session in the demo project. The prompt asks for only the sentence I will run make check now, so the reply announces work and calls no tool. A dim row reports the nudge, a click shows the exact text the model received, and make check then runs under a project rule stored before the take.Open in the gallery
The refused call Run make check with the message You have called this tool with identical input 3 times in a row. You are stuck in a loop. Break out and try a different approach. Below it, the reply says that the tool blocked the third call, and a table lists runs 1 and 2 with exit code 2, 4 passed and 3 failed, and run 3 as Blocked by tool guard, Not executed.

Terminal recording · Refuse a third identical callA real session in the demo project. The prompt asks for make check three times in a row with exactly the same shell call. Two runs complete with 4 pass and 3 fail. Caudra refuses the third identical call before it runs, and the message tells the model why. The reply reports the two runs and the blocked third.Open in the gallery
The refused call Run cd src && ls with its whole message, which asks for the workdir argument of the shell tool instead of a leading cd and names agent.shell_workdir_redirect = false to turn the check off. Below it, ls runs with workdir src/ and lists orders.test.ts, orders.ts, pagination.test.ts, and pagination.ts, followed by the folded row Relative paths.

Terminal recording · Shell commands that a tool does betterA real session in the demo project. The prompt asks for cd src && ls and then cat src/pagination.ts in the shell, as written. Caudra refuses the leading cd and names the workdir argument, so the agent runs ls with workdir src. It refuses cat and names file_read, so the agent reads the file with that tool. A Relative paths hint appears as well. The reply says that limit has no default.Open in the gallery
Two reads by absolute path, /tmp/caudra-demo/orders/src/pagination.ts and /tmp/caudra-demo/orders/src/pagination.test.ts. Below them, the opened Relative paths reminder lists the shorter forms src/pagination.ts and src/pagination.test.ts, and the reply names the two tests that cover the last page.

Terminal recording · A hint toward relative pathsA real session in the demo project. The prompt names two files by the absolute path of the demo project, and the agent reads them that way. A dim Relative paths row appears. A click shows the shorter forms that the model received, src/pagination.ts and src/pagination.test.ts, and a second click folds it. The follow-up prompt asks for the orders module, and the agent reads src/orders.ts by its relative path.Open in the gallery
The opened Open todo items reminder. It says that 2 of 3 todo items are still pending or in progress, asks the agent to verify each open item, and quotes the list: Fix the code completed, Add a regression test pending, Run make check pending. Below it, the agent replies that the list is accurate and that the test and make check remain pending.

Terminal recording · A reminder about open todosA real session in the demo project. The prompt asks for a todo list of three items and for only the first one. The agent fixes src/pagination.ts and starts a read-only review task, as the AGENTS.md of the demo project asks. When it is about to hand back control with two items open, Caudra sends the list back once. A click opens the reminder with the quoted list, and the agent answers that both items stay open because the prompt asked it to stop.Open in the gallery
The prose reply ends with Which option should I apply? No files have been changed. Below it, the opened decision row question_tool_nudge, asked the agent to use the question tool (1.00), lists question_tool_needed 1.00 and threshold 0.85, followed by the folded row Ask through the question tool. The question form below asks Which fix should I apply for the last-page cursor in src/pagination.ts? and offers Remaining count (Recommended) and Fetch one extra item.

Terminal recording · Ask through the question toolA real session in the demo project, with the question-tool nudge of the jev-latest decision engine on and every other engine feature off. The prompt asks for two ways to fix the last-page cursor and for a choice before any change, and the reply asks in prose. The engine scores the reply at 1.00 against a threshold of 0.85, Caudra adds one reminder, and the agent asks again as a form. A click opens the decision row with its scores, and another click opens the exact reminder text. Remaining count is chosen, the agent patches src/pagination.ts, and make check passes 7 tests. The main agent also starts a read-only review task, as the AGENTS.md of the demo project asks.Open in the gallery
  • Nudges for stalled turns

    After an empty or cut-off reply, Caudra asks the model to continue. After “I will run the tests now” with no tool call, it asks for the work itself. The third identical tool call in a row is refused before it runs.

  • Hints when work goes in circles

    When the model repeats a tool cycle or an answer, or keeps making failed calls, a hint asks it to reconsider its approach. Hints stop at four per run by default and never reopen a finished answer.

  • Sensible defaults, tuned per model

    Every rule is on by default, and budgets cap how often each one fires. Change a threshold, a budget, or the wording of a nudge for all models, or only for one exact provider/model-id.

  • Every nudge in the transcript

    Each nudge appears as a dim row. Click it to read the exact text the model received.

In daily use, the abandoned_turn rule matched 35 of 386 final Qwen3.8-27B replies and none of 2,185 from Claude and GPT models, as measured by Caudra's creator. A nudge is a message to the model. It cannot run or approve a tool, and every real tool call still passes through validation and your permission rules.

Configure automatic steering