SOURCE ON GITHUB ↗

Claude writes the code at night.
You review it in the morning.

33unattended nights
$6.13average night
10things broke
11Claude Code asks

THE ESSAY · 8 MIN READ

33 nights of unattended Claude Code, and what I'd ship as its PM

From the run record, Aug 17 – Oct 16. Three of the asks, each from a night it went wrong:

  1. Refusals in the record. One report said “blocked by the fence: none” on a night with 34 refused calls.
  2. Sandbox on by default for headless runs. Rules alone let one line of python3 -c escape five ways out of five.
  3. No exit with work pending. Four nights ended on “waiting on the task notification” with no report.

PART TWO

The thing I built to run these nights

Loops is free and open source. You give it a goal, a budget, a cadence and a model; it works one bounded run at a time while you sleep and leaves you four lines in the morning.

pm/nights/2026-09-15.md
## L-04 · Permit research, iteration 2
- Trying to:   read the second of five county permit files and pull the generator count.
- Did:         read all four documents, every page. The permit says 96 units; the agency
               web page says 98. Recorded the gap as a discrepancy, did not reconcile it.
- Decided:     one row per permit, not per building. Flagging it, since it is your call.
- Need from you: check the renewal on the state portal; it needs a login the fence denies.

run: 41 min · $3.80 of $6 · 0 pushes · 0 denials · progress: yes

If the four lines are missing, the run is not done. That rule is in every loop's definition of done, and the morning judge checks for it. This one is an example, modeled on a real night.

A loop is a sticky note with a budget. Write the goal the way you would say it to a new hire on their first day, then pick a cadence, a model and a price. These are examples.

  • Watch three competitors’ changelogs. Tell me what changed and whether it matters.

    weekly · sonnet · $2 a run

  • Ship one small fix from the backlog. Verify it renders before you report it.

    nightly · opus · $6 a run

  • Check every box on the launch checklist against the repo. Flag the ones that lie.

    every 2nd night · sonnet · $2 a run

INSTALL LOOPS · MACOS · RUNS ON THE PLAN YOU ALREADY PAY FOR

I use

Pick one and the steps below adapt. Either way it runs on your own Mac and subscription. Nothing phones home.

~ · install.sh
Installing to ~/loops
  wrote  pm/CHARTER.md
  wrote  pm/LOOPS.md            (empty)
  wrote  .claude/settings.json  (the fence, with your paths filled in)
Armed. The checker looks every ten minutes; nothing runs until you write a loop.

Loops · your first loop
Four questions. One file gets written.

1 · Which agent runs the night?   both are installed
   1) Claude Code   per-path fence; can read the web
   2) Codex         sandbox with the network off; harder no-push
   choose [1] 1

2 · What should it work on?   pick a number, or type your own
   1) Watch three competitors' changelogs. Tell me what changed.
   2) Ship one small fix from the backlog. Verify it renders.
   3) Read yesterday's support tickets. Name the top three themes.
   goal [2] 2

3 · How often, and how much brain?
   cadence [every-2nd-night] ⏎
   brain: fast (Sonnet) · deep (Opus) · frontier (Fable)
   brain [deep] ⏎

4 · What may it spend?
   per run [6] ⏎      total for this loop [48] ⏎
   at most $90 a month at this cadence; ends after 8 runs

Written   pm/LOOPS.md  (L-01, review by 2026-10-30)
Trusted   ~/loops in ~/.claude.json  (so the fence's allow rules apply)
Dry run   every guard, no model call, no spend
   tonight the machine would run L-01. ✓

Tonight   plug the laptop in. Lid open or shut.
Morning   read pm/nights/<date>.md
README.md68 lines
HOME01 / 3

drag to scroll