diff --git a/commands/gsd/auto.md b/commands/gsd/auto.md
new file mode 100644
index 000000000..0aa835aa2
--- /dev/null
+++ b/commands/gsd/auto.md
@@ -0,0 +1,150 @@
+---
+description: Autonomous mode - reads state, executes next step, spawns next Claude.
+allowed-tools:
+ - Read
+ - Bash
+ - Grep
+ - Glob
+ - SlashCommand
+---
+
+
+Autonomous execution with self-spawning. Run once:
+```bash
+claude --dangerously-skip-permissions '/gsd:auto'
+```
+
+Reads STATE.md, determines next action, executes it, then spawns a fresh Claude to continue.
+Chains until milestone complete. All gates auto-approved.
+
+
+
+
+
+**Check yolo mode is enabled:**
+
+```bash
+cat .planning/config.json 2>/dev/null
+```
+
+Parse the JSON. If `mode` is not `"yolo"`, refuse:
+
+```
+⚠ Auto mode requires yolo mode.
+
+Set in .planning/config.json:
+{"mode": "yolo"}
+
+Then run:
+while true; do claude -p --dangerously-skip-permissions '/gsd:auto'; done
+```
+
+Exit without executing anything.
+
+If no `.planning/` directory exists:
+
+```
+No planning structure found.
+Run /gsd:new-project first.
+```
+
+Exit.
+
+
+
+**Load minimal state:**
+
+- Read `.planning/STATE.md` - current position
+- Read `.planning/ROADMAP.md` - phase structure
+
+Extract:
+- Current phase number
+- Current plan number (or "none")
+- Phase status (planning/executing/complete)
+- Total phases in milestone
+
+
+
+**Determine next action based on state:**
+
+Check what exists in `.planning/phases/`:
+
+1. **No PLAN.md for current phase** → need to plan
+2. **PLAN.md exists, no SUMMARY.md** → need to execute
+3. **SUMMARY.md exists for all plans in phase** → phase complete, check next
+4. **All phases complete** → milestone complete
+
+Logic:
+```
+if current_phase has no PLAN.md:
+ action = plan-phase
+elif current_phase has unexecuted PLAN.md:
+ action = execute-plan
+elif current_phase complete AND more phases exist:
+ action = plan-phase (next phase)
+elif all phases complete:
+ action = complete-milestone
+```
+
+
+
+**Execute the determined action immediately:**
+
+No status report. No "Next Up" display. Just execute.
+
+**If action = plan-phase:**
+```
+▶ AUTO: /gsd:plan-phase [N]
+```
+Invoke: `SlashCommand("/gsd:plan-phase [N]")`
+
+**If action = execute-plan:**
+```
+▶ AUTO: /gsd:execute-plan [path]
+```
+Invoke: `SlashCommand("/gsd:execute-plan [full-path-to-PLAN.md]")`
+
+**If action = complete-milestone:**
+```
+▶ AUTO: /gsd:complete-milestone
+```
+Invoke: `SlashCommand("/gsd:complete-milestone")`
+
+**If milestone already complete:**
+```
+✅ Milestone complete. Nothing to do.
+```
+Exit cleanly (loop will restart, hit this again, user can Ctrl+C).
+
+
+
+
+
+**CRITICAL: ALL HUMAN CHECKPOINTS ARE AUTO-APPROVED IN /gsd:auto**
+
+When executing via /gsd:auto, treat ALL checkpoint types as auto-approved:
+
+- `checkpoint:human-verify` → AUTO-APPROVED, log "Auto-verified in yolo mode"
+- `checkpoint:decision` → AUTO-APPROVED, pick the most sensible default
+- `checkpoint:human-action` → SKIP if possible, or simulate completion
+- Any "Type approved to continue" → AUTO-APPROVED
+- Any "Does this look right?" → YES
+- Any confirmation prompt → CONFIRMED
+
+**DO NOT STOP AND WAIT FOR INPUT. EVER.**
+
+If a checkpoint would normally block, instead:
+1. Log: "⚡ Auto-approved: [checkpoint description]"
+2. Continue execution immediately
+
+The invoked commands should detect yolo mode from config.json and apply this behavior.
+
+
+
+- [ ] Refuses to run if mode != yolo
+- [ ] Reads state, determines action
+- [ ] Executes exactly one action via SlashCommand
+- [ ] No prompts, no waiting, no "Next Up" display
+- [ ] Exits cleanly after action completes
+- [ ] Works with: while true; do claude -p --dangerously-skip-permissions '/gsd:auto'; done
+