The Automation I Built That Refused to Log Into GitHub For Me
A Monday-morning sync routine, and the one line Claude wouldn't cross even though it could have found a workaround.
I wanted a Monday-morning routine: scan my Skills Creator folder, compare it to my GitHub repo, and report what's new or changed for me to approve before it pushes. Five simple steps in my head: scan the folder, report what's different, wait for my approval, push the change, confirm it landed. Nothing exotic. The kind of routine that felt like it should take an afternoon to wire up.
Then I hit the part that mattered.
Pushing to GitHub needs authentication, and there was no token or SSH key set up yet. My AI build partner refused to enter one for me. Not because it couldn't find a workaround. Because that's a line it won't cross. I had to set up that connection myself.
It also caught something I hadn't noticed on its own: a leftover folder, claude-code-building-assistant, sitting next to a skill I'd already rebuilt under a new name. Possibly a duplicate. Possibly a relic worth keeping for reference. It didn't guess. It flagged the folder and asked me which one was actually safe to remove, rather than picking the answer that would have let the routine finish running without stopping.
Not a system that does everything, but one that knows exactly which decisions are mine to make.
That's the actual lesson, and it's a concrete example rather than an abstract governance principle. Setting up credentials is mine to do. Deciding whether an old folder is safe to delete is mine to decide. An automation that refuses to cross those lines on its own isn't less useful for it. It's the difference between a tool you can trust with real access and one you have to babysit every time it runs.
I ended up setting up the GitHub token myself, which took about five minutes once I stopped expecting the automation to do it for me. The routine runs every Monday now, scan, report, wait, push, confirm, exactly as planned. The only difference from my original five steps is that step three, waiting for approval, turned out to matter more than I'd given it credit for going in. It's not friction. It's the actual point of building the thing this way instead of the faster way.
Go deeper
Before Writing Code, I Mapped Every Place the App Should Act on Its Own →
Eight automatic behaviors, each with a trigger and an approval gate, mapped before a single line of Firstflow got built.
The Step I Used to Skip: Deciding What the App Should Automate Before I Design the Database →
Why mapping automation-versus-human-decision first changed the database design for a career-portfolio tool.
Get new guides and builds in your inbox
No noise. New artifacts, skills, and lessons when they drop — and early access when agents launch.
Want a full structured path instead of one-off guides?
That's Learn AI with AI — a sequenced course that takes you from zero to building real things, with community and accountability built in.
Check out Learn AI with AI →