Tasks
Tasks let you capture project work, hand it to the AI agent for implementation, and track what’s done. Each task can link to a thread where the agent works and you steer the result. You can also automate tasks with one-shot or repeating schedules, or a generic webhook event.
How tasks work
Section titled “How tasks work”The sidebar lists two entries for the selected project: Tasks and Automations. Each opens the Tasks dock window in that view. The Tasks view lists tasks that have no schedule or event trigger. The Automations view lists the tasks that do. Automation-only actions, such as Run History, live in the Automations view.
The Tasks view is a flat list, not a board. It shows only tasks that are not Done; done tasks are filtered out of the list entirely.
| Indicator | Meaning |
|---|---|
| Spinner | A working task shows a spinner on its actions button. |
| Status chip | Once the agent sets a status, a chip shows the raw value: Plan, Build, Test, or Review. |
Tasks carry a status field with six values (Ready, Plan, Build, Test, Review, Done) and a working flag. The agent tool can set any status directly.
Adding tasks
Section titled “Adding tasks”- Click the + button in the bottom-right corner of the Tasks view.
- Write a description of what needs to happen.
- Click Add or press Ctrl+Enter (Cmd+Enter on Mac).
The system generates a title from your description. You can’t set the title manually when creating a task.
The dialog in the Tasks view has no trigger editor. To give a task a schedule or event trigger, create it from the Automations view instead: that dialog is titled Add Automation and opens with the Trigger editor expanded. If you collapse the trigger, the Add automation button appears.
Descriptions that work well:
- State the specific change you want, not a vague category.
- Include acceptance criteria or the expected outcome.
- Mention constraints, file paths, or relevant context.
Example:
Add user authentication with email/password login.Validate email format, require 8+ character passwords,show specific error messages for failures,save session tokens securely.Editing and deleting tasks
Section titled “Editing and deleting tasks”- Click a task to open the edit dialog.
- Change the description, tags, or automation trigger and click Save, or click Delete to remove it.
- If you save changes, Tarsk links the task to the selected thread, if any. If you save without changes, Tarsk leaves the task unchanged.
The edit dialog supports manual, scheduled, and event triggers. A task created on the Tasks view starts with manual-only execution; the trigger is chosen when the dialog’s trigger section is expanded.
Tasks can carry colored tags for grouping and filtering.
- The Add and edit dialogs include a tag field. Pick an existing tag. Create new tags in the Manage Tags dialog.
- The Tags menu in the Tasks view header lists every tag with a filter checkbox. Check one or more to show only tasks carrying those tags.
- Choose Edit Tags in that menu to create, rename, or delete tags. Tarsk assigns each tag’s color automatically; you cannot change it.
Task actions
Section titled “Task actions”Each task has a dropdown menu with contextual actions:
Start in a new workspace
Section titled “Start in a new workspace”Creates a new workspace, links the task to it, sets the task to Build + working, and sends the task description as the first message to the agent. The run happens in the background: no window opens, the new chat appears in the side panel, and you open it whenever you want. The task’s actions button shows a spinner as the working indicator.
Run Now
Section titled “Run Now”Available for scheduled and event-triggered tasks. This launches the task immediately in a new thread using the same execution path as automation. For one-shot schedules, the schedule is cleared when it fires, including when you use Run Now.
Mark as Done
Section titled “Mark as Done”Sets the task status to Done and clears the working flag. Done tasks are filtered out of the list entirely.
These actions don’t appear for every task. Run Now shows for automations that aren’t done, including while another run is still in progress. Start in a new workspace shows when the task isn’t done and isn’t already working. Mark as Done is hidden once the task is Done, and hidden for tasks that have a trigger. Run History appears only in the Automations view.
Run History
Section titled “Run History”Opens a dialog that lists the past runs of the task.
Scheduled tasks
Section titled “Scheduled tasks”You can schedule tasks from the Automations view or from chat. The dialog that opens there is titled Add Automation, with the Trigger editor already expanded.
Add/Edit dialog
Section titled “Add/Edit dialog”Under Trigger, choose:
- Once — run at a specific date and time.
- Interval — run every set number of minutes.
- Hourly — run every hour at the minute you pick.
- Daily — run once a day at the time you pick.
- Weekdays — run on weekdays at the time you pick.
- Weekly — run on the day and time you pick.
- Event — run when a webhook event with a matching event key arrives.
Schedules use your browser timezone at save time. Check Paused to disable the trigger without deleting it.
Chat and agent tool
Section titled “Chat and agent tool”You can also schedule from chat by asking the agent to create or update a task with a specific time, for example:
Schedule this task for tonight at 9pmCreate a task to regenerate the changelog tomorrow at 8am
The agent converts that request into canonical schedule fields on the task.
Behavior:
- Scheduled tasks show an automation label in the Tasks view, including the next run for recurring schedules.
- The scheduler scans for due tasks periodically.
- When the scheduled time arrives, Tarsk creates a new thread and sends the task description through the normal chat execution path using the Default model alias.
- Saving a scheduled task requires a Default model alias. Set one under Settings → Default Models.
- Each scheduled fire writes a
task.schedulerentry to Logs (Triggered scheduled taskon success,Failed to run scheduled taskon error). - Workspace clone, branch checkout, and setup-script failures after a trigger are also written to Logs (
task.executionandfeatures.threads.threads.manager). - One-shot schedules clear after they fire. Repeating schedules stay active and fire again on the next due time.
- Run Now bypasses pause and launches immediately. For one-shot schedules, Run Now also clears the schedule.
lastRunStatusupdates to indicate whether the launch request succeeded or failed.
Event-triggered tasks
Section titled “Event-triggered tasks”Tasks can also run from a generic authenticated webhook. Event-triggered tasks store an eventKey, such as door.opened or deploy.finished.
Webhook endpoint
Section titled “Webhook endpoint”POST /api/projects/:projectId/eventsAuthorization: Bearer <project-event-token>Content-Type: application/json
{ "eventKey": "door.opened", "payload": { "doorId": "front" } }Behavior:
- Tarsk verifies the bearer token for the project.
- It finds tasks with
triggerType = "event"and the matchingeventKey. - For each matching task, Tarsk launches a new thread and sends the task description plus the inbound event payload context. A task that is already running still launches; each run gets its own thread.
- The response includes accepted, matched, launched, and skipped counts.
For v1, any external service can call this endpoint as long as it knows the project ID, event key, and bearer token.
Testing with /send-event
Section titled “Testing with /send-event”From chat in a project thread, you can manually fire an event trigger:
/send-event door.opened/send-event door.opened {"doorId":"front"}This uses the same matching and launch path as the webhook, respects Paused tasks, and does not start an agent turn for the command itself.
Working state
Section titled “Working state”When a task’s working flag is set:
- The spinner on the task’s actions button is the working indicator.
- The app polls the server every 2 seconds to pick up status changes.
- When a run finishes, the server clears that run. The
workingflag stays set until every in-flight run for that task has finished. The status stays where it was. - If the linked thread gets deleted, the task automatically moves to Done next time the task list loads.
Plan status
Section titled “Plan status”The agent tool can set a task to Plan status. When the linked thread finishes, the server looks for a file named {task-id}-plan.md in the thread directory. If found, it replaces the task description with the plan content and deletes the file. This is a backend behavior the agent can use; the UI doesn’t have a dedicated “Plan” button.
Agent tasks tool
Section titled “Agent tasks tool”The AI agent manages tasks programmatically with the tasks tool. From chat, you can ask the agent to:
- Add tasks (created in Ready status; the agent must supply a title).
- List tasks to see the current board.
- Update tasks (change status, title, description, or automation trigger). Updating a description does not regenerate the title — the agent must set
titleexplicitly to change it. Title auto-generation is UI-only. - Delete tasks.
- Implement a task in the current conversation.
- RunNow for a scheduled or event-triggered task.
The agent can set any valid status (Ready, Plan, Build, Test, Review, Done) through the tool. The UI has no Ready or Working labels: it shows a status chip for Plan through Review and a spinner for working tasks.
Skill on automated tasks
Section titled “Skill on automated tasks”The add and update actions accept a skillRef, written as //bundled-skill-name for a bundled skill or /skill-name for a project or global skill. When a scheduled or event trigger launches the task, Tarsk prepends the skill invocation to the prompt it sends to the agent, unless the description already invokes that skill. The Tasks UI does not expose this field; ask the agent to attach or clear it.
Last run status
Section titled “Last run status”Automated tasks record:
lastTriggeredAt— the last time automation launched the tasklastRunStatus— one ofsucceededorfailedfor the latest launch attempt
These fields hold summary state, so the task keeps only the latest run. For the full set of runs, open Run History from the task menu in the Automations view. The dialog lists each run with a trigger badge (Schedule, Event, or Manual), a timestamp, and a link to that run’s conversation. When the task has not run yet, the dialog shows “No runs yet. Runs appear here after the task is triggered by its schedule, an event, or manually.”
- An automation can have several runs in progress at once. Each run ties up its own thread, and the task spinner stays on until the last one finishes.
- Check the linked thread if you want to redirect the agent mid-task.
- Descriptions are the agent’s instructions. The more specific the description, the less you need to steer in the thread.
- If a task’s thread disappears, Tarsk marks it Done when the Tasks view loads. To resume the work, ask the agent to set the task to
Readyand implement it in the current conversation, which links it to the current thread. - Scheduled one-shot tasks clear after they fire. Re-schedule or switch to a repeating preset if you want them to run again.
- Paused tasks do not fire from the scheduler, webhook, or
/send-event. Use Run Now to launch manually.