June 9, 2026

The agent that talked to itself, fixed

A runaway delegate loop, an over-eager memory fan-out, and a stale installer hint — three quiet trust bugs fixed in one day.

Today’s target was narrow on purpose: three places where Chalie was doing something the user couldn’t see, and doing it wrong. Hidden behavior is the most expensive kind of bug — it doesn’t crash, it just quietly wastes time, retrieves the wrong thing, or tells someone to do something that no longer works. All three of today’s fixes are about that same failure mode: a component acting blind to its own output.

The biggest one: the web search and web browse delegates were re-running the same search over and over until they hit their 50-iteration ceiling. Reproduced live, a simple two-part factual question took twelve and a half minutes and well over a hundred model calls to answer. The cause was a flag conflation — two configuration settings that sound similar but do different jobs got set to the same value under a “keep the context clean” assumption. One of them controls whether an asynchronous result gets delivered as a hidden follow-up turn; it has nothing to do with a delegate that runs synchronously inside a single request. But because both flags were set together, the delegate never got assigned an identity for its own turn, which meant it could never see a record of what it had already tried. Every iteration looked identical to the first one, so it just searched again. The fix separates the two concerns: the delegate now writes its own turn record and can see its own trail of tool calls, so it converges instead of spinning. A parametrized test drives the real dispatch path against both delegates and proves the loop breaks.

The second fix was subtler and arguably more important for how much users trust Chalie’s memory: the recall tool used to silently fan out into document search and schedule search behind the scenes whenever it ran. That’s a plausible-sounding shortcut but it has a real cost — it bloats the reasoning trail with tool calls the model didn’t choose to make, and it takes away the model’s judgement about whether those tools are actually the right move for a given question. The fix keeps the automatic memory seed that happens at the start of every turn completely silent, as it should be, but changes explicit, model-invoked recall to hand back a one-line nudge toward document and schedule search rather than triggering them itself. The model decides. As part of the same pass, the automatic turn-zero seed was found to be pulling in too much — its retrieval radius is now 30% tighter than an explicit recall’s, so the context that arrives before a user has even said anything stays tight and relevant instead of padded.

The third fix was a smaller but real trust issue: voice features moved to downloading their models on demand, from Settings, a while back — but the error messages a user sees when voice isn’t ready still told them to re-run the installer, which hasn’t touched voice models in a long time. That’s the kind of stale hint that erodes confidence fast: the user follows the advice, nothing changes, and now they don’t trust the next error message either. Repointed both hints, and the docs that repeated the same outdated claim.

None of these are features you’d put in a changelog headline. But they’re the difference between an agent that feels reliable and one that quietly burns your time or gives you a dead-end fix. That’s the standard: every tool call, every recall, every error message should be doing exactly what it looks like it’s doing — nothing hidden, nothing stale.

  • Fixed a runaway loop where web search/browse delegates re-ran identical searches for 12+ minutes due to a flag conflation that hid their own act-trail from themselves

  • memory.recall no longer silently triggers document/schedule search behind the scenes — explicit recalls now get a visible one-line nudge instead, leaving the choice to the model

  • Turn-zero automatic memory seeding tightened to a 30% narrower retrieval radius than explicit recall, keeping default context lean

  • Voice “not ready” error hints repointed from the (no-longer-relevant) installer to Settings, matching how voice models actually download today