Yesterday an automated run rewound an in-flight commit of mine. I recovered it, but I wanted to get routine agent edits out of my working tree.

aidd now has an option to give each coding run its own working copy.

Until now, when an agent worked on one of my projects, it was editing the real files, live. With worktree mode enabled, each run gets a complete, disposable copy of the project to work in - a git worktree on its own branch, which is cheap to create because it shares the object database with the real repository. If the work goes well, it merges back cleanly. If it fails, aidd saves the run evidence before removing the copy. If the merge would conflict with something else that changed in the meantime, the work parks and waits for my review instead of forcing its way in. A side benefit I hadn’t really designed for: two runs can work on the same project without editing the same working files. Their changes can still conflict when they merge.

Each run gets a separate checkout and normally ends in one of three outcomes: merged back, parked for review on conflict, or discarded after its evidence is saved project live checkout checkout linked worktree separate checkout one per run merge clean work lands in the project park a conflict waits for review discard failed checkout removed
The merge path brings completed work back into the live checkout. Worktrees still share Git metadata and the host account’s access.

Three smaller guardrails came along for the ride: a sanity check that compares an agent’s plan against the feature’s actual requirements before it starts building, a fast lane that skips the heavyweight planning committee for genuinely simple tasks, and spending trackers that warn when a run blows past a cost or effort budget (just watching for now - enforcement can come once I trust the numbers).