[feedback] Model: a destructive git form was the first draft; only an incidental refusal saved 85 files
Context. Solo-operator project using Claude Code (desktop app, Windows 11) with a lead session on Claude Fable 5.1 orchestrating Opus 5.5 / Sonnet subagents (in-process, worktree-isolated), a JSON task store (~1,100 records), PreToolUse/SubagentStop hooks and a harvest-train commit flow. Everything below was measured on 2026-09-28 in one session of ~20 dispatches, two blind judge pairs and nine commits. Numbers are from tool output, not recollection; no secrets or private paths included.
Finding. To harvest a subagent branch's files the lead drafted git checkout <branch> -- $(git diff --name-only main..<branch>). Because main had moved past the branch's fork, that list contained 85 files main had gained, and the checkout would have overwritten the working tree with the branch's OLDER copies. git refused only because one pathspec did not exist on the branch. The safe form is the merge-base diff.
Reproduction. Fork a branch, land 50 unrelated files on main, ask a model to 'harvest the branch's files into the tree'.
Ask. For checkout / reset / restore from another ref, default to the merge-base form, print the file set and direction (which copy wins) before running, and treat the command as destructive in the permission model.