MARSHAIL 1.2.0: agents that close the feedback loop, and a new workbench mode

A chat with a coding agent. Agent: Done, code and tests are in place, everything works. You: It doesn't start. Agent: Great catch! You're absolutely right!

I just released MARSHAIL 1.2.0, and two of the changes came straight out of things that kept annoying me while using it.

The first one: agents that say they're done when they aren't. You know the pattern. The agent writes the code, writes the tests, tells you everything is in place, and hands back. You run it. It doesn't start. Technically the agent did what it was asked, it just never checked whether any of it worked. You come back to the agent. “Great catch! You're absolutely right!” Then it fixes that one thing (or not) and quietly breaks two others.

After a while this gets tiring. You run the same checks again and again, paste the errors back, and after the third round you start fixing things yourself because it's faster. At that point you're not really working with an agent anymore. You're its QA department.

So “close the feedback loop” is now a core principle in MARSHAIL. If an agent produces something, it runs it: the tests, the build, the app, the UI flow, whatever applies. If something breaks, it goes back, fixes it and runs it again, as many times as it takes, without me in the middle. It comes back once the thing I asked for actually works, tells me what it checked, and only asks me to verify the parts it really can't reach on its own. Any decent engineer does this before opening a PR anyway, so I don't see why an agent should get a pass.

The second one: not everything fits a plan. MARSHAIL was built around changes you can frame up front: specify, plan, implement in small slices, verify, review. That works well for features. It works a lot less well when you're reworking one messy module or polishing a UI and going through twenty rounds of “try this, run it, hmm, adjust”. Writing a delivery plan for that feels a bit like scheduling a meeting to decide where to have lunch.

That's what workbench mode is for. You sit down with the workbench agent and just say what to do next, round by round, without a plan. I didn't want it to turn into plain vibe coding though. Each task still runs in its own fresh context, the agent still checks its own results, and the repo knowledge saves it from re-reading the whole codebase every round and stays in sync. If a PR comes out of the session, it still goes through verification first. And if a session grows into something bigger, it can be turned into a proper planned change. It also works the other way: a planned change can take a detour into a workbench session and pick up where it left off afterwards.

There are a few more changes under the hood, mostly about how agents get started and how they reuse each other's earlier findings instead of researching the same thing again. The details are in the repo if you're curious.

Repo: github.com/crestreach/marshail
Site: www.marshail.net

If you try it, I'd really like to hear how it goes.