<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>The Agentic Bible</title>
<link>https://agentic.bible/</link>
<description>Articles on agentic coding that take a position and show the grounds under it.</description>
<language>en</language>
<atom:link href="https://agentic.bible/feed.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>Wed, 16 Sep 2026 00:00:00 GMT</lastBuildDate>
<item><title>An agent takes a given for an inevitability</title><link>https://agentic.bible/precedent-fallacy</link><guid isPermaLink="true">https://agentic.bible/precedent-fallacy</guid><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><description>An agent that finds an approach, a document or a rule in your codebase concludes that this is how things must be. The two obvious remedies — more context, and an instruction to be critical — both fail, and they fail with consequences that will keep humans useful for some time yet.</description><content:encoded><![CDATA[<p>Show an agent an approach in your code, a document describing that approach, or a rule saying to follow it, and it will follow it — and, more than that, conclude that this is how things are supposed to be. It almost never steps back to ask whether the whole arrangement might be wrong and the bigger picture might want revisiting. Call it the precedent fallacy: a given, read as a rule.</p>
<p>The material it is deferring to was, very often, written by earlier agents, which means it is argued well: coherent, reasoned, confident. It reads exactly like a decision somebody made on purpose. Sometimes it was. Sometimes it is a thing that happened once and then hardened, and the agent cannot tell the difference, because from inside the repository there is no difference to see.</p>
<p>The obvious answer is: give it more context, and tell it to look at everything critically. Both halves of that fail, and how they fail is the interesting part.</p>
<h2 id="more-context-does-not-buy-proportionally-more-attention">More context does not buy proportionally more attention</h2>
<p>Context is not elastic. The more you put in, the less each individual part of it weighs.</p>
<p>The analogy I keep coming back to is the megapixel race of the 2000s. Cameras arrived with three megapixels, then five, then ten, then fifteen, and at some point buyers started reading the number as a measure of quality. Manufacturers duly chased the number, and chasing it was easy: make each sensor site smaller, accept that each one is slightly worse, and forty megapixels appear where ten used to be. The photographs got noisier, because they were gathering the same light through more and worse cells.</p>
<p><img src="https://agentic.bible/assets/enough-tokens.jpg" alt="A robot preaching from a rock to a seated crowd: “And lo, there were enough tokens for everyone.”" loading="lazy" decoding="async" width="1024" height="1024" class="content-image-aside"></p>
<p>The same happens with LLM context: attention is the fixed area, and every token you add is one more claim on it. When I started, a context window was a thousand tokens. Then sixteen thousand, which felt like an impossible ceiling. Then two hundred thousand. Now a million, and someone will make it a trillion. Do not expect that an agent handed a trillion tokens will remember all of it and apply it as reliably as it applies ten thousand.</p>
<p>You can watch this directly, incidentally. Past roughly two hundred to two hundred and fifty thousand tokens in a single conversation, an agent starts to get tired, in ways that have a handful of recognizable symptoms — a subject for its own article.</p>
<h2 id="and-the-instruction-is-itself-a-given">And the instruction is itself a given</h2>
<p>Suppose the first problem did not exist and context were free. The second one would still be there, and it is worse, because it is structural.</p>
<p>Any instruction you add in order to overturn the previous instructions is itself just another given. Tell an agent to look critically at every decision before acting on it, and it will look critically at every decision before acting on it. It will do precisely what you said. And an agent that goes looking for errors everywhere will find them everywhere, including in the places that are fine — which is arguably worse than one that misses the errors that are really there. What you have bought is not a habit of scepticism — it is a ritual of disagreement.</p>

<p>Which is the general shape of the problem. You cannot instruct your way out of an instruction-following failure. The instruction lands in the same place everything else lands.</p>
<h2 id="where-the-insight-actually-comes-from">Where the insight actually comes from</h2>
<p>In people it works differently, and the difference is not that we are more diligent.</p>
<p>Remember House? Every episode, the epiphany arrives from something entirely unrelated. Somebody makes an offhand remark, he sees an event with no bearing on the case, and he understands what is wrong with the patient. There is an episode with a girl who cannot feel pain — congenital — and the team cannot work out why she is deteriorating. Meanwhile House takes half of Wilson’s sandwich, and Wilson grumbles that he just likes getting there ahead of the other hunters. That is the word House runs out of the room on: there is a tapeworm inside the girl getting ahead of <em>her</em>, intercepting her B12, and the anaesthetic she is about to be given will finish off what is left. Wilson’s sandwich is not in the patient history. It has nothing to do with her.</p>
<p>Television overuses that trope to the point of parody. But the mechanism under it is real, and decisions about code genuinely do arrive from places with no connection to code.</p>
<p>An agent has experience of that kind too — its training data contains everything, most of it nothing to do with programming. But you are not going to say, at each step: now go and take a sandwich off somebody and work out what it tells you about this bug. A planned epiphany is treasure you buried yourself the day before.</p>

<p><img src="https://agentic.bible/assets/sandwich-and-bugs.jpg" alt="A Terminator holding up a bystander at gunpoint: “I need your sandwich and your bugs.”" loading="lazy" decoding="async" width="1024" height="1024"></p>
<h2 id="what-that-leaves">What that leaves</h2>
<p>So, despite all our imperfections — or, I would argue, because of them, because of our apparent randomness — there is something we can still do that artificial intelligence cannot.</p>
<p>I do not say that categorically, and I do not say never. I think our brains are the same kind of computer, the same kind of neural network. But the enormous strides happening in AI right now are strides in a different direction, and there is nothing wrong with that, because it is a useful direction: it is making agents complement us well, and us them.</p>
<p>So, once more: do not write off your meat brain. You will need it, and so will your agent.</p><p class="content-end-mark-line"></p>]]></content:encoded></item>
<item><title>TEND: four lenses for the prose your agents write</title><link>https://agentic.bible/tend-prose</link><guid isPermaLink="true">https://agentic.bible/tend-prose</guid><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><description>Agents write a great deal of prose, and write more of it when they see that there is already a lot. Four lenses — tightness, existence, negation, durability — catch nearly all of what goes wrong.</description><content:encoded><![CDATA[<p>Call everything in your repository that is text but not code <strong>prose</strong>: the documentation files, the docstrings above your function definitions, the comments scattered through the bodies. Somebody has to tend it, and after a few months of agentic work that somebody is you, because your agents have been writing it at a rate no human ever managed.</p>
<p>Run four lenses over every piece of prose an agent produces, every time it produces any. <strong>T</strong>ightness, <strong>E</strong>xistence, <strong>N</strong>egation, <strong>D</strong>urability. They spell TEND, which is a marketing habit I have never fully shaken, and in this case it earns its keep, because four things you can name are four things you will actually check. Mine run as <a href="https://github.com/vzakharov/muthur/blob/main/.claude/skills/tend-prose/SKILL.md">a skill</a>, so that “every time” is one word rather than a resolution.</p>
<h2 id="why-there-is-so-much-of-it">Why there is so much of it</h2>
<p>Agents write a lot. That on its own would be manageable. What makes it compound is that an agent which opens a repository and finds a great deal of prose already there concludes that this is a place where one writes a great deal of prose, and obliges — something we call <a href="https://agentic.bible/precedent-fallacy">the precedent fallacy</a>.</p>

<p>The comments are there, so comments must be what one writes here. Nobody decided that. It simply accumulated, and every new agent reads the accumulation as policy.</p>
<h2 id="t--tightness">T — tightness</h2>
<p>The easy one. Agents write long, and what they have written can usually be cut by thirty per cent, quite often by half, with nothing lost but the reading time.</p>
<p>There is no craft to this lens. It is worth its place because the cut is real and nobody performs it spontaneously.</p>
<h2 id="e--existence">E — existence</h2>
<p>The second lens asks whether the text needed writing at all.</p>
<p>Take an ordinary branch in a function: if this, do that; otherwise, the other. The code describing it is self-sufficient. We are not writing in Brainfuck; we are writing in TypeScript or Python or Go, and any reader — agent or human — can see what a ten-line branch does without being told first. But agents love to precede each of their decisions with a short account of what they are about to do.</p>
<p>My best guess about why is that the comment is not addressed to the codebase. It is addressed to you: to the person who just handed over the task and is going to read the result. Instead of answering in one message in the chat, the agent answers in the margins of the file, because an agent has exactly as many channels as you have given it, and if the only one open while it works is the file in front of it, then the file in front of it is where the reply goes. This is not chattiness. It is a misrouted message.</p>
<h2 id="n--negation-or-the-polar-bear">N — negation, or the polar bear</h2>
<p>My favourite, and the one I have named after a bear.</p>
<p>Dostoevsky, roughly: set yourself the task of not thinking of a polar bear, and the cursed thing will be in your head every minute.</p>
<p><img src="https://agentic.bible/assets/polar-bear.jpg" alt="A polar bear pointing at its own head: “Do not think about me.”" loading="lazy" decoding="async" width="1024" height="1024" class="content-image-aside"></p>
<p>Here is how it happens. You make a decision about your code, and the decision is unusual, so you write it down. Say you serve images through a resizer of your own instead of your CDN’s, and next to that code sits an honest comment: we do it this way because the CDN’s resizer ruins transparency. Good comment. Correct comment.</p>
<p>Then the CDN gets better, transparency survives, and you decide to stop being special and do it like everybody else. You hand the task to an agent and it removes the code. But instead of also removing the comment — which was right up until exactly this moment, and is now about nothing — it turns the comment inside out. It writes: we do not route images through our own resizer, because the CDN handles it.</p>
<p>You now have a line describing a situation nobody would ever have imagined, followed by the news that you are not in it. And once you let one of those stand, they breed: the next agent sees this strange, unused thing being discussed, and writes about it too, and eventually a good part of your prose is devoted to hypothetical arrangements about CDNs and transparencies that have never existed and would never have occurred to anyone if not for the bear.</p>
<p>So the rule: if you have flipped a yes to a no, and the no is simply what everyone does by default, delete the line rather than negating it.</p>
<p>Why agents reach for negation over deletion is not mysterious, and it is also why <em>you</em> will hesitate the first few times. Deleting looks like losing information; negating looks like keeping it. What is being kept is a wet-floor sign on a floor that dried an hour ago — and the agent’s instinct is not to take it away but to put up a second sign instead, reading “this floor is not slippery.”</p>

<p><img src="https://agentic.bible/assets/not-slippery.jpg" alt="A yellow folding floor sign reading “Relax, it&#x27;s not slippery.”" loading="lazy" decoding="async" width="1024" height="1024"></p>
<h2 id="d--durability">D — durability</h2>
<p>The last one. My philosophy is that all prose in a repository should describe the situation as it now stands, not the history of how it got there. No comment should be saying “we used to do this, and now we do that.”</p>
<p>Sometimes the change was genuinely important. Important changes belong to the commit history and to artifacts like pull requests, which sit in GitHub and can be pulled up whenever anyone wants them. So the comment states what holds and points at the argument — <code>// Mantine is imported layered, so nothing here needs !important (#412)</code> — and any reader curious about how it used to be, agent or human, follows the number and reads the whole thing.</p>
<p>Do not plant the entire archaeology of the project in your prose.</p>
<h2 id="why-it-never-stops">Why it never stops</h2>
<p>You might expect the lenses to work themselves out of a job as the repository gets clean. They do not, and there is a structural reason.</p>
<p>Text is the only way an agent can show its work. An empty diff looks like nothing happened. That pressure is there in addition to the imitation problem at the top of this article, and it does not go away when the repository is tidy — it is a property of the position the agent is in, not of the state of your files.</p>
<p>So run all four, every time, after every piece of work. I watch the edits go by and enjoy them the way one enjoys a near miss: you can see quite clearly how much verbal diarrhoea was about to become permanent, and did not.</p>
<p><img src="https://agentic.bible/assets/content-filter.jpg" alt="An empty comic panel with a speech bubble: “This image of verbal diarrhea did not pass the Gemini content filter.”" loading="lazy" decoding="async" width="1024" height="1024"></p><p class="content-end-mark-line"></p>]]></content:encoded></item>
<item><title>Drive your agents from the web, not from the CLI</title><link>https://agentic.bible/web-not-cli</link><guid isPermaLink="true">https://agentic.bible/web-not-cli</guid><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><description>Most people stay in a local terminal because a terminal is where serious work happens and a browser tab is where it doesn’t. That is a feeling, not an argument, and the three things you get for giving it up are not small ones.</description><content:encoded><![CDATA[<p>Every serious agent now has a web client, and the web client is not really a client. It is a machine: it checks your repositories out into a VM somewhere, works in them, and hands you a pull request when it is done. Claude, Codex, Cursor — the shape is the same. The alternative, which is where most people start and where a great many stay, is to run the same agent on your own laptop and watch it think in real time.</p>
<p>Stop doing that.</p>
<p>Mostly people stay for a reason nobody says out loud: a terminal is where serious work happens and a browser tab is where a person waits for a delivery. I will come back to that at the end, because it is truer than the arguments and it is not an argument. The argument I actually had was about merges — so that is where I will start, three reasons, in the order of how badly I had them weighted before I tried.</p>
<h2 id="the-branches-do-not-fight">The branches do not fight</h2>
<p>Locally, you work in one repository. Whatever your agents are up to, they are up to it in the same working tree, so they see each other coming; at any moment your checkout is the current state of everything you have going, and merging is somebody else’s problem. Move to the cloud and every session gets a branch of its own, and you immediately start doing arithmetic about how ten of those are ever going to come back together.</p>
<p>I put the move off for months on the strength of that arithmetic. It was wrong. Not “mostly fine” wrong — it has not happened once, with two branches or with fifteen.</p>
<p><img src="https://agentic.bible/assets/trunk.jpg" alt="Two alarmed saplings looking at a serene tree stump in sunglasses: “Dude, is it just me, or is trunk high as balls?”" loading="lazy" decoding="async" width="1024" height="1024" class="content-image-aside"></p>
<p>Agents turn out to be very good at working out what <code>main</code> did while they were away. What changed since they started; which of their own decisions that invalidates; which side of a conflict to keep, which to take from <code>main</code>, and where the honest answer is that both sides are now obsolete and the thing wants rewriting. A conflict across ten or fifteen files is not an event. Bigger ones are a slower conversation rather than a crisis, and they go better still if you give the agent <a href="https://github.com/vzakharov/muthur/blob/main/.claude/skills/sync-branch/SKILL.md">a skill</a> that says how merging is done in your repository — which is a subject for its own article.</p>
<p>(The one real exception is database migrations: two branches will both name theirs <code>0080</code>, and if they are pointed at the same development database they will trip over each other running them. That is a narrow problem with <a href="https://github.com/vzakharov/muthur/blob/main/.claude/skills/renumber-migration/SKILL.md">answers of its own</a>, and it is not a reason to keep fifteen sessions on your lap.)</p>
<p>So the fear was a genuine fear of an imaginary thing, which is the most expensive kind, because nothing ever disproves it while you are avoiding it.</p>
<h2 id="your-laptop-stops-melting">Your laptop stops melting</h2>
<p>The second reason is, and I mean this fairly literally, thermodynamic.</p>
<p>Running locally I could hold three to five sessions, six at a push, and they beat on the processor hard enough that the fan went to takeoff power and still lost. The machine ran like a stove. And you cannot close the lid, because the agents stop when you do.</p>
<p><img src="https://agentic.bible/assets/this-is-fine.jpg" alt="The “this is fine” dog, drawn as a laptop, sipping coffee in a burning room." loading="lazy" decoding="async" width="1024" height="721"></p>
<p>In the web, none of it happens on your computer. Somebody else’s processor gets hot, and unlike your own it does so for free: your subscription buys you as many VMs as you care to start, and nobody has yet come to have a word with me about it. You can also put a few other things in that VM — your CI, for one, which does wonders for the GitHub Actions bill — but that too is another article.</p>
<p>And you can close the lid.</p>
<h2 id="the-day-becomes-a-pipeline">The day becomes a pipeline</h2>
<p>Which gets us to the third reason, and the one that actually changed how the work feels. You stop waiting.</p>
<p>Ten sessions, fifteen, however many the work divides into. You hand out the tasks and they all start thinking at once. One comes back with a question; you answer it, and while you are typing another finishes; you review that, and by the time you are done a third wants something. The day is a steady loop of handing out work, answering questions, and accepting results, and at no point in it are you watching tokens crawl up a screen with the expression of a man following them closely.</p>
<p>And, let us be honest about the local alternative: sooner or later you will drift. You start an agent, you read along, there is nothing for you to do, so after a while you get bored and open Netflix. You come back to find the agent finished forty minutes ago, and you are two and a half episodes into the second season of Severance and have shipped nothing.</p>
<p>You do lose something real: engagement with each individual session. Reading an agent’s reasoning is interesting and genuinely instructive, and now and then you catch a bad decision while it is still a thought rather than a diff. But weighed against the hours it takes, it is not much leverage. Choose a task size the agent can actually finish — also its own subject — and nearly everything you would have said mid-flight you can say to finished code instead, where it is cheaper to say and cheaper to act on, because there is something concrete under the comment.</p>
<p>My own loop, once a task comes back: the agent opens a pull request with <a href="https://github.com/vzakharov/muthur/blob/main/.claude/skills/squash-message/SKILL.md">a proposed merge message</a> on it, so three or four paragraphs tell me what it did and why. I read the diff in the review tab and leave comments in it — “not like that,” “pull this out into a function,” “let us rethink the big picture here.” Then I go back to the session, compact it rather than dragging the whole accumulated context along, and say: there are comments waiting, go <a href="https://github.com/vzakharov/muthur/blob/main/.claude/skills/handle/SKILL.md">handle</a> them. It re-reads the PR, works through them, and comes back. Two or three rounds, usually, and it lands.</p>
<p>The part I did not see coming is that the switching is not a tax. It is where a good share of the insight comes from. A thought that belongs to the parser branch turns up while you are reading the deploy branch, because you have been in both of them in the last twenty minutes, and the two have no business having anything to do with each other, which is exactly why it works. Fifteen shallow contexts cross-pollinate in a way one deep one does not — and that is the human half of what <a href="https://agentic.bible/precedent-fallacy">another article here</a> is about: the insight arrives from next door, and there is no way to schedule it.</p>
<h2 id="what-you-give-up">What you give up</h2>
<p>Status, mostly. In a terminal you are a hacker: three iTerm tabs, an agent in each, green text moving. In a browser you are a person with tabs, which is what everybody with a SaaS subscription is, and the work is happening somewhere you cannot see. The feeling of being hands-on is real and you do lose it.</p>
<p>It is worth losing. Every client has pinning, so the tasks you are actively holding sit at the top of the list and the day is a matter of clicking between the ones that have come back for you. It is also remarkably good for ADHD, diagnosed or self-awarded: you will never be too bored to work, because there are fifteen unrelated things in flight and you can simply switch to a different one. It presses on your context a bit, holding that many threads — but I was through the adjustment inside a week and enjoying myself.</p>
<p>Each branch gets to <code>main</code> in its own time, and mostly the order does not matter; you just keep methodically adding to the tower. Then at some point you look back at the list of commits — each one clean, each one a whole thing — and think: goodness, look how much of this there now is.</p>
<h2 id="so">So</h2>
<p>Open <a href="https://claude.ai/code">claude.ai/code</a>, or whatever the equivalent address is for the agent you use, and work there.</p><p class="content-end-mark-line"></p>]]></content:encoded></item>
</channel>
</rss>
