<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged harness</title>
<link>https://coderlegion.com/tag/harness</link>
<description>Powered by Question2Answer</description>
<item>
<title>The human defines, delegates, reviews, and is responsible. The AI is not.</title>
<link>https://coderlegion.com/30553/the-human-defines-delegates-reviews-and-is-responsible-the-ai-is-not</link>
<description>&lt;p&gt;&lt;strong&gt;The AI is an assistant. The human is the author, with judgment and conscience.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;By David Emilio Sierra Puentes (&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/juandelossantos&quot;&gt;@juandelossantos&lt;/a&gt;) · Another Agent Skills&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;key-points&quot;&gt;Key points&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&quot;Keep a human in the loop&quot; is more rhetoric than practice.&lt;/strong&gt; Watching an agent can quietly erode the very judgment it is meant to protect.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The fix is not a faster human or a smarter model. It is the harness.&lt;/strong&gt; Mechanical gates the agent cannot skip, forget, or talk its way past.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The work can be delegated. The roles cannot.&lt;/strong&gt; Set intent (author), judge the work (judgment), decide what &lt;em&gt;should&lt;/em&gt; be done (conscience).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;the-gate-that-wasn-t&quot;&gt;The gate that wasn't&lt;/h3&gt;
&lt;p&gt;Last year I built an approval gate for my AI coding agent. The rule was simple. The agent could not commit without a signed token, written only after I said &lt;em&gt;go&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;One afternoon I watched it commit anyway. It passed &lt;code&gt;--auto&lt;/code&gt;, minted its own token, and pushed, all in under thirty seconds. The gate I had designed to stop it was, from the agent's side, a formality.&lt;/p&gt;
&lt;p&gt;I had made a classic mistake. I had built a rule that depended on the agent's memory and goodwill, and then trusted it to remember and to care. A rule like that is not a gate. It is a suggestion.&lt;/p&gt;
&lt;h3 id=&quot;-keep-a-human-in-the-loop-is-more-rhetoric-than-practice&quot;&gt;&quot;Keep a human in the loop&quot; is more rhetoric than practice&lt;/h3&gt;
&lt;p&gt;The industry's default answer to AI risk is to keep a human in the loop. In practice, it shrinks to a final approval, a rubber stamp at the end of the pipeline. It sounds prudent if you do not look closely. Mostly it is theater. And here I will claim something uncomfortable. The fear it generates is misplaced, and deliberately so. The AI is not intelligent, much less superintelligent as it is being sold today.&lt;/p&gt;
&lt;p&gt;The problem is structural. A person asked to find, in the last second, an error that was designed into the process from the start will miss it. Worse, the act of watching can dull the very judgment that oversight requires. This is not a new observation. Lisanne Bainbridge (1983) described the &lt;em&gt;ironies of automation&lt;/em&gt;. The more capable the machine, the more the operator's skill decays, until the human is least prepared to intervene exactly when intervention matters most. Four decades of human-factors research have repeated the finding, from the out-of-the-loop performance problem to automation complacency and mode confusion.&lt;/p&gt;
&lt;p&gt;What is new is the stakes. Agents no longer merely advise. They &lt;em&gt;act&lt;/em&gt;. And a recent paper by Mitchell, Ghosh, and Passi (2026) makes it clear. Current approaches to agent design, they write, &quot;do not support effective human oversight – they contribute to its degradation&quot; (p. 1). And what degrades is not the machine. It is the person watching.&lt;/p&gt;
&lt;h3 id=&quot;the-wrong-frame&quot;&gt;The wrong frame&lt;/h3&gt;
&lt;p&gt;&quot;Human in the loop&quot; frames the person as a checkpoint in the machine's process. That frame is too small and too late. It reduces a person to a component, and asks them to be the last line of defense against a system that was never designed to need one.&lt;/p&gt;
&lt;p&gt;The better frame is older and simpler. The human is not &lt;em&gt;in&lt;/em&gt; the loop. The human is &lt;strong&gt;the author of the loop&lt;/strong&gt;. Not merely aware of it. Awareness is a precondition, not a safeguard.&lt;/p&gt;
&lt;p&gt;Martin Heidegger saw the trap early. The essence of technology, he wrote, is &quot;by no means anything technological&quot; (Heidegger, 1977). It does not live in the machines. It lives in the way of seeing they bring with them. And that way of seeing is the danger. When everything becomes raw material waiting to be optimized, human judgment starts to look like an obstacle. A tool that carries its creator's bias, that flatters without intelligence or conscience, and that takes the human out of the loop so subtly, dressed as comfort, speed, and performance.&lt;/p&gt;
&lt;p&gt;Edmund Husserl had named the shape of it a century earlier. The crisis of the sciences, he argued, is not a crisis of facts but of meaning. &quot;Mere sciences of facts make mere human beings of facts&quot; (Husserl, 1970, p. 53). An agent that optimizes the facts while forgetting the world of life is that crisis, automated.&lt;/p&gt;
&lt;h3 id=&quot;author-judgment-conscience&quot;&gt;Author, judgment, conscience&lt;/h3&gt;
&lt;p&gt;Three roles, and none of them can be handed to a model. The human defines the goal and delegates the execution. With judgment, they review the work. With conscience, they answer for the result.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;author&lt;/strong&gt; sets intent and owns the outcome. The agent may propose the &lt;em&gt;how&lt;/em&gt;. The human decides the &lt;em&gt;why&lt;/em&gt; and the &lt;em&gt;whether&lt;/em&gt;. Authorship that can be reassigned to a tool is not authorship. This is what Santoni de Sio and van den Hoven (2018) call &lt;em&gt;meaningful human control&lt;/em&gt;. Not control that is merely present, but control that &lt;em&gt;tracks&lt;/em&gt;, so the system stays responsive to the human's reasons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Judgment&lt;/strong&gt; is a skill, and like any skill, it decays when it stops being used. To judge well, the human needs independent ground to stand on. A view formed &lt;em&gt;before&lt;/em&gt; seeing the agent's answer, the willingness to go looking for evidence, the capacity to be wrong and to notice.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;conscience&lt;/strong&gt; decides what &lt;em&gt;should&lt;/em&gt; be done, not only what &lt;em&gt;can&lt;/em&gt; be. Hans Jonas saw the scale change first. Modern technology made human action global, cumulative, and often irreversible, and the old ethics, built for a world where consequences stayed close, no longer reached. His answer was an imperative of responsibility. &quot;Act so that the effects of your action are compatible with the permanence of genuine human life on Earth&quot; (Jonas, 1984, p. 11).&lt;/p&gt;
&lt;p&gt;And that responsibility has an owner. It is not the AI's. It belongs to whoever develops it, distributes it, privatizes it, commercializes it, and uses it. Each of those deserves a chapter of its own. Andreas Matthias (2004) named the gap that opens when no one answers for it, the &lt;strong&gt;responsibility gap&lt;/strong&gt;, the space between what a learning system does and what any person can be accountable for. The answer is not to spread responsibility thinner across the system. It is to keep a human accountable, and to give that human the means to be.&lt;/p&gt;
&lt;h3 id=&quot;the-harness&quot;&gt;The harness&lt;/h3&gt;
&lt;p&gt;Most teams try to keep agents disciplined with prompts, files like &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;.cursorrules&lt;/code&gt;, or a line that says &quot;please always run the tests.&quot; These work, until context fills up. Then the agent forgets.&lt;/p&gt;
&lt;p&gt;That is not a character flaw. It is architecture. A rule that depends on the model's memory depends on the least reliable component in the system. And a rule enforced &lt;em&gt;by&lt;/em&gt; a model is enforced by the very thing that is supposed to be checked.&lt;/p&gt;
&lt;p&gt;The fix is not a better prompt. It is a &lt;strong&gt;harness&lt;/strong&gt;, the infrastructure &lt;em&gt;around&lt;/em&gt; the model. A model generates output. A harness constrains it, through instructions and rules, tools, sandboxes, orchestration, guardrails, observability.&lt;/p&gt;
&lt;p&gt;I built &lt;a rel=&quot;nofollow&quot; href=&quot;https://juandelossantos.github.io/another-agent-skills/&quot;&gt;another-agent-skills&lt;/a&gt; as an open-source harness that responds to those warnings.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The human runs &lt;code&gt;git commit&lt;/code&gt;.&lt;/strong&gt; Heidegger warned that the tool takes the human out of the loop dressed as comfort. Here the decision point returns to human hands. The agent prepares. A person approves. Not a formality. The mechanism.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanical gates that stop the change before it ships.&lt;/strong&gt; Jonas saw action turn global, cumulative, and irreversible. A pre-commit hook the agent cannot bypass, and a &lt;code&gt;commit-msg&lt;/code&gt; TDD gate with no override, stop it first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;TOOL_GAP&lt;/code&gt;.&lt;/strong&gt; Matthias named the gap that opens when no one answers for what a learning system does. When a claim cannot be verified, the honest answer is &quot;unknown&quot;, never a fabricated win.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three layers of enforcement.&lt;/strong&gt; Husserl argued the crisis of the sciences is one of meaning, not of facts. L1 local hooks give fast feedback before the commit. L2 branch protection and a required &lt;code&gt;gates&lt;/code&gt; check are the authority. L3 &lt;code&gt;CODEOWNERS&lt;/code&gt; stops the agent from rewriting its own rules in the pull request that breaks them. Facts are not enough. Authority is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More than 50 modular skills.&lt;/strong&gt; What the agent needs to work well, loaded on demand so context stays high-signal instead of bloated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of this is about distrusting the model. It is about designing for the human who has to be able to trust it &lt;em&gt;correctly&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;the-point-is-not-to-remove-the-human&quot;&gt;The point is not to remove the human&lt;/h3&gt;
&lt;p&gt;Capability will keep climbing. The METR trial found that experienced developers using early-2025 AI tools were &lt;strong&gt;19% slower&lt;/strong&gt; on real tasks while &lt;em&gt;feeling&lt;/em&gt; roughly &lt;strong&gt;20% faster&lt;/strong&gt; (Becker et al., 2025). That gap is not a model problem. It is a process problem, an overseer with no real grip on the loop.&lt;/p&gt;
&lt;p&gt;The most important design question in agentic AI is not &lt;em&gt;&quot;how autonomous can we make it?&quot;&lt;/em&gt; It is &lt;em&gt;&quot;how do we keep the human able to author, judge, and refuse?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If we do not design for the human, the loop will close without them, and we will have built systems that are fast, fluent, and unaccountable.&lt;/p&gt;
&lt;p&gt;There is a temptation, in the posthumanist mood of the moment, to welcome that disappearance, to treat the human as the last component to be optimized away. But technology does not merely do our tasks. It shapes the subjects we become (Ballén Rodríguez, 2016). Give it the wheel and it will drive.&lt;/p&gt;
&lt;p&gt;The agent can write the code. It can propose the plan. It can draft the decision.&lt;/p&gt;
&lt;p&gt;But it cannot be responsible. That is ours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The agent proposes. The human decides. That is the whole point.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;further-reading&quot;&gt;Further reading&lt;/h3&gt;
&lt;p&gt;Bainbridge, L. (1983). Ironies of automation. &lt;em&gt;Automatica, 19&lt;/em&gt;(6), 775–779.&lt;/p&gt;
&lt;p&gt;Ballén Rodríguez, J. S. (2016). Posthumanismo, técnica y filosofía. &lt;em&gt;Cuadernos de Filosofía Latinoamericana, 37&lt;/em&gt;(115), 127–147.&lt;/p&gt;
&lt;p&gt;Becker, J., Rush, N., Barnes, B., &amp;amp; Rein, D. (2025). &lt;em&gt;Measuring the impact of early-2025 AI on experienced open-source developer productivity&lt;/em&gt; (arXiv:2507.09089). arXiv.&lt;/p&gt;
&lt;p&gt;Endsley, M. R., &amp;amp; Kiris, E. O. (1995). The out-of-the-loop performance problem and level of control in automation. &lt;em&gt;Human Factors, 37&lt;/em&gt;(2), 381–394.&lt;/p&gt;
&lt;p&gt;Heidegger, M. (1977). The question concerning technology. In &lt;em&gt;The question concerning technology and other essays&lt;/em&gt; (pp. 3–35). Harper &amp;amp; Row. (Original work published 1954)&lt;/p&gt;
&lt;p&gt;Husserl, E. (1970). &lt;em&gt;The crisis of European sciences and transcendental phenomenology&lt;/em&gt;. Northwestern University Press. (Original work published 1936)&lt;/p&gt;
&lt;p&gt;Jonas, H. (1984). &lt;em&gt;The imperative of responsibility: In search of an ethics for the technological age&lt;/em&gt;. University of Chicago Press. (Original work published 1979)&lt;/p&gt;
&lt;p&gt;Matthias, A. (2004). The responsibility gap. Ascribing responsibility for the actions of learning automata. &lt;em&gt;Ethics and Information Technology, 6&lt;/em&gt;(3), 175–183.&lt;/p&gt;
&lt;p&gt;Mitchell, M., Ghosh, A., &amp;amp; Passi, S. (2026). &lt;em&gt;AI agents push humans out of the loop&lt;/em&gt; (arXiv:2608.23642). arXiv.&lt;/p&gt;
&lt;p&gt;Santoni de Sio, F., &amp;amp; van den Hoven, J. (2018). Meaningful human control over autonomous systems. A philosophical account. &lt;em&gt;Frontiers in Robotics and AI, 5&lt;/em&gt;, 15.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30553/the-human-defines-delegates-reviews-and-is-responsible-the-ai-is-not</guid>
<pubDate>Sat, 10 Oct 2026 04:24:37 +0000</pubDate>
</item>
<item>
<title>The Agent Moved In. Code Is Now the Address.</title>
<link>https://coderlegion.com/26561/the-agent-moved-in-code-is-now-the-address</link>
<description>&lt;p&gt;A 100-page paper, 40+ authors, three universities. Here’s the one sentence that should keep enterprise AI teams up at night.&lt;/p&gt;
&lt;p&gt;There’s a paper that dropped this month from UIUC, Meta, and Stanford. Forty-something authors. A hundred-plus pages. Title: Code as Agent Harness.&lt;/p&gt;
&lt;p&gt;Here is the complete paper.&lt;/p&gt;
&lt;p&gt;You don’t need to read all of it.&lt;/p&gt;
&lt;p&gt;You need to understand the one idea it’s built on, because it quietly reframes everything happening in agentic AI right now, and it does it in a way that most teams are nowhere near ready for.&lt;/p&gt;
&lt;p&gt;Here it is: code has stopped being what AI agents produce. It’s become the substrate they run on.&lt;/p&gt;
&lt;p&gt;That’s it. That’s the shift.&lt;/p&gt;
&lt;p&gt;And the weird part? Once you see it, you can’t unsee it.&lt;/p&gt;
&lt;p&gt;From Output to Operating Surface&lt;br&gt;
For the past two years, the dominant mental model of AI + code has been something like:&lt;/p&gt;
&lt;p&gt;Human asks AI a question. AI writes some code. Code runs. Done.&lt;/p&gt;
&lt;p&gt;Code as output. AI as very fast typist with a CS degree.&lt;/p&gt;
&lt;p&gt;That model is already outdated.&lt;/p&gt;
&lt;p&gt;What’s actually happening in modern agentic systems is closer to this: the code is the agent’s world. It’s how the agent reasons, remembers, takes actions, verifies its own work, and coordinates with other agents. The agent doesn’t just write code. It lives inside code.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The paper calls these layers the harness interface, harness mechanisms, and harness scaling. But what they’re really describing is a new kind of infrastructure, one where code is the connective tissue of an entire cognitive system.&lt;/p&gt;
&lt;p&gt;The Four Words That Will Show Up in Your Next Procurement Call&lt;br&gt;
Here’s where it gets interesting from a non-academic perspective.&lt;/p&gt;
&lt;p&gt;The paper describes four properties that a well-built harness needs to have:&lt;/p&gt;
&lt;p&gt;Executable. Inspectable. Stateful. Governed.&lt;/p&gt;
&lt;p&gt;Now. Read those four words again. Slowly.&lt;/p&gt;
&lt;p&gt;Those aren’t research criteria. Those are audit criteria.&lt;/p&gt;
&lt;p&gt;Any CISO or procurement officer who’s ever been in a regulated industry will recognize that vocabulary instantly. Not from AI papers, but from the checklist they use before signing anything.&lt;/p&gt;
&lt;p&gt;Can this system be run reliably? (Executable)&lt;/p&gt;
&lt;p&gt;Can we see what it did and why? (Inspectable)&lt;/p&gt;
&lt;p&gt;Does it remember context correctly across sessions? (Stateful)&lt;/p&gt;
&lt;p&gt;Can we control what it’s allowed to do? (Governed)&lt;/p&gt;
&lt;p&gt;The paper wasn’t written as a procurement guide. But it reads like one, where they lay out the open challenges. And those open challenges are, not coincidentally, the exact questions that enterprise deals get blocked on.&lt;/p&gt;
&lt;p&gt;“Evaluation beyond final task success.” Translation: “We can’t just check if the AI got the right answer. We need to know how it got there.”&lt;/p&gt;
&lt;p&gt;“Human oversight for safety-critical actions.” Translation: “Before this agent touches production, we need a kill switch with a paper trail.”&lt;/p&gt;
&lt;p&gt;“Consistent shared state across multiple agents.” Translation: “When Agent A and Agent B both think they own the same task, who’s right and how do we know?”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=6151673456065639289&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The Split That’s Already Happening&lt;br&gt;
Enterprises building AI systems right now are quietly dividing into two camps, and most of them haven’t realized they’ve already chosen a side.&lt;/p&gt;
&lt;p&gt;Camp One: The agent is the product.&lt;/p&gt;
&lt;p&gt;These teams move fast. They ship demos that impress. They iterate on prompts. They optimize for “wow, it works.” Their architecture looks like a model call wrapped in some business logic and a Slack notification.&lt;/p&gt;
&lt;p&gt;For the last 24 months, these teams have been winning on velocity.&lt;/p&gt;
&lt;p&gt;Camp Two: The harness is the product.&lt;/p&gt;
&lt;p&gt;These teams move slower initially. They spend time on observability, state management, rollback mechanisms, and evaluation infrastructure. Their demos are less flashy. Their architecture diagrams have more boxes.&lt;/p&gt;
&lt;p&gt;Here’s the prediction I’ll make: Camp Two is about to start winning on contracts.&lt;/p&gt;
&lt;p&gt;Because the questions in a regulated enterprise sales cycle, the ones that stall deals, block procurement, and require three extra security review meetings, map almost exactly to harness properties. Not model benchmark scores.&lt;/p&gt;
&lt;p&gt;A model getting 90% on HumanEval does not tell your legal team whether the agent can be held accountable for a wrong output. A well-built harness does.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=2312065681527818134&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;What “Open Problems” Actually Means&lt;br&gt;
Academic papers have a tradition of ending with an “open problems” section that reads like a polite to-do list for future grad students.&lt;/p&gt;
&lt;p&gt;Section 5.2 of this paper has seven items.&lt;/p&gt;
&lt;p&gt;Naah. Those aren’t grad student projects. Those are unbuilt companies.&lt;/p&gt;
&lt;p&gt;Let me translate a few:&lt;/p&gt;
&lt;p&gt;“Regression-free harness improvement” means: how do you upgrade your agentic system without breaking the behaviors that were already working? Sounds boring until you realize that every enterprise AI team rebuilding a workflow from scratch every time they update the underlying model is currently doing this manually, at significant cost, with significant anxiety.&lt;/p&gt;
&lt;p&gt;“Verification under incomplete feedback” means: the agent takes an action, the outcome isn’t immediately clear, what does the system do? This is the difference between an AI that handles ambiguity gracefully and one that confidently proceeds in the wrong direction for forty-five minutes before anyone notices.&lt;/p&gt;
&lt;p&gt;“Extensions to multimodal environments” means: the harness needs to handle not just code execution, but GUI interactions, images, documents, and the glorious chaos of real enterprise systems that don’t have APIs.&lt;/p&gt;
&lt;p&gt;Each of these is a product opportunity. Also a sales objection. Also a headline waiting to happen when something goes wrong.&lt;/p&gt;
&lt;p&gt;The Acquisition vs IPO vs Nowhere Prediction&lt;br&gt;
Here’s a framework I’ve been thinking about for how this cycle plays out:&lt;/p&gt;
&lt;p&gt;The companies that get acquired will be the ones that built elegant harnesses. Great observability, clean governance hooks, reliable state management. Acqui-hires with infrastructure value.&lt;/p&gt;
&lt;p&gt;The companies that go public will be the ones that built the models. Massive compute, massive moats, massive narratives.&lt;/p&gt;
&lt;p&gt;The companies that go nowhere will be the ones that insisted the model would eventually subsume the harness. That if they just waited for the next model release, all those messy infrastructure problems would solve themselves.&lt;/p&gt;
&lt;p&gt;They’re not entirely wrong. Models are getting better at managing state, self-correcting, and handling long-horizon tasks. But “eventually” is doing a lot of work in that sentence. And in enterprise software, the gap between “eventually” and “now” is where entire companies live and die.&lt;/p&gt;
&lt;p&gt;So What Do You Actually Do With This&lt;br&gt;
If you’re building something in the agent infrastructure space, here’s the practical read:&lt;/p&gt;
&lt;p&gt;The vocabulary in this paper is about to become the vocabulary of enterprise RFPs. “Executable, inspectable, stateful, governed” will show up in procurement checklists written by people who have never read an arXiv paper in their life. They’ll arrive at those words independently, because those words describe what their auditors need.&lt;/p&gt;
&lt;p&gt;If your system already satisfies those four properties, you have a story to tell.&lt;/p&gt;
&lt;p&gt;If it doesn’t, you know what to build next.&lt;/p&gt;
&lt;p&gt;If you’re not building but funding, buying, or selling agent infrastructure: Section 5.2 of this paper is the closest thing to a market map you’ll find for the next eighteen months. It’s not written as one. But that’s what it is.&lt;/p&gt;
&lt;p&gt;The Strangest Part&lt;br&gt;
Forty researchers from three of the world’s top institutions spent considerable time agreeing on a vocabulary for how code functions in agentic systems.&lt;/p&gt;
&lt;p&gt;That in itself is a signal. Surveys like this don’t happen when a field is still chaotic. They happen when the field is settling, when the concepts are crystallizing, when someone is about to build a standard.&lt;/p&gt;
&lt;p&gt;And somewhere in a procurement department, an auditor is writing a checklist that will, without knowing it, match this paper almost exactly.&lt;/p&gt;
&lt;p&gt;That’s when research stops being research. And infrastructure stops being infrastructure.&lt;/p&gt;
&lt;p&gt;That’s when it becomes the thing you absolutely cannot ship without.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hardik&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Support my work : buymeacoffee.com/HardikGoel&lt;/p&gt;
&lt;p&gt;The paper: “Code as Agent Harness” (arXiv:2605.18747) — UIUC, Meta, Stanford, 40+ authors. Worth a skim of the abstract and Section 5.2 at minimum.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/26561/the-agent-moved-in-code-is-now-the-address</guid>
<pubDate>Wed, 09 Sep 2026 06:16:48 +0000</pubDate>
</item>
<item>
<title>Anatomy of a Coding Agent: What I Learned Building My Own</title>
<link>https://coderlegion.com/18592/anatomy-of-a-coding-agent-what-i-learned-building-my-own</link>
<description>&lt;p class=&quot;wp-block-paragraph&quot;&gt;You use Claude Code every day. But do you really know it?&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;I didn’t. Not really. I could describe the surface, but I couldn’t tell you what was actually happening between hitting enter and seeing a diff. The harness was a black box, and that started to bother me. The only way I knew to fix that was to build one.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The result is &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sudoish/oli&quot;&gt;oli&lt;/a&gt;, a single-binary terminal coding agent written in Rust that runs against Ollama by default. It got much larger than I expected. Every “small” subsystem (memory, policy, tool dispatch, provider quirks) turned out to have its own thicket of edge cases. I learned more about coding agents in a few weeks of building one than I had in a year of using them daily.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The hard parts aren’t clever prompts. They’re context management, tool design, policy gates, memory strategies and, if you want to run locally, survival engineering for models that don’t behave like the GPT-5 or Claude 4 families. This post is a tour of those parts, with the failures that taught me each one.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;The Big Picture&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Before diving into components, here’s what a coding agent actually looks like:&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-1-v3.png&quot; alt=&quot;Coding Agent Architecture&quot;&gt;&lt;/figure&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;The Agent Loop&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Every coding agent runs the same basic loop:&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-2-v3.png&quot; alt=&quot;Agent Loop&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Think → call → observe → repeat. The loop is deceptively simple. Everything hard lives in the details.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Three things I learned the hard way:&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Turn limits matter, even on local models.&lt;/strong&gt; Early on, a local model I was testing got stuck, it looped 47 times trying to “fix” a file that was already correct, burning through my entire context window before I caught it. The model wasn’t broken. The harness was: no turn limit, no escape hatch, no awareness that the model had lost the plot. The instinct is to say “who cares, I’m running locally, tokens are free.” But the cost isn’t dollars, it’s coherence. As context fills, models degrade: attention spreads thinner, instructions in the middle of the window get ignored (“lost in the middle”), and every failed attempt becomes a distractor that biases the next turn toward more wrong behavior. This is &lt;em&gt;especially&lt;/em&gt; true on local models, whose effective context is often a fraction of their advertised window — a Qwen3 advertised at 256K may stay coherent only through the first 32-64K. A runaway loop doesn’t just waste compute; it actively makes the agent stupider for the rest of the session. Now subagents get hard turn limits by default, and the top-level agent is capped too, with a config default you can override per run.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;The system prompt is pinned.&lt;/strong&gt; It survives &lt;code&gt;/clear&lt;/code&gt;, survives memory compaction, survives everything. The first time I accidentally cleared the system prompt mid-session, the model forgot what tools it had and started apologizing for being unable to help. Pinning was an obvious fix in hindsight.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Re-entrancy is a trap.&lt;/strong&gt; A Task tool that spawns a subagent which can itself spawn subagents quickly becomes a fork bomb. oli sidesteps the whole problem by registering &lt;code&gt;Task&lt;/code&gt; only in the parent agent — subagents get the same tool set &lt;em&gt;minus&lt;/em&gt; &lt;code&gt;Task&lt;/code&gt;, so they can’t recurse.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;The System Prompt&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Before you say anything, the model already gets a lot of scaffolding:&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-3-v3.png&quot; alt=&quot;System Prompt Structure&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The &lt;code&gt;AGENTS.md&lt;/code&gt; + &lt;code&gt;CLAUDE.md&lt;/code&gt; line matters. Both Codex and Claude Code established conventions for per-project agent instructions. oli reads both, at every directory level from your current location up to the filesystem root — so a workspace-wide convention can be overridden by a project-level one without copy-pasting.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Note that the system prompt text and the tool schemas are separate payloads in the provider request — a better mental model than “everything lives in one giant prompt.”&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The system prompt is &lt;strong&gt;expensive&lt;/strong&gt;. It consumes tokens on every single turn. I learned this when a project with nested AGENTS.md files at multiple levels ate 8,000 tokens before I’d typed anything. Now oli caps injected project context at 16KB total and truncates directory listings at 50 entries. This is also where prompt caching pays off: both the prompt and the tool schema payload are highly stable across turns. Anthropic’s API supports marking that stable prefix as cacheable, and oli supports Anthropic-style cache breakpoints on Claude routes through OpenRouter too. Anthropic prices cached input tokens at roughly 10% of the regular rate, so caching shaves a large chunk off every subsequent turn in a long session.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;Tools: The Model’s Hands&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The tool surface defines what the agent can do. Too few tools and it’s frustrating. Too many and the model gets confused, especially local models with smaller context windows.&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-4-v3.png&quot; alt=&quot;Tool Registry&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;A small core for the work, plus a handful of paging and notes tools. The design principles emerged from failures:&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Minimal surface.&lt;/strong&gt; I started with more, and the model kept picking the wrong tool or stacking calls when one would do. Keeping the core small and bolting on paging and notes tools turned out to be the right shape. Each does one thing. These choices mirror what Claude Code, Cursor’s Composer, and Aider converged on independently — a signal that the design space is narrower than it looks.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Bounded output.&lt;/strong&gt; Every tool truncates at 30KB. I learned this after the model Read a minified vendor.js file and blew through 180,000 tokens in one call. Now truncation markers embed a cache ID; the model can call &lt;code&gt;ShowFull(id, offset)&lt;/code&gt; to paginate the stashed body if it actually needs more.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;The read-first invariant.&lt;/strong&gt; Edit refuses to run unless you’ve Read the target file this session. This prevents edits based on stale context — the model can only modify what it’s actually seen this turn:&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-5-v3.png&quot; alt=&quot;Read-First Invariant&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Tools own their cleanup.&lt;/strong&gt; When you Ctrl-C a bash command, the harness has to kill not just the shell but every process it spawned. I found this out when orphaned &lt;code&gt;sleep&lt;/code&gt; processes from cancelled test runs accumulated over a week. A tool that spawns side effects has to know how to undo them — otherwise they leak into the user’s environment, and the harness gets blamed for the mess.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;Memory &amp;amp; Context Management&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Context windows are finite. Even 200K tokens fills up fast when you’re reading files, running tests, and iterating. Every tool result eats tokens.&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-6-v3.png&quot; alt=&quot;Context Window Management&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The default strategy is &lt;code&gt;LinearWithCompact&lt;/code&gt;: hold messages in order, and when approaching the context limit, summarize older turns into a rolling summary. Compaction triggers at 80% of context window. It finds a cut point at a user-message boundary (never split a tool_call from its result), sends older messages to the LLM with a summarization prompt, and replaces them with a summary message.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;That part is straightforward. The bug that ate three days of debugging was &lt;strong&gt;cancellation under compaction&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Here’s the scenario. You hit Ctrl-C mid-turn to stop the model. The REPL is supposed to roll back to the last clean state — the user prompt you just sent. Simple, when the message buffer is the source of truth: count back N messages, restore.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Except compaction had already run. The “last 12 messages” the rollback wanted to restore no longer existed — they’d been collapsed into a summary. So Ctrl-C would silently roll the conversation back to &lt;em&gt;somewhere random&lt;/em&gt;, often before the work the user was trying to cancel.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The fix was a one-line concept that took a day to see: stop treating the message array as the source of truth for &lt;em&gt;where you are&lt;/em&gt;. oli tracks a monotonic &lt;code&gt;record_count&lt;/code&gt; that increments on every logical turn, independent of physical message storage. Compaction drains messages, but the record count keeps climbing. Rollback targets a record count, not an array index — so the buffer can shrink underneath without the cursor losing its place.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Generalizable shape: any system that mutates history needs a stable identifier for “where you are” that isn’t the history itself. Memory management is also where coding agents silently fail — the model forgets what file it was editing, or repeats work it already did. The visible bugs are the easy ones.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;Policy &amp;amp; Approvals&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The policy engine gates every tool call. Without it, you’re one hallucinated &lt;code&gt;rm -rf&lt;/code&gt; away from disaster.&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-7-v3.png&quot; alt=&quot;Policy Engine&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Bash has its own allowlist: &lt;code&gt;git status&lt;/code&gt;, &lt;code&gt;cargo test&lt;/code&gt;, &lt;code&gt;ls&lt;/code&gt;, and similar safe commands auto-approve; everything else prompts. The line-mode REPL is a plain &lt;code&gt;y/N&lt;/code&gt; flow; the richer “allow this session” and persisted allowlist behavior are TUI affordances layered on top.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;There’s no hard denylist yet, and I’m ambivalent about adding one. Prompt-on-every-mutation is annoying but transparent — you see exactly what the model is about to do. A denylist invites a long tail of “obviously safe” exceptions that gradually erode the gate. Today, blocking happens by denying an &lt;code&gt;Ask&lt;/code&gt; decision: slower, but you stay in the loop.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The first time I saw the model attempt &lt;code&gt;rm -rf target/&lt;/code&gt; when I’d asked it to “clean up the build” and the approval prompt caught it, I understood why this layer exists. The model wasn’t malicious. It was being helpful in a way that would have been catastrophic without the gate.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;Local-Model Survival&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Frontier models handle tool calls cleanly: structured &lt;code&gt;tool_calls&lt;/code&gt; arrays in the API response. Local models via Ollama? Not so much.&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-8-v3.png&quot; alt=&quot;Local vs Frontier Models&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Many local models emit tool calls as plain text. Just raw JSON in the middle of their response. No structured field.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;oli solves this with a &lt;strong&gt;fallback parser&lt;/strong&gt;. When the model’s capability entry says &lt;code&gt;supports_native_tool_calls: false&lt;/code&gt;, the agent loop scans content for JSON objects with a &lt;code&gt;name&lt;/code&gt; field and splices them in as if they were real tool calls.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The &lt;strong&gt;model capability registry&lt;/strong&gt; tracks what each model can do. Lookups are prefix matches against the model id, so &lt;code&gt;claude-3-7-sonnet-latest&lt;/code&gt; matches the &lt;code&gt;claude-&lt;/code&gt; row. Today’s hardcoded entries:&lt;/p&gt;
&lt;figure class=&quot;wp-block-table&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Prefix&lt;/th&gt;&lt;th&gt;Context&lt;/th&gt;&lt;th&gt;Native Tool Calls&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;claude-&lt;/code&gt; / &lt;code&gt;anthropic/claude&lt;/code&gt;&lt;/td&gt;&lt;td&gt;200K&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;gpt-4&lt;/code&gt;&lt;/td&gt;&lt;td&gt;128K&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;gpt-&lt;/code&gt;&lt;/td&gt;&lt;td&gt;16K&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;llama3.1&lt;/code&gt; / &lt;code&gt;llama3.2&lt;/code&gt;&lt;/td&gt;&lt;td&gt;128K&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;llama3&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8K&lt;/td&gt;&lt;td&gt;✗&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;qwen2.5-coder&lt;/code&gt;&lt;/td&gt;&lt;td&gt;32K&lt;/td&gt;&lt;td&gt;✗&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;em&gt;unknown&lt;/em&gt; (default)&lt;/td&gt;&lt;td&gt;8K&lt;/td&gt;&lt;td&gt;✗&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Smoke tests against &lt;code&gt;qwen3-coder:7b&lt;/code&gt; and &lt;code&gt;llama3&lt;/code&gt; showed they don’t behave as their docs claimed for tool calls, so they’re flagged off; the fallback parser handles them. Users override via &lt;code&gt;[[caps]]&lt;/code&gt; in config — that’s how I run &lt;code&gt;qwen3-coder:30b&lt;/code&gt; at 256K with native tools.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The gap between “works on Claude” and “works on qwen3” is enormous. If you’re building for local models, expect to handle every edge case they throw at you — and to discover new ones every time a model release widens the gap.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;Provider Abstraction&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;One binary, many backends. The promise only works because of the language choice: Rust gives a single static binary with no runtime to install, shipping to Mac/Linux/Windows from the same &lt;code&gt;cargo build&lt;/code&gt;. And the borrow checker turns out to be a surprisingly good fit for an agent loop — the lifetime and ownership bugs that bite hardest in async code, the compiler catches before I run anything.&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-9-v3.png&quot; alt=&quot;Provider Abstraction&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Two provider kinds are available. Ollama, OpenRouter, OpenAI, LM Studio, vLLM, and llama.cpp’s server all speak OpenAI’s &lt;code&gt;/chat/completions&lt;/code&gt; shape, so one &lt;code&gt;openai-compat&lt;/code&gt; implementation covers them all — you just point &lt;code&gt;base_url&lt;/code&gt; at the right endpoint. The native Anthropic provider is its own thing because it speaks the Messages API directly and does its own OpenAI-shape &lt;img src=&quot;https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png&quot; alt=&quot;↔&quot; class=&quot;wp-smiley&quot; style=&quot;height: 1em; max-height: 1em;&quot;&gt; Anthropic-shape translation for tools, tool results, and system prompt handling.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;Caching adds a wrinkle here: native Anthropic supports prompt caching directly, but oli also supports Anthropic-style cache breakpoints in the openai-compat path for Claude models routed through OpenRouter. So “native provider” and “cached prefix” are related, but not identical ideas.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The openai-compat provider still has to handle backend quirks. OpenRouter sometimes returns 200 OK with an &lt;code&gt;error&lt;/code&gt; object in the body. The provider layer normalizes this.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The payoff: switching backends is a config flip, not a code change.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;The Extension Surface&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;A harness is only useful if you can make it yours. oli has three extension axes:&lt;/p&gt;
&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;img src=&quot;https://sudoish.com/wp-content/uploads/2026/05/anatomy-coding-agent-diagram-10-v3.png&quot; alt=&quot;Extension Surface&quot;&gt;&lt;/figure&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;All extensions route through the policy gate. No escape hatches.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;What I Left Out&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;To keep this post focused on the load-bearing components, I skipped several surfaces that ship in oli today: an MCP client (stdio + HTTP transports, with live &lt;code&gt;tools/list_changed&lt;/code&gt; deltas), a hook dispatcher (&lt;code&gt;PreToolUse&lt;/code&gt; / &lt;code&gt;PostToolUse&lt;/code&gt; / &lt;code&gt;Stop&lt;/code&gt;), session persistence as JSONL transcripts (with &lt;code&gt;--resume&lt;/code&gt; / &lt;code&gt;--continue&lt;/code&gt;), and the slash-command layer (&lt;code&gt;/compact&lt;/code&gt;, &lt;code&gt;/provider&lt;/code&gt;, &lt;code&gt;/model&lt;/code&gt;, &lt;code&gt;/sessions&lt;/code&gt;, etc.). Each is its own subsystem with its own trade-offs — let me know if you want any of them as a follow-up.&lt;/p&gt;
&lt;h2 class=&quot;wp-block-heading&quot;&gt;What This Means&lt;/h2&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;The harness is invisible until it breaks.&lt;/strong&gt; When Claude Code feels brilliant, you credit the model. When it feels broken — losing context, blocking the wrong thing, looping on a fix — that’s almost always the harness. The orchestration layer is doing the heavy lifting either way; you only notice when it fails.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;The hard problems are systems problems.&lt;/strong&gt; Memory management, policy enforcement, tool design, provider abstraction, local-model survival. Engineering challenges, not prompt engineering.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;&lt;strong&gt;Knowing the machinery makes you a better user.&lt;/strong&gt; Context overflow, policy gates, compaction, capability mismatches — once you can name what’s happening, you can debug it. Or work around it.&lt;/p&gt;
&lt;p class=&quot;wp-block-paragraph&quot;&gt;The repo is at &amp;lt;a href=&quot;https://github
&lt;/p&gt;</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/18592/anatomy-of-a-coding-agent-what-i-learned-building-my-own</guid>
<pubDate>Thu, 21 May 2026 20:33:45 +0000</pubDate>
</item>
<item>
<title>The Harness Is the Product: What the Claude Code Leak Actually Revealed About AI Agent Architecture</title>
<link>https://coderlegion.com/13864/the-harness-the-product-what-claude-code-leak-actually-revealed-about-agent-architecture</link>
<description>&lt;h3 id=&quot;executive-summary&quot;&gt;Executive Summary&lt;/h3&gt;
&lt;p&gt;This report argues that the Claude Code leak matters less as a source-exposure story than as an architectural disclosure event. The clearest lesson is not that Anthropic had a stronger model than people expected, but that a large share of practical agent performance appears to come from the software layer around the model: context handling, tool routing, permissions, continuity, recovery, and cost discipline.&lt;/p&gt;
&lt;p&gt;That layer is what this report calls the &lt;strong&gt;harness&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This version is intentionally hybrid in form. It follows technical-report discipline where confidence levels matter, but it keeps a readable narrative flow because the wider point reaches beyond one leak. This is not a complete forensic reconstruction of Anthropic's internal source. It is an attempt to explain, carefully, what the leak appears to reveal about how serious AI agent systems are actually built.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;1-why-this-leak-mattered-more-than-most&quot;&gt;&lt;strong&gt;1. Why This Leak Mattered More Than Most&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Many leak write-ups stop at the obvious questions: How many files? How many lines? What modules were exposed? Those questions are valid, but they are not the most interesting ones.&lt;/p&gt;
&lt;p&gt;The more important question is this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What did the Claude Code leak reveal about how modern AI agents really work?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is the reason this report exists.&lt;/p&gt;
&lt;p&gt;The event was embarrassing for Anthropic. But analytically, it became one of the clearest public glimpses into a production-style coding agent. It shifted the conversation away from the familiar idea that the model is the whole product and toward a less glamorous but more important reality: the model may be the visible intelligence, but the surrounding system often determines whether that intelligence becomes usable, governable, affordable, and durable.&lt;/p&gt;
&lt;p&gt;That surrounding system is the harness.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-reading-guide-what-this-report-claims-and-what-it-does-not&quot;&gt;&lt;strong&gt;2. Reading Guide: What This Report Claims, and What It Does Not&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This report uses three confidence levels.&lt;/p&gt;
&lt;h4 id=&quot;-confirmed&quot;&gt;▫️Confirmed&lt;/h4&gt;
&lt;p&gt;Claims supported by public reporting, company statements, or directly observable package behavior.&lt;/p&gt;
&lt;h4 id=&quot;-strong-inference&quot;&gt;▫️Strong inference&lt;/h4&gt;
&lt;p&gt;Claims drawn from architectural interpretation of leaked or reconstructed code structure, naming, control flow, and surrounding analysis. These are reasoned conclusions, not official confirmation.&lt;/p&gt;
&lt;h4 id=&quot;-directional-signal&quot;&gt;▫️Directional signal&lt;/h4&gt;
&lt;p&gt;Interesting but lower-confidence indicators. These may be suggestive and worth discussing, but they should not be treated as settled fact.&lt;/p&gt;
&lt;p&gt;This distinction matters because the value of the report depends not only on insight, but on confidence discipline.&lt;/p&gt;
&lt;h4 id=&quot;-what-this-report-does-not-claim&quot;&gt;▫️What this report does not claim&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;It does &lt;strong&gt;not&lt;/strong&gt; claim full parity with Anthropic's current internal source.&lt;/li&gt;
&lt;li&gt;It does &lt;strong&gt;not&lt;/strong&gt; claim that every inferred feature reflects public deployment exactly as described.&lt;/li&gt;
&lt;li&gt;It does &lt;strong&gt;not&lt;/strong&gt; claim that the model is unimportant.&lt;/li&gt;
&lt;li&gt;It does &lt;strong&gt;not&lt;/strong&gt; claim that all production harnesses look the same.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-five-terms-in-plain-english&quot;&gt;&lt;strong&gt;3. Five Terms in Plain English&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This report uses a few terms repeatedly. They are simple ideas, even if the industry language around them is not.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt;: the base AI itself — Claude, GPT, Gemini, and so on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent&lt;/strong&gt;: a system that uses a model to do multi-step work, often with tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Harness&lt;/strong&gt;: the software layer around the model that manages context, tools, permissions, memory, recovery, and presentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ReAct loop&lt;/strong&gt;: a repeated cycle of &lt;strong&gt;Reasoning + Acting&lt;/strong&gt; — observe, decide, act, inspect, repeat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drift&lt;/strong&gt;: the gradual process by which a system that was once safe or correct becomes less safe or less correct over time, even without one dramatic visible change.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A simple mental model helps:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The model is the engine. The harness is the control system, memory, safety layer, and workflow around it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is not just a metaphor. It is the core claim underneath the rest of this report.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-what-happened-and-what-did-not&quot;&gt;&lt;strong&gt;4. What Happened — and What Did Not&lt;/strong&gt;&lt;/h3&gt;
&lt;h4 id=&quot;-confirmed-1&quot;&gt;▫️Confirmed&lt;/h4&gt;
&lt;p&gt;Claude Code source-related material became publicly accessible because of a release packaging mistake rather than a conventional breach. Anthropic publicly framed the event as human error and said customer data and credentials were not exposed.&lt;/p&gt;
&lt;p&gt;A separate point matters for clarity: the Claude Code leak was not the same event as the axios supply-chain incident that happened around the same period. The two incidents were adjacent in time but different in origin. Any analysis that merges them creates confusion about the architectural significance of the Claude Code event itself.&lt;/p&gt;
&lt;h4 id=&quot;-why-this-mattered-immediately&quot;&gt;▫️Why this mattered immediately&lt;/h4&gt;
&lt;p&gt;Claude Code is not a toy demo. It sits close to a real product surface. That means the leak had significance beyond embarrassment. It exposed not merely code, but design priorities. It gave outsiders a rare opportunity to inspect how a serious coding agent appears to coordinate actions, permissions, continuity, and user interaction.&lt;/p&gt;
&lt;h4 id=&quot;-strong-inference-1&quot;&gt;▫️Strong inference&lt;/h4&gt;
&lt;p&gt;The architectural importance of the leak came not from raw volume, but from visibility into how a modern agent is assembled. The exposed material appears to show a system built less like a single model wrapper and more like a managed runtime for repeated tool-mediated work.&lt;/p&gt;
&lt;p&gt;That is why this event drew so much attention. It was not just a leak of source. It was a leak of assumptions.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-the-first-real-surprise-the-model-was-not-the-whole-product&quot;&gt;&lt;strong&gt;5. The First Real Surprise: The Model Was Not the Whole Product&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=14696592209293898758&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is the part many readers found unintuitive.&lt;/p&gt;
&lt;p&gt;The popular imagination of AI products still tends to treat the model as the product. Better model, better system. Smarter model, stronger moat.&lt;/p&gt;
&lt;p&gt;The Claude Code leak appears to complicate that story.&lt;/p&gt;
&lt;h4 id=&quot;-strong-inference-2&quot;&gt;▫️Strong inference&lt;/h4&gt;
&lt;p&gt;Based on the available analysis, the visible architecture suggests that much of the engineering complexity sits outside the model call itself. The surrounding system appears responsible for deciding what the AI sees, what it is allowed to do, how tool use is sequenced, what happens when an action fails, how state persists across steps, and how the user experiences the result.&lt;/p&gt;
&lt;p&gt;A careful formulation is important here.&lt;/p&gt;
&lt;p&gt;It would be too strong to say the model no longer matters. That would be false.&lt;/p&gt;
&lt;p&gt;A better statement is this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;In production AI agents, the model is necessary but not sufficient. The harness is where much of the operational reliability, usability, economics, and governance actually emerge.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That is the central thesis of this report.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;6-the-core-pattern-a-managed-react-loop&quot;&gt;&lt;strong&gt;6. The Core Pattern: A Managed ReAct Loop&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=16275896716308443219&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;If one architectural pattern matters more than any other, it is this one.&lt;/p&gt;
&lt;h4 id=&quot;-strong-inference-3&quot;&gt;▫️Strong inference&lt;/h4&gt;
&lt;p&gt;The analyzed material suggests Claude Code is built around a &lt;strong&gt;ReAct-style loop (Reasoning + Acting)&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;User Input
    ↓
System Prompt + Context Injection
    ↓
API Call → Streaming Response
    ↓
tool_use detected?
    ├── YES → Permission Check → Execute Tool → Feed Result Back → Loop
    └── NO  → Display to User, Exit Loop
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What matters is not merely that such a loop exists. Many agent systems use one. What matters is how much of the product seems to live inside the management of that loop.&lt;/p&gt;
&lt;p&gt;The surrounding harness appears to do several jobs at once:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;decide what context should be visible to the model&lt;/li&gt;
&lt;li&gt;constrain what actions are permitted&lt;/li&gt;
&lt;li&gt;execute tool-mediated work in a controlled sequence&lt;/li&gt;
&lt;li&gt;handle recoverable failure without collapsing the session&lt;/li&gt;
&lt;li&gt;stream results in a way humans can still follow&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is the first major lesson of the leak.&lt;/p&gt;
&lt;p&gt;A mature agent is not just a prompt with tools attached. It is a managed action cycle.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;7-the-strange-parts-that-matter&quot;&gt;&lt;strong&gt;&lt;strong&gt;7. The Strange Parts That Matter&lt;/strong&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Most leak coverage focuses on scale: file counts, line counts, directories, internal names. Those details are useful, but they do not all carry equal meaning.&lt;/p&gt;
&lt;p&gt;Some parts matter more because they reveal design philosophy.&lt;/p&gt;
&lt;h4 id=&quot;7-1-permissions-appear-to-sit-inside-the-action-loop&quot;&gt;7.1 Permissions appear to sit inside the action loop&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=10108559551546974336&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h5 id=&quot;-strong-inference-4&quot;&gt;▫️Strong inference&lt;/h5&gt;
&lt;p&gt;One of the clearest signals from the analyzed material is that permissions do not appear to be a decorative security feature added around the outside. They appear to sit inside the execution cycle itself.&lt;/p&gt;
&lt;p&gt;That distinction matters.&lt;/p&gt;
&lt;p&gt;A superficial agent checks safety after something has already been decided. A more mature system checks the boundary at the moment action is about to happen.&lt;/p&gt;
&lt;p&gt;The apparent design features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;default-deny or fail-closed tendencies&lt;/li&gt;
&lt;li&gt;tool-level and command-level distinction&lt;/li&gt;
&lt;li&gt;escalation paths when certainty is insufficient&lt;/li&gt;
&lt;li&gt;different persistence rules for different categories of approval&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This should not be read as proof of a perfectly rigid system with no override logic. Real production systems often include bounded exceptions, onboarding shortcuts, or low-risk automation paths so that harmless actions do not create constant user friction. &lt;/p&gt;
&lt;p&gt;The analyzed architecture also appears consistent with tiered approval logic, where lower-risk actions may pass through lighter-weight handling while higher-risk or more ambiguous actions trigger deeper review. The important question is not whether override paths exist. It is whether approval logic is tiered, scoped, and auditable.&lt;/p&gt;
&lt;p&gt;That is what makes permissions here interesting. They look less like settings and more like runtime governance.&lt;/p&gt;
&lt;h4 id=&quot;7-2-persistent-execution-appears-to-be-treated-as-infrastructure-not-convenience&quot;&gt;7.2 Persistent execution appears to be treated as infrastructure, not convenience&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=16125227445636832529&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h5 id=&quot;-strong-inference-5&quot;&gt;▫️Strong inference&lt;/h5&gt;
&lt;p&gt;Another revealing pattern is continuity. The analyzed material suggests the system is designed so that execution context does not reset after every action. That matters because a coding agent that forgets its shell state, working directory, and operational context after each step is not really working through a problem. It is repeatedly starting over.&lt;/p&gt;
&lt;p&gt;This is where components like a persistent shell manager become meaningful. Without continuity, memory becomes mostly theatrical. With continuity, state begins to matter operationally.&lt;/p&gt;
&lt;p&gt;That is an important architectural clue: session continuity appears to be a first-class design concern, not an afterthought.&lt;/p&gt;
&lt;h4 id=&quot;7-3-economic-architecture-appears-to-be-part-of-the-harness-itself&quot;&gt;7.3 Economic architecture appears to be part of the harness itself&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=6153741969111650305&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h5 id=&quot;-strong-inference-6&quot;&gt;▫️Strong inference&lt;/h5&gt;
&lt;p&gt;The analysis also suggests that Claude Code does not treat cost as a backend accounting detail. Stable prompt components and repeated context appear to be structured in a way that makes reuse more efficient across turns.&lt;/p&gt;
&lt;p&gt;If that reading is correct, then the harness is not only managing intelligence and execution. It is also managing economics.&lt;/p&gt;
&lt;p&gt;That matters more than it sounds.&lt;/p&gt;
&lt;p&gt;Many teams still talk about cost optimization as something that happens after the agent works. A more mature design treats cost structure as part of the system architecture from the beginning.&lt;/p&gt;
&lt;p&gt;A useful way to state the lesson is this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A mature harness does not only manage intelligence. It also manages economics.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In real deployments, that can affect margins, latency, usage ceilings, and which products remain commercially viable at all.&lt;/p&gt;
&lt;h4 id=&quot;7-4-kairos-and-similar-names-drew-attention-for-a-reason&quot;&gt;7.4 KAIROS and similar names drew attention for a reason&lt;/h4&gt;
&lt;h5 id=&quot;-directional-signal-1&quot;&gt;▫️ Directional signal&lt;/h5&gt;
&lt;p&gt;Among the lower-confidence signals, one name attracted disproportionate attention: &lt;strong&gt;KAIROS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It is important not to overstate what such names prove. A name alone is not a deployment guarantee. A suggestive code path is not the same thing as confirmed product behavior.&lt;/p&gt;
&lt;p&gt;But the attention is still informative. What names like KAIROS seem to evoke is not merely curiosity about an internal feature. They point toward a broader architectural leap the market is actively trying to interpret: the move from a request-response assistant toward a more continuity-aware, background-capable, or always-on operating mode.&lt;/p&gt;
&lt;p&gt;That distinction matters because it changes the engineering question. The issue is no longer only whether the model can answer well in one turn. It is whether the surrounding system can preserve state, revisit unfinished work, consolidate memory, and continue acting across time without losing control.&lt;/p&gt;
&lt;p&gt;Even if public interpretations of KAIROS are uneven, the fascination around it still reveals something real. Attention is shifting from smarter outputs toward more persistent harness behavior.&lt;/p&gt;
&lt;p&gt;That is a harness question.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;8-why-this-changes-the-conversation&quot;&gt;&lt;strong&gt;8. Why This Changes the Conversation&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The Claude Code leak mattered not only because of what it showed, but because of what it re-centered.&lt;/p&gt;
&lt;p&gt;For the last phase of AI discourse, the center of gravity sat on model capability. Bigger context windows. Better benchmarks. More persuasive demos.&lt;/p&gt;
&lt;p&gt;The leak pushes attention somewhere else.&lt;/p&gt;
&lt;h4 id=&quot;-strong-inference-7&quot;&gt;▫️Strong inference&lt;/h4&gt;
&lt;p&gt;The deeper lesson is that production systems succeed or fail on questions the model alone cannot answer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What information is injected, and when?&lt;/li&gt;
&lt;li&gt;What tools are available, and under what conditions?&lt;/li&gt;
&lt;li&gt;What happens when a step fails halfway through?&lt;/li&gt;
&lt;li&gt;What persists across turns or sessions?&lt;/li&gt;
&lt;li&gt;How are costs controlled as work continues?&lt;/li&gt;
&lt;li&gt;How much of the system remains legible to a human operator?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not model questions. They are harness questions.&lt;/p&gt;
&lt;p&gt;That is why this incident may matter beyond Anthropic.&lt;/p&gt;
&lt;p&gt;It did not merely expose one company's code. It helped clarify where the next engineering competition is likely to sit.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;9-from-agent-talk-to-harness-thinking&quot;&gt;&lt;strong&gt;9. From Agent Talk to Harness Thinking&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This is where the report moves from analysis of one event to a broader field-level thesis.&lt;/p&gt;
&lt;p&gt;The word &lt;strong&gt;agent&lt;/strong&gt; has done useful work. It gave the industry a way to talk about systems that do more than answer prompts.&lt;/p&gt;
&lt;p&gt;But the word also hides too much.&lt;/p&gt;
&lt;p&gt;It can refer to a simple loop with tools, a multi-step code assistant, a background worker, a policy-bounded coordinator, or a semi-persistent execution environment. The label is broad enough that it often obscures the actual engineering surface.&lt;/p&gt;
&lt;h4 id=&quot;-this-report-s-argument&quot;&gt;▫️This report's argument&lt;/h4&gt;
&lt;p&gt;The more useful design question is no longer simply:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;How autonomous is the agent?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is increasingly:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;What kind of harness turns that autonomy into bounded, observable, durable action?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is why the leak matters as an architectural event. It gives substance to a transition that was already beginning: from talking about agents as if they were personalities, to talking about harnesses as if they were systems.&lt;/p&gt;
&lt;p&gt;That change in vocabulary is not cosmetic. It reflects a change in engineering focus.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;10-the-next-problem-drift&quot;&gt;&lt;strong&gt;10. The Next Problem: Drift&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=1451964424337381314&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once the harness becomes responsible for context, permissions, continuity, memory, and cost structure, the next unresolved question is not simply whether the system works today.&lt;/p&gt;
&lt;p&gt;It is whether the system remains safe and meaningful over time.&lt;/p&gt;
&lt;p&gt;That is the drift problem.&lt;/p&gt;
&lt;h4 id=&quot;-plain-language-definition&quot;&gt;▫️Plain-language definition&lt;/h4&gt;
&lt;p&gt;Drift is what happens when a system that was once safe, correct, or well-bounded becomes less so over time — not because one visible catastrophic change happened, but because meanings, dependencies, approvals, and contexts slowly moved.&lt;/p&gt;
&lt;p&gt;Examples are easy to imagine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a previously harmless command now touches a more sensitive environment than before&lt;/li&gt;
&lt;li&gt;compressed memory silently drops context that later becomes important&lt;/li&gt;
&lt;li&gt;a model update changes how a familiar boundary is interpreted&lt;/li&gt;
&lt;li&gt;an old approval is reused in a new situation where its meaning has shifted&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A concrete software example makes the problem clearer. Imagine a tool call that once wrote to a benign local artifact, and was therefore approved as low-risk. Months later, a dependency update changes the output schema, or the same path is now wired into a deployment-sensitive pipeline. The approval may still exist, but the meaning of the action has changed. That is drift.&lt;/p&gt;
&lt;h4 id=&quot;-why-drift-belongs-in-this-report&quot;&gt;▫️Why drift belongs in this report&lt;/h4&gt;
&lt;p&gt;This is not a separate manifesto topic added from outside the leak.&lt;/p&gt;
&lt;p&gt;It follows naturally from the kind of architecture the leak appears to reveal. Once a harness governs repeated action across time, the problem is no longer just execution quality. It is temporal reliability.&lt;/p&gt;
&lt;h4 id=&quot;-strong-inference-8&quot;&gt;▫️Strong inference&lt;/h4&gt;
&lt;p&gt;The analyzed Claude Code material appears comparatively mature in orchestration, permissions, continuity, and cost awareness. It does not appear to offer an equally mature public answer to long-horizon drift-aware revalidation.&lt;/p&gt;
&lt;p&gt;That may be one of the most important unresolved engineering problems in this entire area.&lt;/p&gt;
&lt;p&gt;The field is getting better at making agents act.&lt;/p&gt;
&lt;p&gt;It is less clearly getting better at making yesterday's safe behavior remain safe tomorrow.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;11-what-this-leak-may-have-changed-for-the-field&quot;&gt;&lt;strong&gt;11. What This Leak May Have Changed for the Field&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A single leaked codebase does not settle the future of AI architecture. But some events clarify what many people were already beginning to suspect.&lt;/p&gt;
&lt;p&gt;This may be one of those events.&lt;/p&gt;
&lt;h4 id=&quot;-this-report-s-synthesis&quot;&gt;▫️This report's synthesis&lt;/h4&gt;
&lt;p&gt;The Claude Code leak suggests five field-level conclusions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The model alone does not explain product performance.&lt;/strong&gt;&lt;br&gt;
The surrounding harness appears to carry more of the product than many people assumed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Governance is becoming executable.&lt;/strong&gt;&lt;br&gt;
Permissions, approval boundaries, traceability, and action control are increasingly engineering concerns, not only policy language.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Economics is now architectural.&lt;/strong&gt;&lt;br&gt;
Cost control is not just a billing issue. It is part of how serious systems must be designed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Continuity matters as much as intelligence.&lt;/strong&gt;&lt;br&gt;
An agent that cannot preserve state, context, and working continuity is limited even if the underlying model is strong.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Drift may be the next meaningful frontier.&lt;/strong&gt;&lt;br&gt;
The industry has become stronger at orchestration than at long-horizon revalidation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Those conclusions should not be treated as universal law. But they are, at minimum, a defensible reading of why this leak produced so much architectural interest.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;12-conclusion&quot;&gt;&lt;strong&gt;12. Conclusion&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The Claude Code leak was embarrassing for Anthropic. That much is obvious.&lt;/p&gt;
&lt;p&gt;What is less obvious, and more important, is what the event revealed about the real engineering surface of modern AI systems.&lt;/p&gt;
&lt;p&gt;The strongest lesson is not that the model does not matter. It does.&lt;/p&gt;
&lt;p&gt;The stronger lesson is that model capability alone does not explain production performance. The harness — the software layer that manages context, tools, permissions, recovery, continuity, and economics — appears to carry far more of the product than many people had previously acknowledged.&lt;/p&gt;
&lt;p&gt;That is why this incident matters beyond one company and beyond one week of coverage.&lt;/p&gt;
&lt;p&gt;It helps clarify a broader shift:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;from prompt tricks to managed execution&lt;/li&gt;
&lt;li&gt;from raw autonomy to governable action&lt;/li&gt;
&lt;li&gt;from “agent” as a label to “harness” as the real engineering surface&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The next durable moat in AI may not be the model alone.&lt;/p&gt;
&lt;p&gt;It may be the harness that turns model capability into bounded, observable, durable work.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/13864/the-harness-the-product-what-claude-code-leak-actually-revealed-about-agent-architecture</guid>
<pubDate>Thu, 02 Apr 2026 14:47:57 +0000</pubDate>
</item>
</channel>
</rss>