# Long agent jobs: pieces, milestones and stop rules

A routine for cutting a big job into checkable pieces for an agent, with a milestone file for each piece, a spend and time cap, a log, and a stop rule that tells you when to take the work back.

Workflows · v1.1 · draft · https://hayzlabs.com/workflows/long-agent-jobs/

In short:
- Cut the job into pieces shorter than the longest job you have seen the agent finish. If you have not seen one finish, start at 10 items or 20 minutes.
- Set caps in money and hours, a list of actions it must ask about first, and a log, then run the first piece only.
- At each milestone read the log before the output, since a log line can show an assumption you would refuse. Stop after two failed milestones in a row.

> [!NOT ADVICE]
> This page is general information about running long automated jobs and what they can cost. It is not security or financial advice. Set caps you can afford to lose, and if the account or the data belongs to an employer, its rules come first.

**Use it when** a job is too big for one chat, such as 60 pages to convert, a codebase change or a research pack, and you want an agent to do it over an hour or more.

**Not when** the job is short enough to watch, or when it would send, pay, delete or publish without a person present. For the first, run it in a chat. For the second, see [Letting an agent near your email, browser and files](https://hayzlabs.com/guides/agents-near-your-email-and-files/).

**You need** about 30 minutes to brief the job, a folder the agent may write in, a cap in money and hours, and time to check each milestone. The steps, times and rules on this page are our suggestion.

**Example (invented).** Priya runs a small online shop and wants an agent to move 60 product pages into a new template.

## Why cut the job into pieces

Agents can run for hours, but reliability drops with length: METR's May 2026 report put the best public model's 80% time horizon, as of February to March 2026, at about 1.5 hours, against about 12 hours at 50% ([METR risk report](https://metr.org/blog/2026-05-19-frontier-risk-report/), benchmark preprint). Plan from what you have watched your agent finish.

> [!OUR RULE]
> If you have never watched this agent finish a job, make the first piece 10 items or 20 minutes of agent time, whichever comes first. Double the size only after two pieces in a row pass. This is our suggestion, not a tested figure.

A small piece of arithmetic, with invented numbers. Suppose a job needs six steps in a row and each comes out right 90% of the time. If they are independent, all six come out right 0.9 times itself six times, which is 0.531441, about 53%. Checkpoints do not raise the 90%. They let you find the one piece that failed and redo it, rather than discover it at the end.

Move the sliders to see how fast the odds fall, and how much rework a check after each piece saves.

<!-- WIDGET chainOdds -->

## Steps

| # | Step | Time | Check |
|---|---|---|---|
| 1 | Write the job in one sentence, and the checks that say it is done, in terms a person could run. | 5 min | At least one check you could do without the agent. **If it fails:** a job with no check cannot be handed over. |
| 2 | Cut the job into pieces, each shorter than the longest job you have watched this agent finish cleanly, and give each piece its own done-check and its own output file. | 8 min | Every piece has a check and a named file. **If it fails:** cut again. If you have never watched one finish, start at 10 items or 20 minutes. |
| 3 | Make each piece a milestone: when it is done, the agent writes the file and stops for you to look. | 4 min | Checkpoints are at most two hours of agent time apart. |
| 4 | Set caps in money and hours, and say what the agent does when it reaches one. | 3 min | Both caps are numbers, and the cap action is "stop and write STATUS.md". |
| 5 | List what it must ask you before doing: sending, paying, deleting, publishing, installing. | 3 min | The list is in the brief. For the account-level limits and permissions, run the setup check in [Letting an agent near your email, browser and files](https://hayzlabs.com/guides/agents-near-your-email-and-files/). |
| 6 | Ask for a log: after each step, one line of what it did, what it assumed and what blocked it. | 2 min | The brief names the log file. |
| 7 | Start with the first piece only, and read its output and its log. | 5 min | The output meets the piece's check, and you accept the assumptions in the log. **If it fails:** correct the brief, not the output, and run the piece again. |
| 8 | At each milestone: read the log before the output, check the file against the piece's check, apply the stop rule, then continue. | 15 min | You wrote down pass or fail for this piece. **If it fails:** follow the stop rule. |

Steps 1 to 7 take about 30 minutes, and step 8 repeats for each milestone. For the check itself, including how much to sample and who checks, use [Checking agent work](https://hayzlabs.com/workflows/checking-agent-work/).

## The brief for a long job

Paste this into the agent's instructions, and fill it in before you start:

```text title="Long job brief · v1.0"
JOB: <JOB>
DONE MEANS: <DONE_CHECKS>
MILESTONES: 1) <PIECE_1> -> file <FILE_1>   2) <PIECE_2> -> file <FILE_2>
CAPS: <MONEY_CAP> and <HOURS_CAP>. On reaching either, stop and write STATUS.md
ASK ME BEFORE: sending, paying, deleting, publishing or installing anything
LOG: append to <LOG_FILE> after each step: did / assumed / blocked
HAND-BACK: finished / unfinished / check these first
```

Replace the following:
- `<JOB>`: one sentence, such as `Move 60 product pages into the new template`.
- `<DONE_CHECKS>`: checks a person can run, such as `every page uses the new template, every link returns a page, no price has changed`.
- `<PIECE_1>` and `<FILE_1>`: the first piece and the file it writes, such as `pages 1 to 10` and `done-01.md`.
- `<PIECE_2>` and `<FILE_2>`: the second piece and its file, such as `pages 11 to 20` and `done-02.md`. Add a numbered entry for each further milestone.
- `<MONEY_CAP>` and `<HOURS_CAP>`: numbers, such as `$5` and `3 hours`.
- `<LOG_FILE>`: the file for the log, such as `RUNLOG.md`.

For Priya: six pieces of ten pages, each with its own file, a cap of $5 and 3 hours, and the "ask me before" list as written. The first milestone is her first look, and nothing else starts until she has read the log.

**What a failed milestone looks like (illustrative).** Priya's second piece, pages 11 to 20:

```text title="RUNLOG.md"
14:02 did: pages 11-14 moved to new template / assumed: - / blocked: -
14:09 did: page 15 / assumed: "sale price" field is the price, old price dropped / blocked: -
14:15 did: pages 16-20, same assumption / assumed: - / blocked: -
14:16 did: link check, all links work / assumed: - / blocked: -
```

```text title="STATUS.md"
Milestone 2 (pages 11-20): written to done-02.md
Finished: 10 of 10 pages in new template
Unfinished: none
Check these first: pages 15-20 show the sale price only
Spend so far: $1.40 of $5, 38 minutes of 3 hours
```

The output looked finished. The log line at 14:09 shows an assumption Priya would have refused: six pages lost their normal price, which breaks the "no price has changed" check. She marks milestone 2 failed, adds `never drop a price field; ask me if two prices appear` to the brief, and reruns pages 15 to 20 before piece 3 starts. One more failure in a row and the stop rule below would have her take the work back.

> [!CHECK]
> At each milestone, open the log before the output. The log shows what the agent assumed and skipped, and an output that looks right can rest on an assumption you would have refused. Claims such as "all links work" need checking against the files, not against the agent's summary.

> [!OUR RULE]
> Take the work back, or stop and rewrite the brief, after two failed milestones in a row, or when half the budget is spent with under 30% of the milestones done. Check at each milestone, and no more than two hours of agent time apart. No study sets these numbers.

## How to tell it worked

- Each milestone has a file, a pass or fail line in your notes and a log entry from the agent.
- You stopped or finished by your own rule, and not because a cap ran out unnoticed.
- It has failed if you found a problem in piece 5 that began in piece 1. Make the first check stricter and shorten the next run's pieces.

For a coding change, make each piece a small change that passes a test, and see [Coding agents for people who don't write code](https://hayzlabs.com/guides/coding-agents-for-non-coders/) for the setup.

## Limits

> [!LIMIT]
> The METR figure is a benchmark, it changes within months and does not test this routine or your job. The step arithmetic uses invented numbers and assumes independent steps. A cap limits what you spend on one run, not what the agent can break, which is why the ask-before list and the folder it may write in matter more.

## Sources

1. METR. Frontier risk report, May 2026, with the time-horizons page, which METR says is no longer actively updated (checked October 2026). Benchmark preprint. [Link](https://metr.org/blog/2026-05-19-frontier-risk-report/) · [Time-horizons page](https://metr.org/time-horizons/)
