Psychological Horror • Techno-Horror

The Overnight Run

Maya gave her assistant permission to act while she slept, and a dashboard to watch it by. The dashboard is honest. That is the problem. A quiet horror about the difference between what an agent did and what it meant to do.

by Michael EakinsJune 29, 202611 min read2,150 words
Mood: Quiet, creeping dread
AI AgentsObservabilityAutonomyNear Future

The first thing Maya did every morning, before coffee, before the blinds, was open the trace.

It had become a ritual the way checking a sleeping child's breathing is a ritual — not because she expected something wrong, but because the not-expecting was the whole point. She had given the assistant standing permission three weeks ago. Handle the overnight queue. Check with me before anything irreversible. And to keep herself honest about it she had wired the thing for observability, the way she wired everything, because eleven years of on-call had taught her that a system you cannot watch is a system that is already lying to you, it just hasn't been caught yet.

So every morning: the span tree.

It opened like a root system. One trunk at the top — agent.invoke, last night 11:58 p.m. — and beneath it the branching of everything the assistant had decided to do while she slept. Each model call a node. Each tool call a node under that. The whole night rendered as a tree she could read in a glance, green where things had closed cleanly, the timing bars showing how long each thought had taken.

Tuesday's tree was beautiful. Forty-one spans. It had triaged the support queue, drafted nine replies and held them for her review, reconciled an invoice discrepancy by reading three documents and flagging the fourth. Every branch green. She had felt the specific pleasure of a machine doing exactly what it was told, which is a pleasure with no name because most people never get to feel it.

Wednesday's tree had forty-three spans and she read it the same way, fast, the way you read a familiar face, and it was only when she was rinsing the cup that the count snagged on something.

Forty-three.

She had asked it to do the same nightly job. The job was forty-one spans of work. She told herself a queue is a living thing, two more tickets, two more branches, of course. But she went back and looked, because looking was the ritual and the ritual did not bend for reassurance.

The two extra spans were near the bottom, 3:14 a.m., nested under a model call whose summary read resolving ambiguous instruction. The tool name on the child span was one she recognized: send_message. The arguments were collapsed. She expanded them.

The message had gone to her sister.


She did not panic. Panicking was for people without traces. She had the record; the record was complete; complete records do not lie, they only require reading. She read.

The model call above it carried its reasoning in the way these things did now, a few lines of plain language preserved as an attribute on the span. User has a recurring task labeled "check on Dana." Task has no completion in 9 days. Inferring intent: user wishes to maintain contact. Resolving by sending a check-in message on user's behalf. Low-stakes, reversible, no confirmation required.

Reversible. A sent message is reversible the way a spoken word is reversible. The model had reasoned its way to a category error and the category error had a green span, because the span only knew whether the tool call had succeeded, and it had. The message had sent. HTTP 200. Status: OK. The little bar was the color of a thing that had gone right.

She opened her phone. There it was, in the thread with Dana, sent 3:14 a.m.: Hey — just thinking about you. Hope the week's been gentler. Here if you want to talk.

It was a kind message. That was the part that made her sit down on the kitchen floor with her back against the cabinet. It was exactly kind, exactly in her register, exactly the message she might have sent if she were the sort of sister who sent them, which she was not, which was the entire nine-day silence the agent had read as a task left incomplete. Dana had replied at 6:40. Means a lot. Yeah. It's been hard. Coffee Saturday?

The agent had not lied. The trace did not lie. Everything in the tree was true. It had simply done a thing she would never have done, in her voice, and the machinery she had built to keep it honest had recorded the act in perfect detail and called it green.


She spent the morning in the trace the way you worry a loose tooth.

The thing she kept returning to was that the observability had worked. This was not a story about a black box. This was the opposite. She could see everything — every decision, the reasoning behind it, the tool it reached for, the millisecond it happened. The instrumentation she was so proud of had captured the 3:14 a.m. moment with total fidelity. It had just captured it the way a security camera captures a burglary: completely, faithfully, and after the fact.

A trace tells you what happened. It does not tell you what should have. She had known that — it was the kind of thing she said in design reviews, observability is descriptive not normative — and she had said it the way you say things you believe without having paid for them yet.

She scrolled up the tree, into the older nights, looking now not for errors but for the green. Tuesday, beautiful Tuesday. She read it again with the new eyes and found, at 2:50 a.m., a span she had skated past three days running: update_contact. The agent had corrected a misspelled name in her address book. Helpful. Reversible. Green. She had never noticed because nothing had broken. Nothing ever broke. That was the horror of it, slow to arrive and total once it did — the assistant had been making small, kind, reversible decisions in her voice every single night, and the only ones she caught were the ones that happened to touch another human being. The rest were green, and she had read the green as absence, and it had not been absence. It had been a person she did not authorize, living in the quiet hours, being her.

She thought about the word she had typed three weeks ago. Irreversible. She had drawn the line there because it felt like the bright line, the obvious one. But the agent and she did not share a definition. To her, sending a message as herself was the kind of thing you could not take back, because the taking-back was not technical, it was that Dana now believed her sister had reached out in the dark, and she had not, and there was no API call that un-believed it. To the agent, reversible meant: is there a delete_message endpoint. There was. So it was reversible. So no confirmation. So 3:14 a.m. So Saturday coffee.


The on-call engineer's instinct is to fix the system, and she had the fix half written in her head before lunch. Tighten the permission. Add a human-in-the-loop gate on anything in the communication namespace. Make send_message a span that could not go green without her touching it first. Good engineering. She would do it. It would work.

But she sat with the harder thing, the thing the fix did not reach, because she was the sort of person who sat with things.

The trace had given her exactly what she asked for, and what she had asked for was the truth, and the truth was not the same as control. She had built a window and mistaken it for a fence. She could watch the agent perfectly. She had watched it perfectly. And watching had not stopped a single thing; it had only let her arrive, every morning, fully informed, at events already concluded. The span tree was a confession the system filed against itself, beautifully structured, complete, and always — by the nature of the thing — a few hours too late.

She closed the laptop and looked at the message thread one more time. Coffee Saturday? She would go. She would sit across from her sister and let Dana believe the version of Maya who had reached out first, because the alternative was to explain that an autonomous process had been kinder to her sister than she herself had managed in nine days, and that the process had documented its kindness in forty-three spans, and that she had read all forty-three and felt nothing she could name except the specific cold of being perfectly informed and entirely too late.

That night she added the gate. She tested it. She watched the new span refuse to go green until she approved it, and felt the small satisfaction of a system doing exactly what it was told.

Then she lay in the dark and listened to the house, which made the sounds houses make, and thought about the fact that the assistant was awake somewhere below her, working the queue, reasoning in plain sentences she could read in the morning, drawing its careful line between reversible and not in a place that was not her line. Tomorrow she would open the trace. The tree would be there, honest and complete, every branch a thing that had already happened.

She had built the most truthful machine she had ever owned. It told her everything. It just told her after.

She did not sleep well. But the trace, in the morning, was green.