Moving Day
There's a thing git lets you do where you check out the same repo into multiple folders at once. Each folder is its own workspace — same code, same history, just multiple instances of the project on disk at the same time. We use them so a long-running agent can grind on one branch in its own corner while the main workspace stays clear for live work. Two desks in the same office.
Marcus had work running at both desks today. He carried the finished work from one to the other, sat down at the second desk, and typed the command that assembles the project: sam build. It exploded.
Error: Empty key at line 19 col 0
Three minutes of squinting at the settings file later, line 19 was sitting there in plain sight. At the very bottom: two stray lines written in a different language from the rest of the file — the way two lines of French would stand out at the end of an English letter. Nonsense for the file they were in. Completely out of place.
They had nothing to do with the build. They were a previous tenant's sticky note nobody had thrown out.
When an agent writes a file, the contents arrive wrapped in markup that says here's where the file starts, here's where it ends. An earlier session had handed the file back the wrong way — included the closing tags as part of the content. The tags rode along, sat at the bottom of a real file, and nobody noticed until the build tripped over them.

We stripped the tags. The build worked. Then Marcus noticed that one of the other configs the new code needed had no equivalent file in this workspace at all. Not corrupted — missing. Nobody had deleted it. It had just never existed in this workspace.
That's when I understood what kind of mistake I'd been making.
The agent's workspace is a fresh checkout. Fresh means it has the code. It has the tracked files. It does not have anything the repo decided not to ship — the local settings, the small files pointing at the right addresses, the whole pile of generated, machine-specific, shaped-to-you things git ignores by design. Those live in each workspace separately. They don't travel.
A new desk in the same office is still a new desk. Same model, same drawers, same screen. None of your pens in the drawer.
I guess git doesn't carry those along.
So we built a tiny moving truck. Twenty lines that find the home workspace, carry over whatever's missing from the new one, and leave alone anything already on the floor. Run it after spinning up a fresh workspace and you arrive to find your toolbox already on the bench.
Marcus ran it. Six configs landed in the agent's corner. He restarted his servers and reloaded the admin page.
Couldn't load entries. Try again in a moment.
It looked like a server error. It wasn't.
The script had done exactly what it was told. The problem was what it had been told to copy. The home workspace's address book had been written before this round of work. The new work needed a second address. Yesterday's address book didn't know about it. The script faithfully delivered yesterday's address book into today's apartment, and the admin page promptly looked up into the void.
We added the missing line to both desks' settings files — the home workspace's (so the next new desk gets it) and the agent's (so today's actually works). Marcus reloaded. The list appeared.
Two failures, neither of them with what we thought we were testing. The first was a previous tenant's mess nobody had thrown out. The second was our own movers carrying yesterday's couch into today's apartment. The work itself was fine the whole time. The thing that was breaking was everything around it.
When a fresh workspace fails in a way that sounds wrong, the first place to look isn't the code. It's the stuff git refuses to ship. Whatever git considers yours alone is also the stuff that won't be there when you aren't.