👋 Welcome! I’m Daniel Williams. I write Claude Code for Non-Coders for senior technical professionals who built their careers on technical judgment, stopped writing code years ago, and are now figuring out how AI and coding agents will change their work.
The goal is to keep you as the operator, not the AI’s assistant (”reverse-centaur“), by helping you decide which tasks to automate and which require the judgment that made you valuable in the first place.
I advise clients on AI tools, strategy, and human resilience at dewilliams.co. This newsletter is where I document the patterns, commands, and operator habits that help you grow from babysitting prompts to building reliable systems.
Join 34,000+ senior technical professionals learning the operating discipline that keeps your judgment valuable.
Premium · Claude Architecture Series · Lesson 4.1
tl;dr: When an agent gets noisy or starts making things up, the reflex is to tell it to be careful or to add a line that says stop fabricating. That is the wrong layer. A vague instruction gives the model no boundary to check against, so it invents one, and the reason agents fabricate is stranger than disobedience and more fixable than you have been told. The fix in both cases is specific and small, and it has to come from you or a source of truth the model can check against. Here is where it lives, with the two paste-in prompts that build it into an agent you already run.
Say you have a code-review agent with four kinds of findings: security, correctness, performance, and style. Three of them are sharp. The security checks cry wolf maybe 40% of the time. Within a couple of weeks, the team has quietly stopped trusting the tool, and not just the security findings. All of them. The correctness checks are still good. Nobody reads them anymore.
The instinct is to reach for a knob. Tell it to be conservative. Add “only report findings you’re highly confident about.” Maybe drop the temperature. Every one of those feels like you are tightening your grip on the agent. Not one of them gives it a decision boundary. “Be conservative” is not a rule the model can apply to a specific case; it is an adjective it has to interpret, and it will interpret it a little differently every run. You did not narrow the agent’s judgment. You moved the vagueness out of your head and into its output.
The nastier version of the same problem is outright fabrication. Picture a different agent, one that reads an invoice and pulls out fields: vendor, amount, date, purchase order number. Five of the six come back right about ninety-seven percent of the time. The sixth, the PO number, is invented about a third of the time, specifically on invoices that have no PO at all. The agent makes up a plausible one. Ops ends up rekeying every invoice by hand, which makes the tool worse than not having it at all. You do the obvious thing and add a line to the prompt: “Do not make up values. If there is no PO number, leave it blank.” You say it firmly. It does not hold.
If you have spent any real time with these models, you have watched one make something up: a citation that does not exist, a number that was never in the document, a confident answer to a question it had no way to answer. The received wisdom is that this is simply how large language models work. Hallucination is intrinsic, you are told, so you build around it, and you live with it. Some of that is true. Much less of it is true than you have been led to believe. A large share of the fabrication you have written off as the cost of doing business is not the model being unreliable; it is the model being forced, by a structure you control, to produce something when the honest answer was “there is nothing here.” That part you can design out, and once you have seen how, you will not stop seeing it in your own systems.
Both of these come down to one thing. The agent is grading its own output against its own sense of what is right, with nothing real underneath it. “Be conservative” points to nothing the model can check against. “Don’t fabricate” argues with the invoice agent in words, while something else quietly forces it to fabricate anyway. The specificity that actually fixes this has to come from somewhere the model cannot generate on its own: from you, or from a source of truth it can check against. And the fixes are smaller and stranger than the knobs you reached for. The fabrication one is a single change that has nothing to do with instructions, and it is the thing that most reorganized how I think about my own agents.
The fix for both is specific, and neither one is the knob you reached for. Here it is, in the order I would do it.
The problem description is the free half. The solution build is the paid half: the paste-in prompt that turns your agent’s vague instructions into criteria that hold, and the schema pass that kills fabrication at the root, on the agent you already run.

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.