Start a run
Say it the way you would ask for any task:“Take the CSV export on autopilot.” “Fix the login redirect, end to end, without me.”The agent sizes the task as usual, says what will happen and where the run will end, and starts. Asking for autopilot covers that one task only. Where the run ends depends on Letting the agent ship:
Below
merge the agent never merges, and the pull request is where you look at the result. If you
cannot answer the questions a run stops on, read Without stops.
What happens during a run
The same steps as without autopilot, in the same order: understanding the task, a plan or a design, the change itself, a review, the checks, and recording what the project should remember. Two things are different:- The review is done by a second agent that did not write the code, so the author does not review its own work.
- Fixing has a limit. When the review finds a serious problem or the checks fail, the agent fixes it and has it looked at again — at most twice per run. A third attempt is refused by Jig itself, and the run stops instead of going round in circles.
Where it stops
A run stops only where a human is needed. The agent tells you in plain words what it needs; answer it, and it carries on from where it stopped.
After you answer, the agent continues, and it gets two fresh attempts at fixing: your answer gave
the run a new direction.
The report
At the end — or at a stop — the agent shows the run’s report: which stages it went through, each fixing attempt and why, each stop and its reason, and how it ended. Withagent.git: pr the report
is also in the pull request’s description. You can see it any time with:
jig status marks a task that is running with autopilot=on, and one waiting for you with
autopilot=stopped.
Watching a run
To follow a run without asking the agent, open the status page — the agent offers it when the run starts, or runjig status --open (Seeing where things stand).
While the run goes on, the page shows the stage it is in, for how long, and how many of its two
fixing attempts it used. When it stops, a card at the top says so, with the agent’s question and
when it was asked. The page keeps itself up to date: leave it open.
Without stops
The stops above ask for decisions a developer makes. If you build through the agent without being one, you may not be able to answer them — and you would rather have your change deployed. Then add two lines to.ai/config.local.yaml in your project (create the file if it is not there):
.ai/config.yaml. The first lets the agent merge its pull request; the second lets a run
go on without asking you anything. Hand over a task as usual — “take the CSV export on
autopilot” — and the agent comes back when the change is merged, or with a pull request and the
reason it stayed open.
What the agent decides for you
Where a run would stop and ask, it takes the safe choice instead and writes it down in the pull request, in plain words:
Read these sections in the pull request, even after it merged: they are everything the agent chose
without you. The run’s report (
jig task autopilot <task-id> report) lists them too.
When it merges
Only when all of this holds:- your project’s automatic checks (CI) ran on the pull request — at least one — and every one
passed, within 30 minutes (change it with
agent.ci_timeout: <minutes>in the same file); - the review found nothing serious left, and nothing changed after the review;
- the pull request is not a draft, and it is exactly the change the agent sent.
What it never does
- It never merges past your repository’s rules — no admin override, no “merge later by itself”.
- It never dismisses a serious review finding, and never skips the review or the checks.
- It never force-pushes, deletes branches or data, or rewrites history.
- It never merges a draft, a pull request with a failed check, or one no check ran on.
- It never releases a major version of a whole feature (an epic) by itself: that pull request opens as a draft that says “Needs a human: major release?”.
Why a pull request can stay open
Many repositories protect their main branch: a required human review, a required check, a list of who may merge. The agent obeys that protection — it is the limit your team keeps over one person’s settings. When the repository refuses, the pull request stays open, and the agent tells you why:Which tasks of a phase may start
A specification’s roadmap groups its items into waves: the items of one wave can be worked on at the same time, and a wave starts only once everything in the waves before it has been merged. To see where a phase stands, run:--format tsv prints the same answer for a script to read.
Running a whole phase
A run can take a phase of a roadmap instead of a single task:“Run phase 4 of the autopilot spec on autopilot.”The agent becomes a coordinator. For each wave of that phase it files the wave’s tasks, gives each one its own folder and its own agent, and those agents work at the same time. The coordinator writes no code itself: it opens each task’s pull request, keeps the merge queue, and after every merge ticks the roadmap item off and brings the other branches of the wave up to date. A wave finishes; then the next one starts. The session you ask in becomes the coordinator, and it holds the epic branch for the whole run, so ask in a checkout that is free to sit on that branch. Your main one is the natural place: the task records of the whole phase are kept where the coordinator started them, and that is where
jig status and the status page read them. A worktree
of the epic works too when the main checkout is busy with other work — the phase’s tasks then belong
to that worktree, so ask there for the status of the run as well.
For this it needs two things: permission to open pull requests (agent.git: pr or merge) and
a specification built on an epic branch. Without either it says
so and offers to run the phase’s tasks one at a time instead.
How many at once is yours to choose, in .ai/config.local.yaml:
jig spec plan prints
what is left — “may start now: a, b (1 of 2 slots free)” — and the status page shows the phase,
its waves and its free places while the run goes on.
Where you answer. A question from any task of the phase comes to you in the coordinator’s
session, not the task’s — the status page says so too. Questions from one wave arrive together,
in a single message. The wave being worked on finishes either way; it is the next wave that
waits for your answer. Without stops (above) nothing is asked: a task that
could not be finished becomes a draft pull request, and the phase run ends there with a report,
leaving the next wave to you.
Why a change is reviewed again. Every time another task of the wave lands, the branches
still open are brought up to date with it. When what arrived is more than the roadmap tick, the
task’s review no longer covers what the branch now contains, so it is reviewed again before it
ships. That is the cost of an honest review, not a wasted step.