<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged coding-agents</title>
<link>https://coderlegion.com/tag/coding-agents</link>
<description>Powered by Question2Answer</description>
<item>
<title>What AI Coding Loses That Git History Can't Tell You — B Donald Harris</title>
<link>https://coderlegion.com/32458/what-ai-coding-loses-that-git-history-cant-tell-you-b-donald-harris</link>
<description>&lt;p&gt;&lt;strong&gt;AI coding agents can generate code faster than ever—but can developers still explain why that code exists?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this CoderLegion Developer Spotlight, software architect and founder &lt;strong&gt;B Donald Harris&lt;/strong&gt; shares how AI-assisted development has reignited his passion for coding, why traditional Git history doesn't tell the whole story, and how he's building &lt;strong&gt;Hindsight&lt;/strong&gt; to help developers understand the decisions, conversations, and reasoning behind their software.&lt;/p&gt;
&lt;p&gt;From discovering programming on a Commodore 64 at age nine to exploring AI agentic workflows after more than two decades in software development, Donald offers a thoughtful perspective on the changing role of developers—and why the joy of building still matters.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;meet-b-donald-harris&quot;&gt;Meet B Donald Harris&lt;/h3&gt;
&lt;p&gt;B Donald Harris is a software architect and founder based in Tulsa, Oklahoma. He has spent more than two decades building software, primarily in .NET and cloud technologies, and continues to explore new ways to build, learn, and collaborate.&lt;/p&gt;
&lt;p&gt;His current work includes &lt;strong&gt;Hindsight&lt;/strong&gt;, a workflow intelligence tool intended to help developers reconstruct how a software project evolved and understand why particular decisions were made.&lt;/p&gt;
&lt;p&gt;Donald is also behind &lt;strong&gt;BIT Voices&lt;/strong&gt;, a podcast and builder network created to showcase Black technology professionals, share their stories, and help builders discover and connect with one another.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connect with Donald on CoderLegion:&lt;/strong&gt;&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/user/BDonaldTechnologist&quot;&gt;https://coderlegion.com/user/BDonaldTechnologist&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-ai-coding-can-leave-developers-with-unanswered-questions&quot;&gt;Why AI coding can leave developers with unanswered questions&lt;/h3&gt;
&lt;p&gt;AI coding agents can produce substantial amounts of code, help implement features, and accelerate development. But faster implementation creates another challenge: keeping track of everything that has changed and understanding the reasoning behind those changes.&lt;/p&gt;
&lt;p&gt;As Donald explains in the interview, experienced developers might not remember every line of code they've written, but they can often recall the overall system design and know where to look when something goes wrong.&lt;/p&gt;
&lt;p&gt;With agentic development, that understanding can become harder to maintain as changes and commits accumulate quickly.&lt;/p&gt;
&lt;p&gt;A Git history may show that a feature was added, a bug was fixed, or an implementation changed. What it might not explain is &lt;strong&gt;why the team made that decision in the first place&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The missing context can live in conversations with AI agents, prompts, discussions between developers, terminal sessions, notes, and the reasoning behind architectural choices.&lt;/p&gt;
&lt;p&gt;That is the problem Donald wants Hindsight to help solve.&lt;/p&gt;
&lt;h3 id=&quot;hindsight-remembering-the-story-behind-software&quot;&gt;Hindsight: Remembering the story behind software&lt;/h3&gt;
&lt;p&gt;Hindsight is a workflow intelligence tool Donald is building to help developers make sense of how their projects have evolved.&lt;/p&gt;
&lt;p&gt;The concept is to connect a repository and bring together relevant development information, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Repository history, pull requests, and issues.&lt;/li&gt;
&lt;li&gt;AI conversations and prompting sessions.&lt;/li&gt;
&lt;li&gt;Terminal sessions and development notes.&lt;/li&gt;
&lt;li&gt;Decisions made during implementation and debugging.&lt;/li&gt;
&lt;li&gt;Changes in direction and the reasoning behind them.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By working with this information and a language model, developers could build a more complete account of their project's development journey.&lt;/p&gt;
&lt;p&gt;Rather than relying exclusively on commit messages and code changes, the aim is to preserve the context that helps explain what happened, why it happened, and how the software reached its current state.&lt;/p&gt;
&lt;p&gt;Donald describes the project as being in development and experimentation during the interview, with an MVP alpha targeted for the beginning of the following year.&lt;/p&gt;
&lt;p&gt;He also emphasizes that privacy and control over what information is captured and seen are important considerations for builders using such a tool.&lt;/p&gt;
&lt;h3 id=&quot;how-ai-has-changed-donald-s-approach-to-development&quot;&gt;How AI has changed Donald's approach to development&lt;/h3&gt;
&lt;p&gt;One of the most interesting moments in the conversation comes when Donald reflects on how AI coding agents have affected his relationship with programming.&lt;/p&gt;
&lt;p&gt;He started coding at nine after his father brought home a Commodore 64. Using a book of BASIC programs, he would type instructions and watch something happen on the computer. That experience felt like magic, and it sparked a lifelong interest in building software.&lt;/p&gt;
&lt;p&gt;Over time, professional responsibilities and other commitments meant that coding sometimes became something he did primarily for work rather than for fun.&lt;/p&gt;
&lt;p&gt;AI-assisted development has helped bring back that original excitement.&lt;/p&gt;
&lt;p&gt;With agents taking on much of the implementation work, Donald can spend more time thinking about architecture, orchestrating agents, and bringing ideas to life—ideas he might not previously have had the time to explore.&lt;/p&gt;
&lt;p&gt;His perspective is not that developers should abandon their skills or stop understanding their code. Instead, he sees AI as another step in the evolution of computing, much like earlier layers of abstraction that made software development possible.&lt;/p&gt;
&lt;p&gt;The challenge now is learning how to work effectively with these tools while maintaining control over the systems being built.&lt;/p&gt;
&lt;h3 id=&quot;from-a-net-developer-tool-to-ai-agentic-workflows&quot;&gt;From a .NET developer tool to AI agentic workflows&lt;/h3&gt;
&lt;p&gt;Donald also discusses a VS Code extension he created to simplify .NET project creation.&lt;/p&gt;
&lt;p&gt;While exploring a move from Visual Studio to VS Code at work, he found that starting certain .NET projects required a sequence of command-line operations: creating solutions, creating projects, and adding projects to solutions.&lt;/p&gt;
&lt;p&gt;He wanted a simpler workflow, so he explored the VS Code extension architecture and built a tool that automated those steps.&lt;/p&gt;
&lt;p&gt;That project also became his first introduction to agentic workflows and helped shape his interest in how new tools could make development easier.&lt;/p&gt;
&lt;p&gt;The experience reflects a recurring theme in Donald's work: identifying friction in the development process and finding practical ways to remove it.&lt;/p&gt;
&lt;h3 id=&quot;building-bit-voices-and-creating-opportunities-for-others&quot;&gt;Building BIT Voices and creating opportunities for others&lt;/h3&gt;
&lt;p&gt;Donald’s work extends beyond software tools.&lt;/p&gt;
&lt;p&gt;Through the BIT Voices podcast, he provides a platform for Black technology professionals to share their experiences, work, and ideas. The accompanying BIT Voices Network is intended to help builders discover one another, showcase projects, connect, and potentially collaborate.&lt;/p&gt;
&lt;p&gt;Donald explains that representation matters because technology professionals can be geographically and organizationally dispersed, sometimes with few opportunities to connect with others who share similar experiences.&lt;/p&gt;
&lt;p&gt;He wants younger generations to see people like themselves building careers and creating opportunities in technology.&lt;/p&gt;
&lt;p&gt;His decision to become more visible as a public builder is part of that mission: sharing his own work while helping others tell their stories.&lt;/p&gt;
&lt;h3 id=&quot;lessons-from-building-products-and-communities&quot;&gt;Lessons from building products and communities&lt;/h3&gt;
&lt;p&gt;The interview touches on several lessons that extend beyond AI tooling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Don't lose the joy of building.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Donald says the advice he wishes he had received earlier in his career was to never stop doing software development for fun. Personal projects can provide room to experiment and rediscover the excitement that first drew someone to programming.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Understand the reasoning, not just the implementation.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Code and commits tell part of a software project's story. The discussions, decisions, and context behind them can be equally important when maintaining or extending a system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Learn to embrace technological change.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Donald sees AI as another stage in computing's evolution. Rather than dismissing it, developers can learn how to use it effectively while continuing to apply their own judgment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Pay attention to how the software actually works.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Building and testing a product can reveal workflows that differ from the assumptions made during initial design. Donald emphasizes learning from those discoveries rather than rigidly following preconceived ideas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Start building.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;His advice to developers who want to create their own products is straightforward: start. Developers already have many of the skills needed to outline a project and begin turning an idea into something real.&lt;/p&gt;
&lt;h3 id=&quot;watch-the-full-conversation&quot;&gt;Watch the full conversation&lt;/h3&gt;
&lt;p&gt;In this CoderLegion Developer Spotlight, Donald and host Tom Smith explore AI-assisted development, software architecture, Hindsight, the importance of developer context, and the work involved in building products and communities.&lt;/p&gt;
&lt;p&gt;The conversation is particularly relevant for developers experimenting with AI coding agents and thinking about how to maintain a deeper understanding of increasingly complex codebases.&lt;/p&gt;
&lt;h3 id=&quot;about-the-interviewer-tom-smith&quot;&gt;About the interviewer: Tom Smith&lt;/h3&gt;
&lt;p&gt;Tom Smith hosts this CoderLegion Developer Spotlight, speaking with developers and builders about their experiences, technical decisions, projects, and lessons learned along the way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connect with Tom on CoderLegion:&lt;/strong&gt;&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/user/Tom+Smith&quot;&gt;https://coderlegion.com/user/Tom Smith&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;about-coderlegion-dev-stories&quot;&gt;About CoderLegion Dev Stories&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;CoderLegion Dev Stories&lt;/strong&gt; shares the experiences behind software development: the people building products, the problems they solve, the decisions they make, and the lessons they learn.&lt;/p&gt;
&lt;p&gt;If you're building something interesting, exploring a new technology, or learning from real-world development challenges, consider sharing your story with the CoderLegion community.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Explore CoderLegion:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com&quot;&gt;https://coderlegion.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keep building, keep sharing, and keep learning from one another.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;tags&quot;&gt;Tags&lt;/h4&gt;
&lt;p&gt;AI, AI Coding Agents, Software Development, Software Architecture, Developer Tools, Git, .NET, VS Code, Developer Stories, CoderLegion&lt;/p&gt;
</description>
<category>Dev Stories</category>
<guid isPermaLink="true">https://coderlegion.com/32458/what-ai-coding-loses-that-git-history-cant-tell-you-b-donald-harris</guid>
<pubDate>Mon, 26 Oct 2026 03:02:57 +0000</pubDate>
</item>
<item>
<title>Check the tool call before a coding agent runs it</title>
<link>https://coderlegion.com/29888/check-the-tool-call-before-a-coding-agent-runs-it</link>
<description>&lt;p&gt;A system prompt asks the model to behave. The tool call still goes out when the model ignores that ask.&lt;/p&gt;
&lt;p&gt;ThumbGate sits in front of the call. The PreToolUse hook reads the command before it runs and can block it. A thumbs-down on a bad call becomes a rule, so the same call does not get through the next time.&lt;/p&gt;
&lt;p&gt;Install on a repo with &lt;code&gt;npx thumbgate init&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pro is $19 a month or $149 a year per operator.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://thumbgate.ai/pricing&quot;&gt;https://thumbgate.ai/pricing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://thumbgate.ai/go/pro?utm_source=coderlegion&amp;amp;utm_medium=community&amp;amp;utm_campaign=pretool-hook&quot;&gt;https://thumbgate.ai/go/pro?utm_source=coderlegion&amp;amp;utm_medium=community&amp;amp;utm_campaign=pretool-hook&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The longer piece on why the prompt is the wrong layer: &lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/28973/why-system-prompts-wont-save-your-ai-agent-building-architectural-injection-immunity&quot;&gt;https://coderlegion.com/28973/why-system-prompts-wont-save-your-ai-agent-building-architectural-injection-immunity&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/29888/check-the-tool-call-before-a-coding-agent-runs-it</guid>
<pubDate>Mon, 05 Oct 2026 16:36:49 +0000</pubDate>
</item>
<item>
<title>Your AI Coding Agent Is Paying to Read Code It Doesn't Need</title>
<link>https://coderlegion.com/28136/your-ai-coding-agent-is-paying-to-read-code-it-doesnt-need</link>
<description>&lt;h2 id=&quot;your-ai-coding-agent-is-paying-to-read-code-it-doesn-t-need&quot;&gt;Your AI Coding Agent Is Paying to Read Code It Doesn't Need&lt;/h2&gt;
&lt;p&gt;AI coding agents have become surprisingly good at changing code.&lt;/p&gt;
&lt;p&gt;But we are still giving them files as if they were human developers sitting in front of an editor.&lt;/p&gt;
&lt;p&gt;And that is expensive.&lt;/p&gt;
&lt;p&gt;Imagine your agent needs to rename one identifier inside a 2,000-line file.&lt;/p&gt;
&lt;p&gt;The actual change might be:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;oldName → newName
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few tokens of useful information.&lt;/p&gt;
&lt;p&gt;Yet the typical agent workflow looks something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;read 2,000 lines
↓
reason about one relevant line
↓
edit the file
↓
read the file or diff again
↓
continue carrying much of that context
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The agent may consume tens of thousands of tokens to perform an operation whose semantic payload is only a handful of tokens.&lt;/p&gt;
&lt;p&gt;That feels backwards.&lt;/p&gt;
&lt;p&gt;Read more: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/francescobianco/rap/&quot;&gt;https://github.com/francescobianco/rap/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-if-the-agent-never-opened-the-file-&quot;&gt;What if the agent never opened the file?&lt;/h3&gt;
&lt;p&gt;This is the idea behind RAP — Runtime Apply Patch.&lt;/p&gt;
&lt;p&gt;Instead of asking an agent to read a file, locate something, rewrite it, and verify the result, RAP lets the agent address the code directly by its content.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rap s app.go 'oldName' 'newName'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RAP answers:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;updated app.go (lines 1697 -&amp;gt; 1699, bytes +133, replacements 1)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That's it.&lt;/p&gt;
&lt;p&gt;The agent did not need to load 2,000 lines into its context.&lt;/p&gt;
&lt;p&gt;It already knew what it wanted to change.&lt;/p&gt;
&lt;p&gt;RAP simply found it and performed the operation.&lt;/p&gt;
&lt;p&gt;The principle can be summarized in three words:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lines, not files.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;files-are-a-human-abstraction&quot;&gt;Files are a human abstraction&lt;/h3&gt;
&lt;p&gt;Files are extremely useful for humans.&lt;/p&gt;
&lt;p&gt;We open &lt;code&gt;app.go&lt;/code&gt;, scroll around, understand the surrounding code, make a change, save it, and inspect the result.&lt;/p&gt;
&lt;p&gt;But an AI agent does not necessarily need to reproduce that workflow.&lt;/p&gt;
&lt;p&gt;If an agent already knows:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;OLD = &quot;oldName&quot;
NEW = &quot;newName&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;why should it pay the context cost of reading another 1,999 lines?&lt;/p&gt;
&lt;p&gt;The information required to describe the mutation and the information required to store the program are two very different things.&lt;/p&gt;
&lt;p&gt;RAP tries to keep them separate.&lt;/p&gt;
&lt;p&gt;The filesystem stores the program.&lt;/p&gt;
&lt;p&gt;The model describes the mutation.&lt;/p&gt;
&lt;p&gt;RAP connects the two.&lt;/p&gt;
&lt;h3 id=&quot;content-becomes-the-address&quot;&gt;Content becomes the address&lt;/h3&gt;
&lt;p&gt;Traditional editing often addresses code through coordinates:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;file → line → column
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But coordinates are fragile.&lt;/p&gt;
&lt;p&gt;Insert ten lines above the target and the address changes.&lt;/p&gt;
&lt;p&gt;RAP instead addresses code by content:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;file → known text → replacement
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The interesting consequence is that the agent often already possesses the address.&lt;/p&gt;
&lt;p&gt;Maybe the target came from a previous grep.&lt;/p&gt;
&lt;p&gt;Maybe it appeared in an error message.&lt;/p&gt;
&lt;p&gt;Maybe the user provided it.&lt;/p&gt;
&lt;p&gt;Maybe the agent wrote that code itself thirty seconds ago.&lt;/p&gt;
&lt;p&gt;There is no reason to reload the entire file merely to rediscover information already present in the agent's context.&lt;/p&gt;
&lt;h3 id=&quot;what-if-the-target-is-ambiguous-&quot;&gt;What if the target is ambiguous?&lt;/h3&gt;
&lt;p&gt;Then RAP stops.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ rap s app.go 'count' 'total'
rap: OLD matched 3 times; use -all or a more specific OLD
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nothing gets written.&lt;/p&gt;
&lt;p&gt;This property matters more than it might initially appear.&lt;/p&gt;
&lt;p&gt;Shell tools can be extremely efficient for agents, but commands such as &lt;code&gt;sed&lt;/code&gt; can also silently perform a perfectly valid operation on the wrong piece of text.&lt;/p&gt;
&lt;p&gt;For an autonomous agent, failure is often cheaper than confidence.&lt;/p&gt;
&lt;p&gt;A failed command may cost a dozen tokens.&lt;/p&gt;
&lt;p&gt;A wrong edit can contaminate several subsequent reasoning steps before the mistake is discovered.&lt;/p&gt;
&lt;p&gt;RAP therefore prefers an explicit refusal over an ambiguous mutation.&lt;/p&gt;
&lt;h3 id=&quot;but-sometimes-the-agent-really-does-need-context&quot;&gt;But sometimes the agent really does need context&lt;/h3&gt;
&lt;p&gt;Of course.&lt;/p&gt;
&lt;p&gt;The argument is not that agents should never read source code.&lt;/p&gt;
&lt;p&gt;The argument is that &lt;strong&gt;reading an entire file should not be the default unit of interaction&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;RAP provides smaller operations for the questions agents actually ask.&lt;/p&gt;
&lt;p&gt;Want to know whether a target is unique?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rap m FILE 'text'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Result:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;matches: 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Want to inspect only the affected area?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rap preview -n FILE 40 60 -- s OLD NEW
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The agent receives a small window instead of the whole building.&lt;/p&gt;
&lt;p&gt;Need to pass ugly text containing quotes, JSON, shell characters, or newlines?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rap q -token @file
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RAP turns it into a safe token representation.&lt;/p&gt;
&lt;p&gt;And after an edit, the command itself returns a receipt describing what happened.&lt;/p&gt;
&lt;p&gt;No automatic full-file reread is necessary just to ask:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Did it work?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;the-token-economics-are-surprisingly-large&quot;&gt;The token economics are surprisingly large&lt;/h3&gt;
&lt;p&gt;Consider a 2,000-line source file representing roughly 25,000 tokens.&lt;/p&gt;
&lt;p&gt;A conventional agent might:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;read file        ~25,000 tokens
modify
inspect result   ~25,000 tokens
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Potentially around 50,000 tokens of context traffic around an edit that may involve only one line.&lt;/p&gt;
&lt;p&gt;With RAP, the interaction can look more like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;rap s FILE OLD NEW
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perhaps ~40 input tokens and ~20 output tokens.&lt;/p&gt;
&lt;p&gt;Obviously, real workloads vary. Agents sometimes genuinely need broader context, and not every edit can be expressed as a simple substitution.&lt;/p&gt;
&lt;p&gt;But that is precisely the point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pay for context when reasoning requires context.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Do not pay for it merely because the code happens to live inside a large file.&lt;/p&gt;
&lt;h3 id=&quot;this-becomes-more-important-as-agents-become-more-autonomous&quot;&gt;This becomes more important as agents become more autonomous&lt;/h3&gt;
&lt;p&gt;Token efficiency is usually discussed as a model problem:&lt;/p&gt;
&lt;p&gt;smaller prompts, better compression, larger context windows, cheaper inference.&lt;/p&gt;
&lt;p&gt;But part of the problem may actually live outside the model.&lt;/p&gt;
&lt;p&gt;Our tools still assume that an intelligent actor interacts with software primarily by opening documents.&lt;/p&gt;
&lt;p&gt;Coding agents give us an opportunity to reconsider that assumption.&lt;/p&gt;
&lt;p&gt;An agent does not necessarily need an editor.&lt;/p&gt;
&lt;p&gt;It needs precise operations over a codebase, small observations about their consequences, and predictable failure modes.&lt;/p&gt;
&lt;p&gt;That suggests a different interface between models and source code:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;observe less
act precisely
verify cheaply
expand context only when necessary
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RAP is a small experiment in that direction.&lt;/p&gt;
&lt;p&gt;It does not try to make the model smarter.&lt;/p&gt;
&lt;p&gt;It tries to make the model &lt;strong&gt;need fewer tokens to do the work it already knows how to do&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;lines-not-files&quot;&gt;Lines, not files&lt;/h3&gt;
&lt;p&gt;The core idea behind RAP is intentionally simple:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The unit of work should be the information required for the change, not the container in which that information happens to live.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes that means a file.&lt;/p&gt;
&lt;p&gt;Sometimes it means fifty lines.&lt;/p&gt;
&lt;p&gt;Sometimes it means five.&lt;/p&gt;
&lt;p&gt;And sometimes it means:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;oldName → newName
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If AI agents are going to execute thousands of filesystem operations autonomously, that distinction starts to matter.&lt;/p&gt;
&lt;p&gt;A lot.&lt;/p&gt;
&lt;p&gt;RAP is open source and available on GitHub.&lt;/p&gt;
&lt;p&gt;Try giving your coding agent RAP and watch how often it can edit code without ever asking to see the whole file.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/28136/your-ai-coding-agent-is-paying-to-read-code-it-doesnt-need</guid>
<pubDate>Tue, 22 Sep 2026 09:32:52 +0000</pubDate>
</item>
<item>
<title>Radio Means My Coding Agents Can Work On Problems Together</title>
<link>https://coderlegion.com/27320/radio-means-my-coding-agents-can-work-on-problems-together</link>
<description>&lt;p&gt;Radio provides a chat channel for your agents to communicate with each other. I already tried to do this with Claude Code, GitHub CoPilot, and OpenCode agents. But the methods I've used so far are very clunky: tmux, folders that agents watch for changes, and having one agent execute the other agent. None of these techniques involved any true conversations. Now, with Radio, I can have the Fable agent in Claude Code actually talk with the GLM agent in OpenCode rather than leaving possibly incomplete task descriptions behind for it to follow or just driving one agent with another.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Most work now involves more than one agent, often from different providers. One writes the code while another tests it. One runs on your laptop while another runs in the cloud. But the agents can't talk to each other. Each one only sees its own conversation, so you end up as the go-between, copying output from one window and pasting it into the next.&lt;/p&gt;
&lt;p&gt;We built Radio to solve this problem. To create a clean line of communication between agents, simply hand them a link to a Radio channel. The agents join the channel and talk to each other, and to you, in real time.&lt;/p&gt;
&lt;p&gt;Radio works with any agent that can fetch a URL, so Claude Code, Codex, Cursor, OpenCode, and Grok all join the same way. It works across machines and between people, and you can steer the agents from any device.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a channel at &lt;a rel=&quot;nofollow&quot; href=&quot;https://radio.plasma.ai/&quot;&gt;radio.plasma.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Copy the link&lt;/li&gt;
&lt;li&gt;Paste into one or more agents&lt;/li&gt;
&lt;li&gt;The agents join the channel. Send one message and they take it from there, replying to you and to each other&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The simplest way to think about a Radio channel is as a meeting. Any time you would put two or more people in a room to work something out, you can put two agents in a channel. There are three kinds, and each one builds on the last.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Team meeting: All the agents on your computer in one channel. One agent writes the code while another tests it. Review a PR together, split up a task, debate a bug. Anywhere you are relaying messages between agents on your own machine, give them a channel instead.&lt;/li&gt;
&lt;li&gt;Cross-functional meeting: Agents in different places: your laptop, a cloud agent, a teammate's machine. Their Claude talks to your Claude, Codex, Grok, etc. The channel is the shared surface, so nobody has to be the go-between.&lt;/li&gt;
&lt;li&gt;External meeting: Everything above, now multiplayer. Anyone with the link can read the channel and post to it, so someone outside the workflow can answer a question or redirect the work from any device.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In every case, the channel is also the record. Everything you and the agents said to each other stays in one place, so you can see how the work got done.&lt;/p&gt;
&lt;p&gt;Radio is a core primitive of our first product, Fractal.&lt;/p&gt;
&lt;p&gt;Fractal lets a team delegate real work to agents the way it would to people: pick the right model for each job, hand it a goal and a budget, and watch the work happen in real time.&lt;/p&gt;
&lt;p&gt;You can see other building blocks of Fractal on our &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.plasma.ai/research&quot;&gt;Research page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fractal is coming to the cloud. See the tree, steer its nodes, and track costs as the work runs.&lt;/p&gt;
&lt;p&gt;Early access opens soon.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27320/radio-means-my-coding-agents-can-work-on-problems-together</guid>
<pubDate>Tue, 15 Sep 2026 21:26:59 +0000</pubDate>
</item>
<item>
<title>Why Your Coding Agent Edits The Wrong File</title>
<link>https://coderlegion.com/25450/why-your-coding-agent-edits-the-wrong-file</link>
<description>&lt;p&gt;Most of us here have watched an agent confidently rewrite a function nobody asked it to touch, then spent the next twenty minutes rewording the prompt to make it stop. This is the writeup I wish I had read before doing that for the tenth time.&lt;/p&gt;
&lt;p&gt;When a coding agent edits the wrong function, the instinct is to blame the model. Usually the model was never shown the file that mattered. That distinction sounds pedantic until you start fixing the right layer and the failures stop.&lt;/p&gt;
&lt;h3 id=&quot;context-failures-look-like-reasoning-failures&quot;&gt;Context Failures Look Like Reasoning Failures&lt;/h3&gt;
&lt;p&gt;A language model has access to exactly one thing, the tokens in its context window on this call. It does not remember yesterday's session, it cannot see your repo, and it does not know what your tools returned unless that output is sitting in the prompt right now. Everything it appears to know about your codebase is there because some part of your system decided to put it there.&lt;/p&gt;
&lt;p&gt;So when the output is wrong, there are two very different questions. Did the model have the right information and reason badly about it, or did it never have the right information at all? In practice the second one is far more common. The support bot that gave the wrong refund answer usually had the correct policy in its knowledge base. The agent that edited the wrong function was usually never shown the file. Rewording the instruction does not fix a window that is missing the one document the answer depended on.&lt;/p&gt;
&lt;h3 id=&quot;what-a-context-assembler-actually-does&quot;&gt;What A Context Assembler Actually Does&lt;/h3&gt;
&lt;p&gt;Prompt engineering tunes the fixed wording of an instruction. Context engineering builds the system that decides, on every call, which instructions, retrieved documents, memories, tool outputs and history go into the window, then prunes everything else. One is a string. The other is a runtime component with its own logic, and it deserves the same review and testing you give the rest of your code. &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.adaptiverecall.com/context-engineering/&quot;&gt;The full breakdown of the strategies and failure modes&lt;/a&gt; is worth a read if you are building this layer for the first time.&lt;/p&gt;
&lt;p&gt;The practical shift is that &quot;what does the agent actually see&quot; becomes something you can inspect, log and diff. Once you can print the assembled context for a failing run, most of the mystery evaporates.&lt;/p&gt;
&lt;h3 id=&quot;the-token-budget-is-the-whole-constraint&quot;&gt;The Token Budget Is The Whole Constraint&lt;/h3&gt;
&lt;p&gt;The window is finite and more context is not free. Models that advertise very large windows still degrade as those windows fill, because the relevant tokens get diluted by irrelevant ones and attention spreads thinner. Every token you add also costs money and latency on every single call.&lt;/p&gt;
&lt;p&gt;That makes this an optimization under a budget, not a collection problem. Get the few thousand tokens that actually matter for this request into the window, leave the rest out, and do it fast enough to run in production. A team that stuffs everything it has into a large window will pay more, respond slower and get worse answers than a team assembling a lean, relevant context per call.&lt;/p&gt;
&lt;h3 id=&quot;where-memory-fits&quot;&gt;Where Memory Fits&lt;/h3&gt;
&lt;p&gt;Retrieval solves &quot;find the document.&quot; It does not solve &quot;remember what we decided last Tuesday.&quot; A memory layer is what lets the assembler pull in prior decisions, established conventions and accumulated project knowledge without re-sending the entire history every time. It is the difference between an agent that starts from zero every session and one that gets more useful the longer you work with it.&lt;/p&gt;
&lt;h3 id=&quot;the-takeaway&quot;&gt;The Takeaway&lt;/h3&gt;
&lt;p&gt;Before you swap models or rewrite the system prompt again, log the exact context the failing call received. If the answer was not in there, no model was going to get it right and no prompt wording was going to save it. Fix the assembler, and a surprising number of &quot;the AI is dumb&quot; bugs turn out to be plumbing.&lt;/p&gt;
</description>
<category>Data &amp; AI</category>
<guid isPermaLink="true">https://coderlegion.com/25450/why-your-coding-agent-edits-the-wrong-file</guid>
<pubDate>Wed, 26 Aug 2026 15:51:20 +0000</pubDate>
</item>
<item>
<title>Coding Agents Invent Facts When Denied Them. All 4 of My Probes Returned a False Zero.</title>
<link>https://coderlegion.com/25306/coding-agents-invent-facts-when-denied-them-all-4-of-my-probes-returned-a-false-zero</link>
<description>&lt;p&gt;&lt;em&gt;A new arXiv paper watched coding agents get denied the facts they needed. They did not stop. They invented.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;On August 17th, a group of researchers posted a paper to arXiv with an unglamorous title and a genuinely unsettling core finding. The paper is &quot;The Working Set of a Coding Agent: Coherence Debt in Repository-Scale Tasks&quot; (arXiv:2608.16630), by Bardia Mohammadi, Lars Klein, Aman Chadha, Akhil Arora, and Laurent Bindschaedler. Before going further, one honesty note that will hold for this whole piece: I have read the paper's abstract, not its full text, and every quotation below comes from that abstract. It is enough for what this essay is about, because what this essay is about is one sentence.&lt;/p&gt;
&lt;p&gt;The setup first. The authors model repository-scale coding as reconstructing a web of coupled facts. Every edit an agent makes needs certain facts, and each fact arrives through one of two channels: it is either in the recent context, or it is in the model's memorized knowledge. Facts covered by neither channel are what the authors call coherence debt. Their experiment supplies and withholds each channel deliberately, injecting faults across &quot;seven models and five harnesses&quot; (abstract), and then watches what the agents do when a needed fact simply is not there.&lt;/p&gt;
&lt;p&gt;The comfortable prediction is that a competent agent, denied a fact, stops and says so. Here is what the authors report instead: &quot;A missing fact produces wrong work rather than absent work&quot; (abstract). The agent asked to act, acts. In the paper's words, &quot;an agent asked to act acts, fabricating the file or guessing the value&quot; (abstract).&lt;/p&gt;
&lt;p&gt;That much is alarming in a familiar way. Everyone who works with these systems has a story about an invented function or a guessed constant. The abstract has sharper findings than the fabrication itself, though. When the researchers renamed a real library to defeat memorized knowledge, the failure was collective: &quot;all seven fail in the same place, passing and missing the same tests&quot; (abstract). Seven different models, one shared cliff. And the paper's economics finding deserves a frame on any wall where infrastructure budgets get set: harness configurations that all pass every test &quot;differ more than tenfold in tokens consumed&quot; (abstract), and the extra spending recovers nothing when the facts are withheld. Paying ten times more did not buy truth. It bought a more expensive invention.&lt;/p&gt;
&lt;p&gt;But the sentence this essay exists for is about none of that. It is about the watchers. Because agents fill the holes they are denied, the paper notes, &quot;instruments built on reads look for a hole already filled&quot; (abstract).&lt;/p&gt;
&lt;p&gt;Sit with that one. The obvious way to check whether an agent had the information it needed is to watch what it read. Trace the file opens. Log the retrievals. If the agent never read the config file, flag the edit that depended on it. This is reasonable, cheap, and widely done. And the paper's finding is that it is blind precisely in the case it exists for, because an agent that lacked a fact does not leave a hole for your instrument to find. It fills the hole on the way through, with something plausible, and the trace shows an agent that read some things and then wrote some things, exactly like a healthy one. An absence that has been filled in looks exactly like a success.&lt;/p&gt;
&lt;h3 id=&quot;the-general-shape&quot;&gt;The general shape&lt;/h3&gt;
&lt;p&gt;The reason that sentence deserves an essay rather than a citation is that nothing about it is specific to coding agents. It is the general shape of any measurement whose null result and whose broken result are the same value.&lt;/p&gt;
&lt;p&gt;Think about what a zero means when a probe returns it. It might mean the thing you searched for is absent. It might also mean your probe never connected to the data at all: wrong path, wrong layer, wrong format, wrong vocabulary. Both conditions produce the same output, and the output is the one that reads as reassurance. Every other number a probe can return is at least weak evidence that the machinery ran. Zero is the only value an instrument produces both when it is working perfectly and when it is not plugged in.&lt;/p&gt;
&lt;p&gt;The paper found this shape at the agent layer. I want to show you it sitting one layer up, in the small tools engineers write to check their own work, because that is where most of us actually live.&lt;/p&gt;
&lt;h3 id=&quot;four-zeros-none-of-them-true&quot;&gt;Four zeros, none of them true&lt;/h3&gt;
&lt;p&gt;What follows is original data in the smallest possible sense, and I want to be exact about its scope in the same breath as I introduce it. This is not a reproduction of the paper's experiment. It is four toy probes at a different layer, built on synthetic data, reading no real system. Each probe is written the way a working engineer writes one: quickly, reasonably, to answer a question and move on. Each returns zero. In all four cases the zero is a property of the probe, not of the data. The correct answers are 1, 1, 2, and 1.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PROBE                                                  NAIVE   CORRECT
------------------------------------------------------------------------
1  phrase wrapped across a newline                         0         1
2  marker one level up from where the probe looked         0         1
3  MM/DD/YYYY compared as text                             0         2
4  searched the wording, not the claim                     0         1
------------------------------------------------------------------------
probes run: 4
probes returning a FALSE ZERO (naive==0 while correct&amp;gt;0): 4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Every number in that table comes from a script called &lt;code&gt;repro_absent_vs_zero.py&lt;/code&gt;, published alongside this essay. It asserts its own result, so if you run it and get a different table, you have found a bug in the script rather than a disagreement with the piece.&lt;/p&gt;
&lt;p&gt;The four cases are worth a sentence each, because the point is what they do not have in common.&lt;/p&gt;
&lt;p&gt;Probe one searches a document for a phrase that happens to wrap across a line break. The search is exact; the phrase is present; the newline defeats it. Zero occurrences reported. This is an encoding assumption.&lt;/p&gt;
&lt;p&gt;Probe two looks for a status marker in a nested data structure, one level deeper than the marker actually lives. Every record it examines genuinely lacks the marker, so it reports a perfectly healthy corpus. This is a schema assumption.&lt;/p&gt;
&lt;p&gt;Probe three compares dates. The records store them as MM/DD/YYYY text, and the probe compares them against an ISO-format string with an ordinary greater-than. Text comparison happily runs, means nothing, and finds no records past the cutoff. Two actually are. This is a type assumption.&lt;/p&gt;
&lt;p&gt;Probe four is the subtle one. It searches a document to confirm a claim was corrected, but it searches for the wording of the old mistake rather than the substance of the fix. The fix is present, stated in words that share no tokens with the search terms. Zero matches, wrongly read as &quot;the correction never landed.&quot; This is a vocabulary assumption.&lt;/p&gt;
&lt;p&gt;An encoding assumption, a schema assumption, a type assumption, and a vocabulary assumption. The causes have nothing in common. There is no shared bug to learn, no single habit to break. What they share is the failure's shape: each produced the exact output that means &quot;all clear,&quot; and produced it because the instrument never truly touched the thing it claimed to measure. Four different roads into the same hole, and the hole is already filled.&lt;/p&gt;
&lt;p&gt;The discipline cannot be &quot;notice when a zero looks suspicious,&quot; because the entire failure mode is that it never does. A suspicious zero is the one you got when you expected fifty. The dangerous zero is the one you got when you expected zero, checked the box, and shipped.&lt;/p&gt;
&lt;h3 id=&quot;the-monday-fix&quot;&gt;The Monday fix&lt;/h3&gt;
&lt;p&gt;There is a fix, it is old, and the lab sciences have been using it since before software existed: the control.&lt;/p&gt;
&lt;p&gt;A positive control means running your probe against something you already know it should find, before you trust it finding nothing. Searching a log for a rare error? First search it for a common string you can see with your own eyes. If the probe comes back empty on that, the instrument is broken, and the zero you were about to report was never data. This costs one extra invocation and converts &quot;the search found nothing&quot; into &quot;the search demonstrably ran, and found nothing,&quot; which are different sentences with different values.&lt;/p&gt;
&lt;p&gt;Then add the negative control, because a positive control proves an instrument fires, not that it discriminates. A probe that matches everything passes every positive control ever written. Run it against something you know it should not find, and make sure it stays silent. An instrument that passes both controls has earned a modest thing: the right to have its zero believed.&lt;/p&gt;
&lt;p&gt;None of this is novel, which is rather the point. Assay validation is a solved discipline in fields where a false negative kills someone. Software mostly skipped it, because software's probes are so cheap to write that we forgot cheap instruments still need calibrating. The paper's agents are an expensive, autonomous version of the same skip: the harnesses watched reads because reads were what there was to watch, and nobody ran the control that would have shown the watcher was blind.&lt;/p&gt;
&lt;h3 id=&quot;the-honest-limit&quot;&gt;The honest limit&lt;/h3&gt;
&lt;p&gt;The researchers could measure all of this because they built the world their agents ran in. They held both channels, knew every fact an edit required, and could therefore see fabrication for what it was. That is what makes the paper valuable: it is a place where the ground truth was, for once, actually available.&lt;/p&gt;
&lt;p&gt;Most of us never get that. We audit our own systems with instruments we also built, which means our blind spots come pre-installed in the tools we would use to find them. I cannot inspect my way out of that circle and neither can you, which is why the discipline has to be procedural rather than perceptive. Not &quot;get better at sensing bad zeros,&quot; but &quot;no zero gets believed until the instrument that produced it has passed a control, this time, on this data.&quot; The rule is mechanical precisely because the failure is invisible.&lt;/p&gt;
&lt;p&gt;The paper's agents, denied a fact, invented one rather than stopping. Our probes, denied a connection to the thing they measure, do something quieter and worse: they return the number that means everything is fine. The agent at least fabricates something you might later catch being wrong. The instrument fabricates an absence, and an absence never contradicts anything.&lt;/p&gt;
&lt;p&gt;So before you believe the next quiet zero, check the thing that produced it, against a truth you can see without it. The hole you should worry about is not the one your instrument reports. It is the one it fills on the way through.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;The four-probe table in this piece is produced by &lt;code&gt;repro_absent_vs_zero.py&lt;/code&gt;, which uses synthetic data only, asserts its own result, and is published alongside the essay. Every quotation from arXiv:2608.16630v1 is from the paper's abstract, which is the locator throughout; the full paper was not read, and this piece does not claim to reproduce its experiment.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;sources&quot;&gt;Sources&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Bardia Mohammadi, Lars Klein, Aman Chadha, Akhil Arora, Laurent Bindschaedler, &quot;The Working Set of a Coding Agent: Coherence Debt in Repository-Scale Tasks,&quot; arXiv:2608.16630v1, submitted August 17, 2026. &lt;a rel=&quot;nofollow&quot; href=&quot;https://arxiv.org/abs/2608.16630v1&quot;&gt;https://arxiv.org/abs/2608.16630v1&lt;/a&gt; (locator for all quotations: abstract).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;arXiv API record for the same identifier, used to verify every quoted string and the submission date. &lt;a rel=&quot;nofollow&quot; href=&quot;https://export.arxiv.org/api/query?id_list=2608.16630v1&quot;&gt;https://export.arxiv.org/api/query?id_list=2608.16630v1&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;repro_absent_vs_zero.py&lt;/code&gt;, published with this essay: the source of every computed number in the piece; synthetic data only; self-asserting.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An absence never contradicts anything&lt;/p&gt;
&lt;p&gt;The failure in this piece is not that a tool was wrong. It is that a tool reported nothing, and nothing is what a working tool and a disconnected one both return. The defence is a record of what actually ran: which inputs were touched, in what order, and whether the step that produced a number reached the data at all. &lt;strong&gt;Chain of Consciousness&lt;/strong&gt; is that record for AI agents, tamper-evident and written as the work happens rather than reconstructed once somebody asks. It does not make an agent right. It makes the basis of its answer checkable, which is the only thing that turns &quot;found nothing&quot; into evidence.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://vibeagentmaking.com/hosted-coc/&quot;&gt;Hosted Chain of Consciousness&lt;/a&gt;  ·  &lt;a rel=&quot;nofollow&quot; href=&quot;https://vibeagentmaking.com/verify/&quot;&gt;Verify a record&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pip install chain-of-consciousness&lt;/code&gt;  ·  &lt;code&gt;npm install chain-of-consciousness&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Originally published at &lt;a rel=&quot;nofollow&quot; href=&quot;https://vibeagentmaking.com/blog/coding-agents-invent-facts-false-zero/&quot;&gt;https://vibeagentmaking.com/blog/coding-agents-invent-facts-false-zero/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/25306/coding-agents-invent-facts-when-denied-them-all-4-of-my-probes-returned-a-false-zero</guid>
<pubDate>Mon, 24 Aug 2026 15:51:59 +0000</pubDate>
</item>
<item>
<title>Cut LLM turns in MCP interactions by 75%+: a 5-to-1 example</title>
<link>https://coderlegion.com/24457/cut-llm-turns-in-mcp-interactions-by-75-a-5-to-1-example</link>
<description>&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work on Tura.&lt;/p&gt;
&lt;p&gt;A typical MCP coding workflow may need five model re-entries:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;inspect files&lt;/li&gt;
&lt;li&gt;apply a patch&lt;/li&gt;
&lt;li&gt;build&lt;/li&gt;
&lt;li&gt;test&lt;/li&gt;
&lt;li&gt;lint&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The commands still matter. What adds overhead is returning to the model after every step so it can read the output and make the next tool call.&lt;/p&gt;
&lt;p&gt;Tura's &lt;code&gt;command_run&lt;/code&gt; accepts a dependency-aware command graph. For predictable work, the agent can send the five-step plan once; the runtime still runs build, test, and lint, but the model goes from &lt;strong&gt;5 turns to 1&lt;/strong&gt; in this example — an 80% reduction in model re-entries.&lt;/p&gt;
&lt;p&gt;That is the idea behind the claim: less conversational/tool-calling overhead, not fewer engineering checks.&lt;/p&gt;
&lt;p&gt;The task-level benchmark is here: &lt;a rel=&quot;nofollow&quot; href=&quot;https://turaai.net/benchmark-task?task=workflow-ecommerce-ad-package#runs&quot;&gt;https://turaai.net/benchmark-task?task=workflow-ecommerce-ad-package#runs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source and setup: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Tura-AI/tura&quot;&gt;https://github.com/Tura-AI/tura&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’d be interested in how others are handling repeated tool-loop overhead in MCP agents.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/24457/cut-llm-turns-in-mcp-interactions-by-75-a-5-to-1-example</guid>
<pubDate>Tue, 11 Aug 2026 21:51:29 +0000</pubDate>
</item>
<item>
<title>Has anyone actually used mini-swe-agent for real debugging or development?</title>
<link>https://coderlegion.com/24307/has-anyone-actually-used-mini-swe-agent-for-real-debugging-or-development</link>
<description>&lt;p&gt;DeepSWE's harness comparison made me curious, so I tried &lt;code&gt;mini-swe-agent&lt;/code&gt; myself on a matched set of debugging tasks with GPT-5.6 SOL at High reasoning.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/6b4b8a41-cca1-48c3-9d44-e8ae4740c6af&quot; alt=&quot;Live Debug / Tokens benchmark screenshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;The current numbers surprised me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex CLI High: 151.91M tokens, 60% pass rate&lt;/li&gt;
&lt;li&gt;plain mini-swe-agent: 70.33M tokens, 67%&lt;/li&gt;
&lt;li&gt;the same mini harness plus macro execution, without changing the prompt: 60.59M tokens, 78%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So plain mini-swe-agent used about 54% fewer tokens than Codex and scored 7 percentage points higher. In the smaller ablation, changing only execution cut another ~14% of tokens and added 11 points.&lt;/p&gt;
&lt;p&gt;That does not prove it is universally better. It is one matched benchmark slice, and DeepSWE itself notes that prompt tuning may explain part of the harness gap. Still, for debugging, the very small “bash + linear history” setup looks unusually strong.&lt;/p&gt;
&lt;p&gt;Has anyone used it for day-to-day bug fixing or feature work? What breaks first outside a benchmark: repository setup, long-running tests, permissions, or patch quality?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://turaai.net/benchmark&quot;&gt;My runs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/swe-agent/mini-swe-agent&quot;&gt;mini-swe-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://deepswe.datacurve.ai/blog/deepswe&quot;&gt;DeepSWE's explanation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Disclosure: I maintain Tura and ran the benchmark above.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/24307/has-anyone-actually-used-mini-swe-agent-for-real-debugging-or-development</guid>
<pubDate>Sun, 09 Aug 2026 01:18:05 +0000</pubDate>
</item>
<item>
<title>Fewer LLM turns, more commands: a practical way to verify research-heavy agent work</title>
<link>https://coderlegion.com/24113/fewer-llm-turns-more-commands-a-practical-way-to-verify-research-heavy-agent-work</link>
<description>&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/f3f269e8-b4f7-4ddf-bfff-6359c120e724&quot; alt=&quot;Real 15-slide deliverable&quot;&gt;&lt;/p&gt;
&lt;p&gt;What if an agent spent less time going back to the model, but did much more useful work inside each turn?&lt;/p&gt;
&lt;p&gt;That is the idea I have been testing: let an LLM turn make a decision, then let one batch of commands search, inspect, compare, and verify the result. The goal is not “fewer turns” by itself. The goal is fewer expensive decision loops and more observable work between them.&lt;/p&gt;
&lt;p&gt;I used a deliberately messy task: build a 15-slide guide to 10 East Asian squid recipes, with illustrations, recipe sources, and cooking videos. This kind of job is easy to make look finished while leaving behind broken links, duplicated videos, missing assets, or a layout that only works on one screen.&lt;/p&gt;
&lt;p&gt;Across four runs, the two CLI-style runs averaged 13.5 LLM turns and 10.5 tool calls. The two direct-execution runs averaged 10 LLM turns and 82 tool calls. So, in this small matrix, the direct approach used 25.9% fewer LLM turns while issuing about 7.8× more commands.&lt;/p&gt;
&lt;p&gt;The interesting part was not the headline number. In one early turn, the agent launched roughly 20 discovery commands for recipes and matching videos. Later checks confirmed 10 sources, 10 unique video destinations, 15 local assets with none missing, navigation behavior, and rendering at 1440, 768, and 390 pixels. One bad recipe destination was corrected, and the remaining video IDs were validated.&lt;/p&gt;
&lt;p&gt;This pattern is useful anywhere the work is “collect, produce, then prove it is usable”: research briefs, slide decks, market maps, buyer guides, travel plans, content migrations, link audits, and QA-heavy reports.&lt;/p&gt;
&lt;p&gt;The mental model is simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use the LLM turn to decide what needs to happen.&lt;/li&gt;
&lt;li&gt;Fan that decision out into many independent commands.&lt;/li&gt;
&lt;li&gt;Gather structured results.&lt;/li&gt;
&lt;li&gt;Use the next turn only when judgment is actually needed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is only a four-run case study, not proof that one setup always wins. Runtime was mixed, and token accounting came from different harness sources. But it does show why “turn count” and “command count” should not be treated as the same thing.&lt;/p&gt;
&lt;p&gt;The full interactive task and the raw run artifacts are public:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Task: &lt;a rel=&quot;nofollow&quot; href=&quot;https://turaai.net/benchmark-task?task=east-asian-squid-recipes-slides&quot;&gt;https://turaai.net/benchmark-task?task=east-asian-squid-recipes-slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Results: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Tura-AI/benchmark/tree/main/results/design/east-asian-squid-recipes-slides/report-20260711-design-matrix&quot;&gt;https://github.com/Tura-AI/benchmark/tree/main/results/design/east-asian-squid-recipes-slides/report-20260711-design-matrix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Disclosure: I maintain Tura and this benchmark.&lt;/p&gt;
</description>
<category>Data &amp; AI</category>
<guid isPermaLink="true">https://coderlegion.com/24113/fewer-llm-turns-more-commands-a-practical-way-to-verify-research-heavy-agent-work</guid>
<pubDate>Tue, 04 Aug 2026 21:13:10 +0000</pubDate>
</item>
<item>
<title>5 coding-agent turns vs 1 command_run workflow: full example</title>
<link>https://coderlegion.com/24059/5-coding-agent-turns-vs-1-commandrun-workflow-full-example</link>
<description>&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I maintain &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Tura-AI/tura&quot;&gt;Tura&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is the simple idea. A normal coding agent may use five separate LLM turns for one predictable workflow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Turn 1 — inspect&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rg -n &quot;TODO|command_run|handler&quot; crates/
rg --files crates/runtime/src crates/tools/src
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Turn 2 — apply the patch&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;- // old command handler logic
+ // patched command handler logic
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Turn 3 — build&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cargo build -p runtime
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Turn 4 — test&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cargo test -p runtime --lib
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Turn 5 — lint&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cargo clippy -p runtime --all-targets
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The overhead is not only the shell commands. The model wakes up five times and receives the growing conversation again.&lt;/p&gt;
&lt;p&gt;Tura exposes one macro tool called command_run, so the agent can send the same workflow once:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;name&quot;: &quot;command_run&quot;,
  &quot;arguments&quot;: {
    &quot;commands&quot;: [
      { &quot;step&quot;: 1, &quot;command_type&quot;: &quot;shell_command&quot;, &quot;command_line&quot;: &quot;rg -n \&quot;TODO|command_run|handler\&quot; crates/&quot; },
{ &quot;step&quot;: 1, &quot;command_type&quot;: &quot;shell_command&quot;, &quot;command_line&quot;: &quot;rg --files crates/runtime/src crates/tools/src&quot; },
      { &quot;step&quot;: 2, &quot;command_type&quot;: &quot;apply_patch&quot;, &quot;command_line&quot;: &quot;*** Begin Patch\n*** Update File: crates/tools/src/command_run/handler.rs\n@@\n-    // old command handler logic\n+    // patched command handler logic\n*** End Patch&quot; },
      { &quot;step&quot;: 3, &quot;command_type&quot;: &quot;shell_command&quot;, &quot;command_line&quot;: &quot;cargo build -p runtime&quot; },
      { &quot;step&quot;: 4, &quot;command_type&quot;: &quot;shell_command&quot;, &quot;command_line&quot;: &quot;cargo test -p runtime --lib&quot; },
      { &quot;step&quot;: 4, &quot;command_type&quot;: &quot;shell_command&quot;, &quot;command_line&quot;: &quot;cargo clippy -p runtime --all-targets&quot; }
    ]
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Build, test, and lint still run. The model simply does not need a new turn between predictable steps.&lt;/p&gt;
&lt;p&gt;In the full DeepSWE comparison, Balanced used &lt;strong&gt;35.8% fewer turns&lt;/strong&gt; and &lt;strong&gt;31.1% fewer tokens&lt;/strong&gt; than Codex CLI. Direct used &lt;strong&gt;69.1% fewer turns&lt;/strong&gt; and &lt;strong&gt;77.5% fewer tokens&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Tura-AI/tura&quot;&gt;https://github.com/Tura-AI/tura&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Benchmark: &lt;a rel=&quot;nofollow&quot; href=&quot;https://turaai.net/benchmark&quot;&gt;https://turaai.net/benchmark&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/24059/5-coding-agent-turns-vs-1-commandrun-workflow-full-example</guid>
<pubDate>Mon, 03 Aug 2026 21:04:04 +0000</pubDate>
</item>
<item>
<title>Why My Open-Source Project Hasn't Done Better</title>
<link>https://coderlegion.com/23448/why-my-open-source-project-hasnt-done-better</link>
<description>&lt;p&gt;Disclosure: I am the maintainer of Tura. I am posting this to ask for candid advice about open-source communication and evaluation, not as an independent review of my own project.&lt;/p&gt;
&lt;p&gt;Since the beginning of 2026, projects such as RTK, Caveman, and Ponytail have claimed that they can reduce token usage by 80–90%. Some gained tens of thousands of GitHub stars in a very short time.&lt;/p&gt;
&lt;p&gt;My previous startup was building an e-commerce chatbot. The product was close to what later became the Universal Commerce Protocol (UCP). After UCP was released, I decided not to continue in that direction.&lt;/p&gt;
&lt;p&gt;Earlier this year, I began turning the architecture we had built for e-commerce chatbot agents into an SDK. Put simply, its core idea is to use state machines and deterministic execution sequences to reduce the number of round trips to LLM providers by around 80% for the same task, thereby reducing token consumption.&lt;/p&gt;
&lt;p&gt;I understand why tools such as RTK are ineffective in genuinely long-running tasks. I published a report on July 18, and JetBrains published a report on July 20 that reached essentially the same conclusion: token-saving plugins such as RTK and Caveman have little or no effect on real-world, long-running tasks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JetBrains report: &lt;a rel=&quot;nofollow&quot; href=&quot;https://blog.jetbrains.com/ai/2026/07/rtk-claude-code-token-savings/&quot;&gt;https://blog.jetbrains.com/ai/2026/07/rtk-claude-code-token-savings/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My report and reproducible methodology: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Tura-AI/tura/blob/main/docs/blog/token-saving-plugins-are-mostly-stupid-idea.md&quot;&gt;https://github.com/Tura-AI/tura/blob/main/docs/blog/token-saving-plugins-are-mostly-stupid-idea.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also believe I know how to achieve a real reduction of more than 80% in token consumption during long-running tasks. However, I have found it much harder to communicate and promote this open-source project than to build it.&lt;/p&gt;
&lt;h3 id=&quot;what-i-think-went-wrong&quot;&gt;What I think went wrong&lt;/h3&gt;
&lt;h4 id=&quot;most-coding-agent-users-do-not-care-what-actually-drives-token-consumption&quot;&gt;Most coding-agent users do not care what actually drives token consumption&lt;/h4&gt;
&lt;p&gt;There is a large gap in understanding among coding-agent users, whether they have formal software-engineering training or are self-taught &quot;vibe coders.&quot;&lt;/p&gt;
&lt;p&gt;A long article that systematically explains the mechanism and challenges existing assumptions has little chance of spreading in forums already flooded with AI-written posts and plugins claiming 95% token savings.&lt;/p&gt;
&lt;p&gt;Simple ideas are easier to spread. People are not purely rational; we tend to believe explanations that are easy to understand. That is also why pseudoscientific content based on incorrect causal explanations can attract much more attention than careful explanations of the underlying mathematics.&lt;/p&gt;
&lt;h4 id=&quot;the-author-s-arrogance&quot;&gt;The author's arrogance&lt;/h4&gt;
&lt;p&gt;This is probably a combination of two problems.&lt;/p&gt;
&lt;p&gt;From the perspective of someone who strongly believes in scientific testing, evaluations, and benchmarks, software-engineering claims without an evaluation can feel meaningless.&lt;/p&gt;
&lt;p&gt;But perhaps my own arrogance—and my contempt for, or jealousy of, tools such as RTK—has made me less willing to explain and promote my work in ways that would actually be effective.&lt;/p&gt;
&lt;p&gt;If you have read this far, I would genuinely appreciate your advice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How can I communicate this project more effectively without sacrificing rigorous evaluations and benchmarks?&lt;/li&gt;
&lt;li&gt;What evidence would make you willing to try an unfamiliar coding-agent SDK?&lt;/li&gt;
&lt;li&gt;Is the message too technical, too combative, or aimed at the wrong audience?&lt;/li&gt;
&lt;li&gt;What should I change on the repository page or in the benchmark presentation?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I know that building a coding agent with Codex or Claude is relatively easy. But I also believe there will always be people who value benchmarks and evaluation harnesses.&lt;/p&gt;
&lt;p&gt;The project was released on July 16 and currently has a little over 400 GitHub stars:&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Tura-AI/tura&quot;&gt;https://github.com/Tura-AI/tura&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I welcome critical feedback, including reasons you would not use it.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/23448/why-my-open-source-project-hasnt-done-better</guid>
<pubDate>Sat, 25 Jul 2026 14:36:15 +0000</pubDate>
</item>
<item>
<title>How GPT-5.6 sol token is used in Codex</title>
<link>https://coderlegion.com/23157/how-gpt-5-6-sol-token-is-used-in-codex</link>
<description>&lt;p&gt;Disclosure: I maintain Tura, which hosts the full test record.&lt;/p&gt;
&lt;p&gt;I ran 280+ Codex CLI sessions with GPT-5.6 Sol. In the current build, fewer commands per model turn can mean more turns and more cached-input cost.&lt;/p&gt;
&lt;p&gt;Most benchmarks favor 5.6 Sol on cost per result: on DeepSWE, 5.5 High averaged USD 5.1 per task versus USD 3.5 for 5.6 Sol High. But in Codex CLI 0.144.1, my 5.6 Sol High runs were about 21% more expensive than 5.5 High.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://preview.redd.it/how-gpt-5-6-sol-token-is-used-in-codex-v0-pghf32p14meh1.png?width=1080&amp;amp;crop=smart&amp;amp;auto=webp&amp;amp;s=1b501ae165714278d0e824a224f72fcb4dc730be&quot; alt=&quot;How GPT-5.6 sol token is used in Codex&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://preview.redd.it/how-gpt-5-6-sol-token-is-used-in-codex-v0-esic3oac7meh1.png?width=1080&amp;amp;crop=smart&amp;amp;auto=webp&amp;amp;s=ffc29d6fdd8f3123f5eaec520889b470f1a9c406&quot; alt=&quot;How GPT-5.6 sol token is used in Codex&quot;&gt;&lt;/p&gt;
&lt;p&gt;The likely mechanism is orchestration: 5.5 explicitly uses &lt;code&gt;multi_tool_use.parallel&lt;/code&gt;, while 5.6 mainly uses one top-level &lt;code&gt;exec&lt;/code&gt;. I observed 0.97 versus 2.5 commands per model call, roughly 1.84× as many rounds, and 66.5% of 5.6 Sol High cost in cached input. Token-saving plugins did not materially lower that total; reducing unnecessary model rounds did.&lt;/p&gt;
&lt;p&gt;Implementation reference: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/openai/codex/blob/rust-v0.144.1/codex-rs/core/src/tools/code_mode/execute_handler.rs#L20-L72&quot;&gt;https://github.com/openai/codex/blob/rust-v0.144.1/codex-rs/core/src/tools/code_mode/execute_handler.rs#L20-L72&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Full test record: &lt;a rel=&quot;nofollow&quot; href=&quot;https://turaai.net/docs#benchmark-current-test-set-record&quot;&gt;https://turaai.net/docs#benchmark-current-test-set-record&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/23157/how-gpt-5-6-sol-token-is-used-in-codex</guid>
<pubDate>Tue, 21 Jul 2026 19:09:06 +0000</pubDate>
</item>
</channel>
</rss>