Building apps with an autonomous Gauntlet Loop A developer extended Matt Shumer's Gauntlet Loop into a semi-autonomous app-building loop that landed around 45 tasks in its first week, running from 11 August 2026 in Claude Code. The setup uses Git state, per-task branches, a human-controlled gate to production, and quality gates including tests, screenshots, and code review. The developer reports imperfections such as invented counts and ineffective fixes, and continues to refine the system. Artificial Intelligence Building apps with an autonomous Gauntlet Loop I started with Matt Shumer's Gauntlet Loop, but I wanted to generalize it from a simpler one-shot approach to a full semi autonomous loop that can build apps. I added Git state, recovery, branch boundaries, and a human-controlled gate to prod. Here's my setup. I loved Matt Shumer’s Gauntlet Loop idea, so I wanted to borrow and extend it. In Claude of Duty, where he presented this loop, he split the game among subagents, gave them an absurdly high reference bar AAA game quality, for example , and used separate critics to send weak parts back into the loop. The prompt he used is relatively short. But I focused on the structure - not the prompt itself. That means I looked into elements like building, comparing against something real, and isolating the grader/judge from the build so it evaluates the result without the builder’s context. 1 fn:1 My motivation was simple and practical: I wanted to see whether that structure could survive an app backlog running for days, with fresh contexts, CI, migrations, misleading tests, and a production branch the agent could not touch. That is much closer to a production environment than a contained one-off run. I decided to keep the gauntlet inside each task and then added a recurring loop around it. I relied on Git to hold the current state, and a task list ledger holds the next job. Then, each task gets its own separate branch and acceptance criteria. If those criteria are not met, reviewers can send it back. I also limited what the agent can and cannot merge: the agent can merge into an integration branch, but only I can promote that branch to main , keeping the human in the loop. This is my setup and what I’ve learned from it so far. I’m sharing it because I hope you’ll try your own version and tell me what works differently for you. I started my loop on 11 August 2026. After one week of running, it had landed around 45 tasks from that task list ledger . It wasn’t perfect - it had invented a few counts, shipped two fixes that did not fix the bug, and once let a reviewer knock the schemas out of the local database. Some of those problems were caught inside the loop and presented to me; I caught others during human review. So I am still changing the setup and improving it. I’m building something in stealth, and it involves certain legal regulations with real consequences. I must avoid situations where a confident mistake can put somebody at risk of non-compliance. That means that I am deliberately cautious about what reaches users. I’m saying this because this loop might look like overkill if you are building a to-do app. Still, the general shape is very useful; you just might need to balance the strictness of some of the checks. As for the technical implementation, my loop runs in Claude Code. Its /loop command can rerun a prompt or slash command inside an active session. 2 That repeat command is the only Claude-specific part, and there are similar approaches, like Codex’s /goal , across different harnesses.I use tests, screenshots, and code review as quality gates, and everything else in my setup lives in Git. 3 fn:3 The examples and counts below come from my private app repository as I inspected it on 18 August 2026. This is one week of experience with one product, not a reliability study. I kept “around 45” rounded because I did not remeasure the exact task total for this article. The current setup There are three layers in my current setup. /loop provides the repetition. My /app-loop command is about forty lines long and describes one iteration. Before doing any work, it tells the agent to check the stop file and read LOOP.md from the repository. LOOP.md is the longer part. It is currently 259 lines and contains the task protocol, branch rules, review steps, recovery instructions, and the order in which conflicting files should be trusted. I keep that out of the recurring command because I do not want two slightly different copies of the rules. The rest of the repository supplies the memory: a product spec, AGENTS.md , STATE.md , a task ledger, detailed acceptance criteria, known residual issues, and a completion note for each finished task. You can generate a bunch of these before you start your project if you are starting from scratch or on top of an existing codebase - both work. Each iteration starts with a fresh context. That was partly an experiment, but it has been useful. When a session died halfway through a task, the next one could recover from Git. I have also resumed the loop on another machine and once with another model. Both times the recovery instruction was one line: pull origin/loop/trunk and start /loop /app-loop . Fresh context can also read stale instructions, so the files have to stay current. A task claim is pushed before work begins, and then the journal is committed. My task acceptance criteria live in the backlog instead of in the one-line ledger entry. Anything that exists only in the model’s context disappears at the next iteration. I wanted that pressure. It creates plenty of paperwork, but the model and harness seem to be dealing with it fine. I did some further optimization around that, as I’ll explain a bit later. Branches, setup and boundaries My agent works on loop/