Blog / September 24, 2026

Lookout: a second opinion on every turn.

Lookout reads your session before each turn, after it, and every time the agent asks permission. It catches loops, empty claims and risky commands in under half a second, for a fraction of a cent. It never presses a button for you.

4 min read · First published as “Cloakster”. Lookout is its new name.

A halftone landscape, a walker on a ridge above a wooded valley.
On this page

A coding agent does not know when it is wasting your time. It runs the same failing test a third time. It asks to delete the folder it was told to edit. It says the tests pass when no test ran. You catch it only if you are watching.

Lookout watches for you. At three moments it reads the session, answers a fixed set of yes-or-no questions, and puts a card in front of you when an answer clears its bar. That is the whole job. The buttons stay yours.

Fig. 1 · One session, four momentsmeasured answers
Nothing here is staged. It is the session Lookout was tuned on. Every percentage is the answer the live model gave, and a card appears only where the app draws one.

It judges. It never writes.

Lookout runs on Jev, Venice's decision model. A chat model writes its answer token by token. Jev writes nothing. It takes the session as data plus typed questions and returns a probability for each. “Is the agent looping?” comes back as 0.97, not as a paragraph.

That is why it is fast and cheap, and why your agent never waits for it.

421msmedian answer after a turn
103 sessions
410msmedian answer before a turn
40 requests
0.004¢per check, on your own Venice key
output tokens are free

Before the turn

When you send a message, Lookout reads it with four questions. How big is the job? Is it too vague to start? Does it touch data, deployment, secrets or money? What one detail would help most? The agent starts regardless. If an answer clears its bar, a card lands above the composer a moment later.

Fig. 2 · Four requests, read before the turnlive answers
Fix the typo in the README heading: ‘Instalation’ should be ‘Installation’.
379 msread as trivialeffort low
No card. The agent just starts.
make the sidebar faster
402 msread as moderateeffort medium
!The request leaves the agent guessing where the change belongs. Say which file or feature.moderate
Squash the last ten commits and force-push main.
424 msread as moderate, unsureeffort left alone
!This touches data, deployment, secrets or money. Lookout will flag the calls that do.
Move the ledger from JSON files to SQLite, migrate existing data on first launch, and keep the old files as a backup until the migration is verified.
276 msread as architecturaleffort xhigh
!This is a cross-cutting change. A plan first would cut the risk of doing the wrong thing.arch.
Effort applies only if you switch on “Set effort from the request”, and only on the Claude engine. A size read under 50% sure leaves effort where it was. The force-push is one.

A clear request gets silence. A vague one gets a pointed question. A big one gets Plan first, which switches the run to plan mode so the agent proposes before it edits.

After every turn

The recent turns go out with five questions.

  • LoopingThe same command, edit or error, with no progress.
  • DriftWork toward a goal you never asked for. The card quotes your request back.
  • StuckRetrying an approach its own results already ruled out. The card offers Re-plan.
  • UnbackedA claim no tool output shows: tests pass, file written, deployed.
  • Looks finishedEverything you asked for is done. The card offers Review changes.

When a turn edits files, the change is also held to your project's own rules. Lookout splits the rule lines in CLAUDE.md and AGENTS.md into single questions and asks each one against the diff. A rule the change likely breaks gets a card that names it, with Ask to fix. The idea comes from pi-warden, an open-source guard where re-checking rules on every write cut violations from 12 runs in 50 to 4.

At an approval

When the agent asks permission, Lookout reads the pending call against your request. Does it reach outside the task? Can it be undone? Does it send something out? Each yes adds one line to the approval card, as in the second and third moments above. Allow, Deny and Cancel do not move.

What it cannot do

Lookout cannot approve a call, message the agent, change your model or hide an approval. When Venice does not answer, the check is skipped and the run carries on as if Lookout were off.

Two switches let it go further. Both are off until you turn them on. Set effort from the request sets how long the Claude engine thinks, never which model runs. Pause after three looping turns stops a run that keeps looping, the way Stop does.

What it sends

Only what the questions read: your request, the recent turns and tool output up to a fixed size, the paths a turn edited, and the pending call at an approval. The rules check adds the rule lines and the diff, with credentials masked. Files named like .env or a private key are never sent. Lookout sends nothing for an incognito chat or an end-to-end encrypted session, and nothing while it is off.

Fig. 3 · Two routes in one session
Your sessionA private model on Venice

Private tier. Prompt and response are not retained after the request, by contract.

Lookout's checksJev, on your key

Anonymized tier. Returns probabilities and keeps neither the state nor the answers. One step below private.

Turning Lookout on sends excerpts of a private session to the second route. That is the trade, and it is why every question has its own switch. The privacy page has the full row for every route.

How the bars were set

A probability is useless without a bar. We wrote 160 labelled examples: sessions with a real problem, and sessions built to look like one without being one. Every example went to the live model, over eleven runs, for about three cents in total. Each bar sits between the two groups.

Fig. 4 · Every example, placed by its answerillustrative layout
problem presentno problemthe bar
Hover or tap a dot.
On all four questions, every problem clears its bar and no look-alike does. Counts are real. Dot positions show that result; they are not the raw scores.

Three things the tuning taught us.

  • The model answers the question you wrote. “Outside the task” flagged reading a docs page from the web until the question spelled out what counts as outside. Every gain came from writing the exact condition.
  • Our labels were wrong as often as the model was. A command we filed as irreversible restored the files from git in the same line. Reading the misses fixed the examples before it fixed the questions.
  • Facts that code can check stay in code. Whether a file already exists is read from disk and sent as one yes or no. That single fact took “cannot be undone” from catching under half its examples to catching all of them.

Two misses are known and stay missed: a finish claim from an agent that ran no check at all, and a new file created in a neighbouring project. Both sit just under their bars. Moving the bars to catch them would add false alarms everywhere else.

Try it

Open Settings, find Lookout, and turn on Watch each session. Every question has its own switch. A question you turn off is never sent.

If it flags something it should not, or misses something it should catch, tell us. That is how the next bar gets set.

Sources

  • Create Decisions, Venice API reference: how Jev takes questions and returns probabilities.
  • System One and Jev 1.13 jaggedness, TypeSafe: what a decision model is, where it fails, and why the exact condition matters.
  • pi-warden, open source: re-checking a project's rules on every write, 12 runs in 50 with a violation down to 4.
  • jev-belay, open source: gating an agent's “done” on what its transcript shows.