> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bepurple.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduled sessions

> Schedule a build for later from Phase 2 or the new-session page. Manage everything from the sidebar's Scheduled panel.

A scheduled session is a deferred run that p0 fires at a chosen time. You can schedule a brand-new session from the new-session page, schedule a build from Phase 2, or schedule a retry after hitting a rate limit. Everything lives in one **Scheduled** panel.

## How to schedule one

Three entry points open the picker.

* **From the new-session page.** Click **Start later…** next to the primary Create button. Schedules a future session that runs your prompt.
* **From a Phase 2 spec.** Use the split-button caret next to **Go!** to pick a time. Schedules a `start-build` that kicks off when the time hits.
* **From the rate-limit card.** Click **Schedule retry for \<reset time>** or **Schedule retry for later…**. Schedules a retry of your last message.

Each entry point opens the same picker. It's a two-column popover with today plus the next six days on the left, and hours 0–23 on the right. Past hours on the **Today** row are disabled. The resolved time must be at least 60 seconds in the future. For spec-driven new sessions, the popover also shows an **Also start building when this fires** checkbox (defaults on).

Once scheduled, Phase 2 shows a banner: **Scheduled to build at \<time>** with **Run now**, **Cancel**, and **Reschedule** actions. The sub-line reads: "Will run when p0 is open at that time."

## Seeing what's scheduled

The sidebar has a **Scheduled** entry with a badge showing the number of pending runs. Clicking it opens a dialog titled **Scheduled**. The description reads: "Scheduled runs across all sessions. Runs only fire while p0 is open — overdue runs catch up on next launch."

The panel has two sections.

* **Upcoming.** Pending rows across all workspaces, soonest first.
* **Recent.** Fired, failed, and cancelled rows from the last seven days, newest update first.

Each row shows a kind icon (build / retry / new-prompt), the target session name, the scheduled time, a status badge, and inline actions.

* **Pending.** Run now · Reschedule · Cancel.
* **Firing.** Spinner only — no actions.
* **Fired.** Open session.
* **Failed.** Reschedule · Open session. Hover the badge for the failure reason.
* **Cancelled / Auto-cancelled.** Read-only. Auto-cancel reason shows on hover when present.

Auto-cancellation happens when the row's preconditions vanish before it fires. Examples: the session is archived, the spec went empty, or you signed out. The badge changes to **Auto-cancelled** and the reason surfaces on hover.

The rate-limit card itself only renders in place of a failed assistant turn when p0 classifies the stream error as a rate limit (see `rate-limit-turn-card.tsx`). You won't see those CTAs during a normal turn.
