Overnight Autopilot
A queue of tasks that runs unattended in worktrees — with your checks, up to five attempts, a backup agent, strict rules for “ready” and a frozen report in the morning.
The autopilot turns idle hours into reviewed work. You fill a queue in the evening; PaneScale works through it, one task at a time, each in its own worktree from the same starting point. Your working copy stays untouched. In the morning you review diffs and decide what to keep — nothing is merged or pushed before you click.
Open it from More → Overnight Autopilot, from the tasks board, with the command palette, or by saying “open autopilot”. The header says it plainly: Local · working tree untouched.
1. Choose the project
Pick the repository the night works in. PaneScale checks it right away and tells you where each task will start — “from the last commit (a1b2c3d on main)”, or “from the current state including uncommitted changes” if you turned that on. A folder without Git can’t be used: the autopilot needs worktrees.
2. Fill the queue
Tasks come from three places:
| Source | How |
|---|---|
| Your own | Task — a title and a description of what should happen and how to tell it is done |
| The board | From the board — open cards of this project; cards marked Tonight are preselected |
| GitHub issues | GitHub issues — open issues loaded with your local gh CLI, optionally filtered by label |
Tasks run in the order of the list: move them up or down with the arrows, edit them with the pencil, remove them with ×. The queue is saved, so you can prepare it during the day.
3. Set the checks
Checks decide whether a task is ready. PaneScale proposes them from your package.json — build, tests and type check as required, lint as optional. Edit the command, switch between Required and Optional, Add check, or Reset to detected. At least one required check is needed to start. See Checks & integrity.
4. Choose the agents
| Setting | Meaning |
|---|---|
| Lead agent | Claude Code or Codex, with an optional model (empty = the CLI’s default) |
| Backup agent | Another agent that takes over — or No handoff |
Backup agent
With a backup, the lead works the first half of the attempts and the backup the rest — for example with four attempts: two for the lead, two for the backup. The backup continues in the same worktree with the feedback from the last attempt: failing checks, the diff so far and what the lead reported. Without a backup, every attempt uses the same agent, each with the feedback of the one before.
What the agent gets
What the agent gets shows the exact prompt of the first attempt for the first task: that it works unattended in a separate copy of the repository and nobody will answer questions until morning, the task, the checks it must pass, and the rules. Retries add the failure output and stricter rules — fix the real cause, never special-case tests, keep the useful changes already in the worktree.
5. Set the limits
Limits apply per task:
| Setting | Values |
|---|---|
| Attempts per task | 1 to 5; every retry gets the last failure as feedback |
| Time per attempt | 15 minutes, 30 minutes, 1 hour or 2 hours |
| Token limit per task | Stops the task when its measured usage exceeds the limit (where the CLI reports usage) |
| Max. changed files | An attempt that changes more files counts as failed |
A loop guard watches the attempts: if the same failure happens twice on the same state, further attempts wouldn’t change anything, and the task stops with that reason. Token Guardian rules apply as well.
6. Schedule
| Option | Meaning |
|---|---|
| Start now / At a time | Start immediately, or at a time you pick |
| No new attempts after | A cut-off time; tasks not started by then are skipped |
| Keep computer awake | Prevents standby while the night runs; the display may still turn off |
| Include uncommitted changes | Worktrees start from your current state instead of the last commit |
| Prepare draft PR | Ready tasks get a title and description for a pull request — published only if you click in the morning |
PaneScale has to be running at the scheduled time. If it was closed or the computer was asleep, the night does not start on its own later: it shows Start missed and waits for your click.
7. Preflight
Before the night starts — or whenever you click Check now — a preflight checks that it can actually run. Each row is ok, warn or blocked; anything blocked stops the night before it wastes a minute.
| Check | Blocks the night when |
|---|---|
| Queue | It is empty |
| Repository & HEAD | The folder isn’t a Git repository or HEAD can’t be resolved |
| Git identity | user.name or user.email is missing, so commits would fail |
| Free disk space | Less than 2 GB is free |
| Check profile | No required check is configured — “ready” must be proven |
| Agents | None of the selected agents is installed; warns when one isn’t on the PATH |
| gh CLI | Warns when missing — issues and draft PRs won’t be available |
| Long paths | Warns when Windows long paths are off, since deep worktree paths can hit the 260-character limit |
Click Start night or Schedule night.
During the night
The night goes through its phases — Scheduled, Preflight, Baseline, Running, then Done, Stopped or Failed. First the checks run once on the unchanged starting point: the baseline. Then each task:
- gets a worktree under
panescale/autopilot/…and your dependencies linked in, - runs attempts until it is ready, runs out of attempts, hits a limit or the cut-off,
- runs the checks after every attempt — a failing required check gets a second run — and the integrity scan.
Each task card shows what the agent is doing right now and, under Attempts, checks and log, every attempt with its agent, verdict, reason, tokens, check results and the agent’s summary. Stop night ends running agents; finished tasks and their worktrees are kept. If PaneScale is closed during a night, the night is marked as interrupted when it starts again — finished tasks stay.
When a task counts as ready
“Ready” is strict. A task is ready only when:
- all required checks pass,
- there is no regression compared with the baseline,
- the integrity scan found no warning — no deleted tests, no loosened configs,
- and the agent ended its attempt cleanly.
Every task ends with one verdict:
| Verdict | Meaning |
|---|---|
| Ready | All of the above |
| Needs review | Checks passed, but there are integrity warnings or the agent didn’t end cleanly — you decide |
| Failed | Required checks failed or a regression was found |
| No change | The agent changed nothing |
| Not solvable | The agent judged the task impossible and changed nothing |
| Limit reached | Time, tokens, changed files or the loop guard stopped it |
| Stopped / Aborted | You stopped the night, or the agent aborted |
Morning report
When the queue finishes, PaneScale freezes a report: one sentence — “4 of 6 tasks done” — the counts of ready tasks, tasks to review and tokens with attempts and cost, and per task every attempt with its checks. Every number comes from recorded runs. The report is saved as JSON; Report folder opens it, Save report stores a copy where you want.
For each task:
| Action | What it does |
|---|---|
| Diff | The full change of the task |
| Adopt into working tree | Applies the change as a patch to your working copy, without a commit — with a checkpoint first |
| Undo adoption | Restores your working copy exactly; files you edited since are kept |
| Draft PR | Publishes a ready task as a draft pull request — see below |
| Requeue | Puts it back into the queue for another night |
| Discard | Removes the task’s worktree and branch |
Remove leftover worktrees cleans up all worktrees and branches of the night; changes you adopted stay in your working copy.
Draft pull requests
Publishing is never automatic, and it is the only thing the autopilot does that reaches the network. Draft PR shows exactly what will be pushed: the branch, the base, title and description. Approve and publish issues a signed one-time approval, pushes the branch without force and opens a draft pull request with your gh sign-in. Nothing is ever merged.
The autopilot only pushes its own branches — panescale/autopilot/… and panescale/grid/… — and never your default branch.
History
Nights lists previous runs with their summary, phase, project and date. Open one to see its report again; New queue goes back to planning.