When AI Agents Write the Code, What's Missing Are the Reins — Introducing basou A developer introduced basou, an open-source harness for steering AI coding agents. The tool addresses three pain points: the loss of decision context between sessions, the cost of re-explaining context, and the inability to audit agent actions. Basou provides a replayable record of agent activity as plain files in a local-first, vendor-independent format. I closed the previous post with a promise: that the development style behind this blog, and the OSS I've been shipping — a harness for steering AI coding agents — deserved their own write-up. This is that write-up. The project is basou https://basou.dev . In one line: it's a harness — a full set of tack — for steering AI coding agents . A "saddle" you declare once per repository to say how the project should be driven; "reins" that carry intent from one session to the next; and, underneath both, a replayable record of what the agent actually did. All of it as plain files, in a .basou/ directory right next to your code. Local-first: nothing leaves your machine. Once agents write most of the code, the scarce resource isn't typing — it's control . The more I leaned on agents, the more the pain narrowed to three things. One: the "why" evaporates between sessions. The answer to "what does this code do" lives in the code; even a read-only assistant can reconstruct it. What can't be reconstructed is the living context around a decision — what you intended, which path you rejected, how far you got. That has to be captured in the moment, and what you capture is worthless unless it survives to the next session. Two: the cost of re-explaining. Because it wasn't captured, every session starts with a human re-narrating the context by mouth. Run three projects in parallel and you pay that tax three times over. Three: you can't audit it. What an agent did is buried inside vendor-specific log formats, or nowhere at all. "That change last week — why did we do it that way?" has no answer you can verify after the fact. basou is my answer to those three. Not a dashboard you glance at, not an audit log you file away — tack you keep in your hands the whole time you're working. The name comes from basou 馬装 , the Japanese word for tacking up a horse: fitting the saddle and the reins. You declare each repository's nature once — public or private, what language it's in, where the canonical copy of the agent-instruction file AGENTS.md lives — in a manifest. Then basou project derives the rest: which roots to record, the wiring of AGENTS.md / CLAUDE.md / Copilot instruction files, the .gitignore that keeps a private canonical file out of a public repo's history, and a workspace view that bundles multiple repositories. Humans edit the declaration; basou maintains the plumbing. Every generating command is dry-run by default --apply is what actually writes , and additive and non-destructive. How to consolidate the ever-multiplying pile of instruction files is a whole post on its own, so I'll save it for another time. basou orient answers "where is the work right now, and what's next" from the record , not from memory. Recent decisions, open tracks, the recorded next step, and a note on whether the record itself has gone stale. The decision record has a trick to it. A decision made mid-conversation with an agent — the reasoning, the alternatives, and why you rejected them — normally dies with the chat log. basou decision capture makes the agent itself , while it still holds the conversation in context, emit the decision as structured data, and basou writes it down deterministically. basou never runs an LLM of its own. So the record is yours, verifiable, and works offline. basou note leaves a one-line "pick up here next." basou handoff generate regenerates a handoff document for the next session — or the next teammate. The two foundations sit on a simple, inspectable base. .basou/sessions/