It’s late. You’re about to close the laptop. Then the thought: did I commit the book repo? The agent changed fourteen files there this afternoon. And the game repo — you fixed the ad bug, but did it get pushed?
You open a terminal and start the rounds: cd, git status, cd, git status…
Part 3 of Busy, Not Shipping. A day of real progress can still end with nothing saved.
Why it happens more with agents
Before agents, you changed files in one repo at a time and you felt every edit. Now an agent can touch dozens of files across several repos while you’re looking at something else. The work is real; the commit isn’t automatic.
Across a day of switching between projects, it’s easy to leave a trail of repos that are “done but not saved”.
Why it’s riskier than it looks
Uncommitted work fails quietly:
- It only exists on this machine. Your other Mac, your CI, your future self on a new laptop — none of them see it.
- It’s easy to wipe. A careless checkout, an agent told to “reset and try again”, a stash you forget.
- It blocks the next task. Tomorrow’s session starts on top of a pile of mystery changes, and neither you nor the agent knows which ones were intentional.
A daily push, as its own step
Treat saving work as a separate, deliberate step — once a day, for every repo, in the same order:
- See all repos at once. Which ones are dirty? How many files?
- Review the file list. Is everything there meant to be there? Anything that looks like a secret?
- Write a message that says what changed — “store listing captions”, not “wip”.
- Push. Then move to the next dirty repo.
Doing this once a day is enough. It’s the same habit described in running 10 projects in parallel.
Keep status commits small
If your agent updates a state file after each task, commit that change on its own. A one-file commit that says “task X → phase 4” is easy to trust and easy to revert. Mixing it into a forty-file code commit hides it. When one repo holds many products, small commits also keep each product’s history readable.
What not to automate
Automate the seeing, not the judgment. Never let a script rebase, force-push or “clean up” across many repos for you. When a push fails, read the real error.
Where ShotMatic fits
Every ShotMatic board has a GIT strip that shows whether the repo is dirty and which files changed. Push shows the file list and a prefilled message first. ✓ on a task commits exactly one file, and ShotMatic never rebases or force-pushes.
