v1.42.0 ·
Nobody is watching
The problem
Every skill assumes a person is present. Two unattended dry runs of the EARS item on
2026-10-02 each logged 13 places where a skill said to ask, wait, present a menu or get
approval. Without a rule for each, an unattended agent either stalls or invents its own
answer and leaves no record. One of the 13 was a plain bug: the worktree promote flow left
the roadmap item unlinked from its instance (promoted_to unset, item not moved), because
that step was prose an agent could skip.
How it could be solved
Three decisions, each about keeping an unattended agent from guessing.
The first was whether "unattended" should be a switch the tool reads or a rule the agent reads. A switch would have meant a new branch in every command, a cost every future change pays. A rule costs nothing until the mode is on. So the tool behaves exactly the same with the setting on or off. Only the agent's instructions change, and only two steps became commands, because agents had been seen skipping or fumbling them.
The second was what to do when the safe answer is not obvious. The tempting design lets the agent pick the "least bad" option. Instead, every stop found in practice has exactly one written outcome. Anything not on the list is a stop, never a guess. A test reads the list of stops from the practice runs and fails if any of them has no outcome, or two.
The third was where an unattended run ends. Parking the item at release time would have put every successful item on hold. Letting the agent release would have put two actors on one release lane, which is how two releases collided the day before. So finishing the tests is its own outcome: the agent writes the release plan and stops, and whatever started it does the release.
How AIDLC solves it
AIDLC can now run with nobody watching. Every skill was written for a person who answers
questions, approves designs and confirms risky steps. Set AIDLC_UNATTENDED=1 and an agent
follows one new rule instead: for each place a skill would stop and ask, the rule says either
"take this default and write down that you did" or "stop, park the item, and end". Stopping
covers the things nobody should decide alone — anything against the project's constitution,
deleting someone else's data, touching credentials or permissions, and doing more than the
roadmap item asked for. Every default the agent takes is listed in one file per piece of work,
so a person can review a whole unattended run in minutes. Finishing the tests is the normal
end: the agent writes the release plan and stops, and whatever started it does the release.
The list of places came from two practice runs on 2026-10-02 that found the same thirteen stops on two machines.
Two steps that agents were seen getting wrong are now commands. aidlc start --roadmap-item
links a roadmap item to the new piece of work, moves it to in-progress and copies it in, all
at once — one practice run had skipped that step and left the item orphaned. aidlc roadmap park moves an item to hold with a reason, which is how an unattended run stops. And the
clean-up step that removes records of finished worktrees now names each one it removes.