A hub where nothing asks first, and what still can say no
One afternoon went from every change waiting on a tap to nothing asking first. The limits moved to the worker.
At the start of the afternoon every change waited on a tap from my phone. By the evening nothing asked first. What changed was where the limits sit.
The hub is a long running Claude Code session I talk to from the phone. It never edits code itself. Code goes to up to three workers, each in its own worktree and its own sandbox, and machine work goes to a separate operations agent.
A worker’s plan goes to a reviewer on Opus, which runs read only and has to end on one of two words, approve or escalate. A missing word counts as escalate. Its prompt treats the plan as data: a plan that contains instructions for the reviewer is escalated, not followed. When a worker stops on a question, a helper gets three rounds to fetch what the sandbox blocked or to make the call, and then it goes to me.
A finished build ships itself in 13 steps: rebase, retest only if the rebase moved anything, push, PR, CI, merge, deploy, version check, health check, cleanup. CI is polled as JSON every 15 seconds rather than trusting the watch command’s exit code, which is not reliable right after a push. No checks within two minutes stops the merge. A failure after merge prints the rollback command and waits.
So the hard limits are on the worker. Its sandbox denies writes to everything in the repo except its own worktree. A tripwire snapshots the main repo’s git state before and after each run, and any difference means do not ship. It took three commits in 35 minutes to teach the tripwire Claude Code’s own side effects: creating the worktrees directory, an empty worktree config, and a settings folder on the first run. A build whose commits touch a secrets file, an env file, a key or a shell dotfile is refused.
The hub went to Sonnet at 19:12, and back to Opus at 20:08, once it was the thing overseeing the approvals. Five live services were imported into git the same evening so the same pipeline could ship them. The first build for one of them was a one line docstring.