Skip to content

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.