Skip to content
Esc
↑↓navigate↵open⌘Jpreview
On this page

Drafts

Save a task for later with dray draft, list saved drafts, and start or remove them.

A draft is a task saved for later: a prompt plus the picks it will start with, and no session behind it yet. Nothing runs and no worktree exists until it starts. It is the same thing ⌘S saves from the new-task composer.

Drafts show in the sidebar’s drafts view. Click Show drafts (the dashed circle beside the project filter) to see them. From there you can open a draft, edit it and send it yourself.

Save a draft

dray draft new "Add retry to the upload client. It should back off up to 30s."

Prints the draft’s id.

Flag What it does
--project <path> The repo it will run in. Defaults to the repo you are in, then the calling session’s project.
--model <alias> The model. Defaults to the calling session’s.
--effort <level> low, medium, high, xhigh, max or ultra.
--harness <name> claude_code, codex, pi, fx or grok.
--fast Run at the agent’s faster tier once started.
--base <session|ref> Start its worktree from existing work once started: a session id, a branch, or any git ref. Committed work only.

The picks inherit from the calling session exactly as dray session new does. A draft made here always starts in its own worktree. A --base that cannot be found is refused when you save, and checked again when the draft starts.

List drafts

dray draft ls
dray draft ls --all --json

One line per draft, newest first: id, agent, model, then the first line of the prompt. [checkout] marks a draft that will start in the project’s own checkout instead of a worktree; only a draft saved that way in the app does.

Flag What it does
--all Every project, not just this one.
--project <path> List this repo instead.
--json One JSON array, for scripts.

Start a draft

dray draft start <draft-id>

Starts the draft as a session and takes it off the draft list. Prints the new session’s id and a line like Started "…" in worktree calm-owl. Run from inside a session, the new session is nested under the caller, and the depth limit applies. If the start fails, the draft goes back on the list.

Remove a draft

dray draft rm <draft-id>

Deletes the draft.

Limits

  • A draft made with dray cannot be edited from the CLI. Edit it in the app.
  • No flag makes a draft start in the project checkout.