Hayz Labs

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.

Advanced7 min readDoing it takes 30 min to brief a jobChecked 11 Oct 2026

What this is
How to hand a big task to an agent, an AI that works through steps on its own, in small checked parts with caps on cost and time.
Why it matters
Agents get less reliable on longer jobs, so you find a mistake in the piece where it started, not at the very end.
The short version
  • 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.
On this page
  1. Why cut the job into pieces
  2. Steps
  3. The brief for a long job
  4. How to tell it worked
  5. Limits
  6. Sources
  7. Changes

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.

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, benchmark preprint). Plan from what you have watched your agent finish.

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.

This part of the page is interactive and needs JavaScript.

Steps

#StepTimeCheck
1Write the job in one sentence, and the checks that say it is done, in terms a person could run.5 minAt least one check you could do without the agent. If it fails: a job with no check cannot be handed over.
2Cut 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 minEvery 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.
3Make each piece a milestone: when it is done, the agent writes the file and stops for you to look.4 minCheckpoints are at most two hours of agent time apart.
4Set caps in money and hours, and say what the agent does when it reaches one.3 minBoth caps are numbers, and the cap action is "stop and write STATUS.md".
5List what it must ask you before doing: sending, paying, deleting, publishing, installing.3 minThe 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.
6Ask for a log: after each step, one line of what it did, what it assumed and what blocked it.2 minThe brief names the log file.
7Start with the first piece only, and read its output and its log.5 minThe 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.
8At each milestone: read the log before the output, check the file against the piece's check, apply the stop rule, then continue.15 minYou 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.

The brief for a long job

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

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:

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: -
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.

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 for the setup.

Limits

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 · Time-horizons page

Changes

  1. v1.010 Oct 2026first version
Time to do it
30 minutes to brief a job, then about 15 per milestone (our estimate)
Sources
1
Updated
10 Oct 2026
Last checked
11 Oct 2026
esc
↑↓ move↵ openesc closeType a product, a job or a question

Keyboard shortcuts

CtrlK
search everything
/
search everything
gr
reviews: all AI, scored
gg
start here
gu
guides
gw
step-by-step workflows
gt
try-it tools
gs
setup
ga
about
[ ]
previous and next entry, or collection
t
theme: auto, light, dark
?
this sheet