Skip to content

Queue agents

The queue is the last tab of the Issues dialog: click Issues at the bottom of the sidebar, then Queue. It lists the scheduled agents of every project, each with its time, its name, and its state, agent and place. A failed entry is red, a missed one yellow and a started one green. Typing filters the list.

search projects, workspa…web-shopProjects▾workIssues·web-shopweb-shop(3AllGitHubGitLabShortcutLinearJiraPlaneAsanaQueueorders-api›▾◆personalblog(1)2026-10-19 10:00#482 Fix the login formpending·claude·web-shop›fix-…dotfiles(12026-10-19 10:01Update the docsstarted·pane closed·claude·w…2026-10-19 10:02Fix logoutfailed·codex is not installed·…+ New2026-10-19 10:03Review the testsmissed·claude·web-shop›fix-l…Workspaces▾main›bash›bash+ Tab▾feat/dark-m›bash+ Tab▾feat/gift-c›bash+ Tab+ Newenter edits it·start now runs it at oncenewstart nowremoveclear startedcancelIssuesFilesTODOSettingsUsageQuit
See what is scheduled and what ran while you were away.

In Issues, click schedule beside start. Choose the agent and destination as usual, then enter the time. Once saved, the dialog comes back on the Queue tab with the new entry. GitHub, GitLab, Shortcut, Linear, Jira, Plane and Asana issues use your configured prompt template.

For a free prompt, click new on the Queue tab and type the prompt. Then choose When, Where, the Agent and its Mode: each is a list that opens below it on a click, or with Space, ↑ or ↓ when it has the keys. Pick an option with a click or the arrows and Enter; typing filters a long list, such as the places. In a repository root, Open in chooses a new tab or a new worktree, and a new worktree asks for its branch beside it. A workspace always gets a new tab. An issue already supplies its usual branch name. Once you have accounts, an Account list beside the agent chooses the account it starts with (the one in use until you pick another); the entry keeps it, whatever account is in use when it runs, and fails and says why if that account was removed meanwhile.

search projects, workspa…web-shopProjects▾workweb-shop(3)orders-api(2)Schedule an agent▾◆personalPromptblog(1)Fix the login formdotfiles(1)+ NewWhenin▾Workspaces2hours▾▾mainWhereweb-shop›main▾›bash›bashOpen innew tab+ TabAgentauto▾▾feat/dark-mode›bashModedefault▾+ TabTimes use Etc/UTC. Queued agents always accept their folder trust▾feat/gift-cardsquestion.›bash+ Tabschedulecancel+ NewIssuesChangesFilesTODOSettingsUsageQuit
Choose a kind of time first, then its values.

When asks the kind of time first, then shows only the values it needs on the row below:

When Values It starts
at a clock, 14:30 The next 14:30, today or tomorrow.
tomorrow at a clock Tomorrow at that time.
on a date, 2026-10-20, and a clock That date at that time.
in a number and minutes, hours or days After that delay.
Claude reset, Codex reset none At the next reset of that agent’s five-hour plan window.

The commands take the same times as text: 14:30, tomorrow 9:00, 2026-10-20 09:00, in 30m, in 2h, claude reset and codex reset.

Clock times use the zone shown in the form, supplied by the client that opened it, including a remote terminal or browser. Dates use that zone’s daylight saving rules. A local time that does not exist or occurs twice is rejected; choose another time or a delay. A time such as 02:30 that has already passed today means tomorrow, even on the day the clocks change. The entry is saved as an absolute UTC instant.

A reset choice runs the existing plan usage probe on the server when you save. It freezes the returned reset time; it does not keep polling or follow later changes to the window. If the probe fails or reports no future five-hour reset, the form shows the reason and keeps your text.

Press Enter or click schedule to save; Esc or cancel closes the form (with a list open, Enter picks and Esc closes only the list). Click a text field to edit it, use the arrow keys, Home, End, Backspace and Delete, or paste text. Tab and Shift+Tab move between the fields and lists. A line break in a prompt from a template or --prompt shows as ↵.

Queued launches always accept the agent’s folder trust question, even with accept_trust_prompts off. This lets unattended starts proceed. The form states this before saving. Immediate starts keep your global trust setting. Agent approval modes remain the ones you selected. Queued launches submit their stored prompt automatically, even when automatic submission for immediate issue starts is off.

The server starts every due entry, with no concurrency limit. Entries at the same instant start in insertion order. Each uses the normal worktree, tab and agent launch path and leaves the active pane selected. A toast and desktop notification announce success or failure.

The server must be running, with its session opened at least once after a restart, by a window or by cornercase start-server. Closing the UI leaves scheduled work running. The queue does not wake a sleeping machine or start a stopped server.

An entry more than ten minutes late becomes missed and waits for you. Waking or restarting within ten minutes still starts it. Select an entry to act on it: start now starts a pending, missed or failed one at once, and remove removes it; the notice that follows has undo for six seconds. Click a pending, missed or failed row, or press Enter on it, to edit and reschedule it. An entry shows starting while its worktree or agent is being prepared; it cannot be cancelled or edited then.

Started entries stay until clear started or remove removes them, both undoable from their notice. Click one to close the dialog and jump to its pane while it is still open in that server. After a restart, its historical pane link is unavailable; it cannot point to a different pane with the same id. Removing a started entry does not stop its agent.

The agent command, mode, prompt and destination are captured when scheduled. Editing the prompt or time keeps that agent and mode, even if their settings changed or a custom agent was removed; choosing another agent or mode captures its current command. A closed project or workspace, a workspace that cannot be uniquely identified after restart, or a missing executable fails with a reason. If the server stops partway through starting, the entry asks you to check its workspace before retrying.

Terminal window
cornercase queue add --at 'in 2h' --agent claude --prompt 'Fix the login form'
cornercase queue add --at 'tomorrow 9:00' --agent codex --worktree fix-login --prompt 'Fix the login form'
cornercase queue add --at 'claude reset' --agent claude --issue https://github.com/acme/shop/issues/482
cornercase queue add --at 14:30 --agent codex --source linear --issue ENG-123 --workspace 12
cornercase queue add --at 14:30 --agent codex --source asana --issue 1205551234567890 --workspace 12
cornercase queue list
cornercase queue list --json
cornercase queue edit 1 --at 'in 3h' --prompt 'Fix logout too'
cornercase queue edit 1 --name 'Login follow-up'
cornercase queue run 1
cornercase queue remove 1

add prints the entry’s persistent id. --workspace selects an open workspace; --project selects an open project root; --worktree selects or creates a branch in that project. Without a destination, a prompt uses the current workspace and an issue uses its usual worktree when the project is a repository root. Use --source for ambiguous keys and self-hosted tracker URLs.

An issue URL must belong to the project: GitHub and GitLab issues are read from the project’s own repository, and Jira, Plane, Linear, Shortcut and Asana ones from the site or workspace you are connected to, so a URL of another repository or site is refused instead of starting the wrong issue. An Asana link works in its old (/0/<project>/<task>) and new (/1/<workspace>/project/<project>/task/<task>) forms and must name a task of the account you are connected to. A bare key goes to the only tracker that can read it: #7 to the project’s GitHub or GitLab, sc-482 to Shortcut, a number to the repository or Shortcut, and keys such as ENG-7 to Linear, Jira, Plane or Asana. A bare number is never taken for Asana: use --source asana to read a task by its id. When two trackers could read it, add --source. --mode names a configured agent mode, --account AGENT=ACCOUNT the account that agent starts with (AGENT= for its own login; without it, the one in use when it runs; edit changes only the agents it names, and cannot set one back to the one in use when it runs: remove the entry and add it again), and --name sets the entry and tab name. edit can omit --at to keep the exact scheduled instant; add needs --at and either --prompt or --issue. Editing an entry’s --issue moves it to the new issue’s branch, unless you also pass --worktree. add, edit and list support --json.

queue.json lives next to session.json, with its own format version. For a custom socket whose session is server.json, the queue is server.queue.json, keeping different servers in the same folder separate. Its entry ids survive restarts and are not reused when an entry is removed. The server saves changes after they settle and flushes the queue on shutdown. A missing, corrupt or unsupported-version file starts an empty queue. An unreadable file is kept unchanged until you change the queue.

The queue is independent of the TODO list. Entries run once; recurring schedules are not supported.