docs/craft/product/scheduled-tasks.md
Let users hand Craft a recurring job and walk away. A Scheduled Task is a saved prompt + schedule pair: at each fire time, the system spins up a fresh Craft session, runs the prompt, and records what happened. From the user's perspective, the task is "Craft, on a timer" — same agent, same skills, same context, just kicked off by the clock instead of a person.
Example tasks a user should be able to set up in V1:
The bar for V1: a user can create a task in the Craft UI, see it run on schedule without their browser open, and click into any past run to see exactly what the agent did.
Lives under /craft/v1/tasks (new section in the existing Craft left nav).
/craft/v1/tasksThe landing page. A table of the user's tasks:
Empty state: a short explainer + a "Create scheduled task" CTA with two or three example prompts the user can start from.
Top-right primary action: Create scheduled task → opens the editor.
/craft/v1/tasks/new and /craft/v1/tasks/:id/editA single form, not a wizard. Fields:
Save → returns to the list. Save and run now → returns to the list and immediately kicks off a run.
/craft/v1/tasks/:idTwo sections stacked:
Pagination: show the last 50 by default with a "Load more" button.
A run is a Craft session. Clicking a run from the history table opens that
session in the standard /craft/v1?sessionId=:id view the user already knows:
the full transcript, artifacts, search calls, approvals, etc. We add a small
banner at the top with the scheduled task name, status while live, and a back link
to the task.
If the run is still running, the session view attaches to the live agent event stream and shows progress without a page reload. The normal Craft input is locked while the background executor is still driving the scheduled prompt, then unlocks after the run finishes so the user can ask follow-up questions in the same session. Runs that are awaiting approval remain read-only until they resume and finish.
No new run-detail page is needed — the existing session view is the run detail view.
The run row shows status failed with the error class (sandbox couldn't start, agent errored, timeout, etc.). Clicking through opens the session view with the failure in context. No retries in V1 — the user can manually click Run now if they want to retry, or wait for the next scheduled fire.
Run status is awaiting approval. The user gets the same in-app notification they get for interactive approvals. Approving from the approvals inbox resumes the run; the run row updates accordingly. (Detail in the approvals doc.)