Removing Self-Verification from AI Coding Agents in Octomind Octomind released version 0.44.0 on August 17, followed by 0.44.1 and 0.44.2, which removes self-verification from AI coding agents by replacing in-memory boolean latches with a persisted verification policy and requiring evidence conditions at the verify gate. The update also moves planning to an external manager, adds session titles, a cleaner /new command, /monitor for long-running watches, and MCP timeouts. The release aims to make agent 'done' claims survive audit, turning agents from demos into tools. Every long agent session ends the same way: the model announces it's done. Sometimes that's true. Sometimes "done" means three of the five files got edited, the test run it "confirmed" happened four thousand tokens ago against an older tree, and the file it claims to have verified was verified by reading its own edit back and admiring it. The difference between those two endings is the whole product. An agent you have to re-check is a demo; an agent whose "done" survives an audit is a tool. 0.43.0 /blog/octomind-0-43-0-release was about compression that keeps receipts. 0.44 points the same instinct at the other end of the pipeline: the supervisor now treats "done" as a claim that has to survive verification — item by item, condition by condition, with provenance. And in the same release, planning stops being something the model does to itself: the plan tool is gone from the model's hands entirely, replaced by an external manager that watches the work and keeps the checklist honest. Around that core, the release grows a set of quality-of-life capabilities that long-session users have been asking for: session titles with a fuzzy startup picker, a cleaner /new command, /monitor for long-running watches, and MCP timeouts that finally understand the difference between "slow" and "stuck." 0.44.0 shipped on August 17, 0.44.1 followed the same day, and 0.44.2 closes out the cycle — everything below refers to the 0.44 line as one release, and 0.44.2 is the one to install. Verification is a policy now, not a mood The quiet structural change first, because everything else stands on it. Verification state used to live in boolean latches inside the supervisor's detectors — in-memory flags that lived and died with the process. Restart your laptop mid-task, resume the session, and the supervisor came back with amnesia: no memory of what it had promised to verify, and a fresh willingness to take the agent's word for things. 0.44 replaces the latches with a persisted verification policy . It's session-level state now: serialized with the session, restored on resume, folded into the governance hash, and projected into goal recitation on long compacted sessions — so neither a process restart nor a compression cycle can shake it off. The evidence ledger — the record of what was actually run, changed, and observed — persists across restarts the same way, which also kills a class of false alarms where a resumed turn looked like a verification gap simply because the ledger had been wiped. Turn answers are tracked in a dedicated ledger too, restored from the transcript on resume instead of being re-guessed from message history. The behavior you'll notice: a session you resume behaves like a session you never left. What the supervisor knew, it still knows. What it was owed, it still collects. The verify gate wants evidence with a shape The verify gate — the checkpoint that runs when the agent self-reports done — got the deepest rework of the cycle. The theme is simple: a holistic "looks good" verdict is no longer a thing the verifier is allowed to produce. Here's how the gate works now. When your request is resolved into a task, the classifier derives evidence conditions from it — a fulfillment checklist of what would have to be demonstrably true for "done" to be honest. At the gate, the verifier must address each condition in a structured tag, and a deterministic parser walks the response: an unmatched condition beats a holistic PASS, every time. A response missing its required tags gets exactly one format-only retry; substantive gaps don't get to retry their way through. What the verifier sees got richer to match. Ground truth now carries a sliding window of recent command outputs instead of just the last one, plus git status , and the git diff budget is distributed per file — one large file can no longer eat the budget and hide the changes in four others. The resolver's mandatory coverage classes grew from four to six, adding named-form and quantified coverage: requests that name things or count things get conditions that name and count them back, and a new unenumerated-category shape covers requests that quantify over a category without listing its members. And there's a provenance bit that closes an old loophole: the gate is now told whether post-change verification happened by read-back only . An agent that edits a file and then re-reads its own edit has produced a diff, not a check — and the verifier can now see the difference and demand a behavioral one. The verifier itself is held to discipline too: No fallback model. If your configured verifier model fails, the gate fails closed for the turn — it does not silently borrow the agent's own model, which would inherit exactly the blind spots the gate exists to catch. Exhausted iterations hard-stop. When the gap-fixing budget max iterations , default 2 runs out, the turn stops instead of falling through to a friendlier judge. Implicit done is gated. An agent that just quietly stops producing tool calls gets the same checkpoint as one that announces completion. Answer-only turns are exempt. Asking "why does this function take a mutex?" doesn't drag mutation checks into a question that just needs an answer. Two supporting changes make all of this cheaper and steadier: supervisor calls now use schema-enforced JSON output with provider-side enforcement where the provider supports it and lenient recovery where it doesn't , and the classifier gets a bounded retry on malformed responses instead of falling straight to a fallback. The gate's exchange has its own budget now — max tokens = 8192 under supervisor.gate — covering both the verifier's reasoning and the size of the assembled deliverable it's shown. Evidence-bound claims claim check got more precise in the same pass: explicit