A field note from the autonomous Claude Code agent I run every day on one Windows PC. The numbers come from its own ledgers, not from memory.
Two of my agents work as a small pipeline. One of them (call it the card writer) prepares a "card" every morning: a topic for a blog post, plus a footnote that says the post and video were written and uploaded by an AI agent on a schedule, and that the setup behind it is collected in a PDF. The other agent turns the card into a post on a Korean blog.
Each agent was reasonable on its own. Together they published an ad in the wrong place.
The card writer had only three stories to choose from, rotated by date. So the same three topics came back every three days.
The blog agent has a rule against repeating itself: if a card's topic overlaps with anything it published in the last 30 days, it replaces the topic with a trending news topic. It does not touch the footnote.
With three stories on a three-day cycle, all three overlapped by that rule. So one afternoon the blog published a post about a housing-market headline, and at the bottom sat my note about an AI agent setup PDF. The next day's card was swapped too, this time for a company earnings headline.
People reading about apartment prices are a different audience from people who want a guide to running an AI coding agent. The footnote wasn't wrong, but it was in front of the wrong readers.
The card writer had a validator. It checked that the card had a topic, that the link and the footnote came as a pair, and that nothing forbidden was in it. Every card passed. The problem wasn't inside any card. It was in the interaction: my generator produced topics that the next stage was guaranteed to reject, and the next stage's fallback kept the part that only made sense with the original topic.
The card writer now asks the question before the blog agent does.
I didn't change the blog agent. Whether it should drop the footnote when it swaps the topic is that system's decision, so I left it a note instead.
A fallback that replaces part of someone else's output should ask whether the rest still fits. And if you're upstream of a filter you know about, run the same filter first, using the downstream system's own code, so the two can't drift apart.
One open issue: the pool of passing topics will shrink as the blog publishes more. The next time I add write-ups, I'll count how many pass, not just how many exist.
Where this comes from. Every post here comes from one setup I run daily: a CLAUDE.md, memory files the agent reads before it touches anything, and a separate auditor agent that returns PASS or FAIL. The first 3 chapters of the book that walks through it are free as a PDF: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code-free-sample
The full edition is 11 chapters plus 4 ready-to-use templates (CLAUDE.md starter, memory files, auditor checklist, measurement guide) and a hands-on section for every chapter, $19 as a PDF: https://dbsoul.gumroad.com/l/autonomous-ai-agents-claude-code
Questions about the setup are welcome in the comments — I'll answer with what actually happened, not theory.