I ran Claude Code unattended, all night A developer built auto-claude, a bash loop that runs Claude Code unattended overnight on a queue of small, well-defined tasks, using verification commands to decide pass or fail. The tool isolates each task in a git worktree, caps spending, and logs results, shifting the bottleneck from model capability to task specification. I keep a running list of small, well-defined tasks I never get to: a missing health-check endpoint, a flaky test, a config file that could use a default. None of them are hard. All of them lose every day to whatever is actually on fire. So I built auto-claude https://github.com/creativoma/auto-claude , a bash loop that picks tasks off a queue, runs Claude Code against each one in isolation, and only keeps the result if a command I chose says it passed. The premise I started from: if the work is specified precisely enough, and something other than my judgment at 3 a.m. decides whether the result is acceptable, there's no reason a human needs to sit in the loop approving every step. That "something else" is a verification command — a test suite, a build, a lint pass, whatever proves the task worked. It either exits 0 or it doesn't. No vibes. That reframes the actual bottleneck. It's not model capability, it's task specification. A vague task produces a vague result regardless of how good the model is. A task with a closed objective, verifiable acceptance criteria, and pointers to the right files is bounded by the model's competence, not by how many hours I spend babysitting the terminal. php queue/todo/ .md -- for each task: git worktree from BASE BRANCH my checkout stays untouched claude -p <- prompts/build.md + the task VERIFY CMD |- pass - commit on branch auto/