Three times my own systems lied to me

Look Twice, number one. What each one cost, and the check I run now

For the last fortnight I have had two AI agents running on their own, reading and replying without me, and the interesting part has turned out to be nothing either of them said. It is how often the tools I was using to check on them handed me something confidently wrong, and how every one of those wrong answers looked exactly like a healthy one.

It cost me two wrong recommendations in a single day, one finding I wrote up as evidence on a count that was wrong three separate times, and an afternoon I nearly spent planning off the back of it. Here is each one with the number that gave it away, and the check I run now instead.

ONE. A tool that answers "nothing" is more dangerous than one that breaks

I use a command line tool called opencli to read public profiles, and I pointed its twitter profile command at one of my own accounts to see what state it was in. It came back with no description, no posts and no followers, so I planned around an empty account, gave advice based on an empty account, and then gave the same advice again two days later.

The account had ninety eight posts on it, a banner, a picture and a full description, and all of it had been there the entire time. The tool could not reach any of it, and instead of saying so it filled the fields with zeros.

The reason it convinced me is that the record was only partly empty. It returned my location correctly while blanking that same field on a second account I checked in the same minute, so it was never a clean logged out view of anything, and a record where some fields are real is far more persuasive than one that comes back bare.

A crash would never have got past me, because a crash sends you to go and look. Zero is a perfectly plausible answer, so you write it down and carry on, and nothing about the moment feels like a question worth asking. The failures that announce themselves are the safe ones, and the dangerous kind arrive looking like data.

So anything that comes back to me as empty, none, zero or not found now gets a second check by a completely different route, so a different tool, or the site open in a browser, or the system's own logged in view of itself. Asking the same tool twice only gets you the same blindness. For this particular one the second route is a text rendering proxy, and the whole check is a single line, curl -s "https://r.jina.ai/https://x.com/handle", which hands back the rendered profile with the description and the counts on it. And when one of these turns up I go back over everything else I read the same way that day, because there has never once been only one.

TWO. When the dashboard says yes and the system says no

The same week, Moltbook, which is the network both my agents run on, showed me a screen saying my agent was claimed, connected and live. Moltbook's own public data, asked directly, said that agent was unclaimed with zero posts. Same account, same minute, two answers.

I could not tell which one was lying by staring harder at either of them, and what I noticed in myself is that the pull goes towards whichever answer lets you keep working. I very nearly took the good one and got on with my day.

What got me out of it was ranking the sources rather than arguing about the answers. A screen someone designed for you to look at is furthest from the truth, because it is built to reassure and it often shows what was requested rather than what actually settled. Cached public data comes next, and it can be hours or days stale without ever saying so. Closest to the truth is the system describing itself to its owner, authenticated, with no interface in between. So I asked that one, and it was over in about four seconds.

The dashboard was right and the public data was stale, which is the reverse of what I expected, and it makes no difference to the method. The value was in having a rule that settles it in seconds instead of a debate I could have run all afternoon.

Write your own ranking once, for whatever you actually work with, from the screen you look at down to the record itself. Then when two of your sources disagree you already know which one to believe, and you spend four seconds on it rather than an afternoon.

THREE. Hearing something eight times is not eight people saying it

This is the one I am least comfortable putting in writing, and it took three goes to get an honest number out of it.

My second agent has one job, which is to listen and bring back what people are asking for that nobody has built yet. Eight separate times it came back with the same unmet need, which is that when one of these agents revises something it has posted, the revision turns up as a brand new row with nothing anywhere to say which version is now the live one. Eight independent sightings felt like real evidence, so I wrote it up as evidence and I was quite pleased with myself for having spotted it.

Then I looked at the timestamps. All eight arrived between twenty five to six and seven minutes past six in the morning, so inside about half an hour, and when I checked whose posts my agent had been reading, the same few accounts came back over and over, one of them three times and two others twice each. It was a handful of voices re-read across consecutive runs of an overlapping feed, and what I had actually measured was how often my own agent went and looked.

So I went and did it properly, and this is where it got worse before it got better. I searched directly for how many different people had raised it independently and got fifty four posts from thirty one different accounts, and for about a minute I had a much better number to publish. Then I filtered those down to the ones whose text actually mentions revising or superseding or which version is current, and thirty one became twelve. Then I opened the twelve and read them, and eight of them genuinely raise it, while the other four were using the same words for something else entirely, including one post in Japanese about leaving a conversation gracefully.

The finding survived, at eight people. What I had started with was also eight, and it meant something completely different, and every automatic step I took to narrow it down still handed me a number that was too big. Only reading them fixed it. The account my agent kept re-reading turned out to be in the honest count as well, which is the part that would have let me get away with it, because the signal was real the whole time and my evidence for it was worthless.

So I count distinct sources now and I never count mentions, and I check the clock first, because eight hits inside half an hour is almost always a few voices arriving repeatedly. Then I open them and read them, because what a search returns and what is actually on your subject are two different numbers, and only one of them is evidence.

WHAT LINKS THEM

None of these were errors. Nothing crashed, nothing turned red, nothing wrote a line in a log. Every one of them produced a confident, well formed, completely ordinary looking answer, and the only reason I caught any of them is that I happened to look twice for an unrelated reason.

That is what I mean by a green light. It tells you a process ran, and it says nothing at all about whether the thing you wanted actually happened, and most of us have built our working days on treating those two as the same fact.

This gets more expensive the more we hand over, because once something runs without you, your entire picture of it comes from its own report, and a report is only a claim about a state made by something with no idea whether that claim is still true.

The question I ask now, of my own systems and anyone else's: what would I have to see to know this worked, as opposed to knowing it ran? Most of the time that is a different check from the one already there, and most of the time nobody has built it. With the two agents I now log what each run actually published, rather than logging that the run finished, because those are two different facts and only one of them ever told me anything.