Learn

Work that starts itself

Turn a prompt into a Project automation that runs on a GitHub event, a Linear issue, a schedule or a webhook, and read what each run did.

View .md

Some work has an obvious moment to start: a pull request opens, a check fails, an issue moves to In progress, Monday morning comes round. An automation is a prompt saved in a Project with the triggers that start it. In this lesson you create one in the console, choose when it fires, learn which events it ignores, and read its run history.

05The same event twice: deduped

kind: githubpull_request.openedkind: schedulecron: 0 2 * * *kind: webhookPOST, signedkind: linearlinear.issue.labeledAUTOMATIONprompt + triggersseen this onerun startedstartedrun startedstartedrun startedstartedrun startedstartedthe same event againstatus: deduped · no new run
Scene. Each fire of a trigger starts one run with the automation's prompt. A repeated delivery is deduplicated; a busy or rate-limited automation skips with its reason.

Write the prompt

1. Open the Project

Open the Project from Projects. Its page lists Automations above its runs, and the chips All, Automations and Runs filter the list.

2. Turn the composer into an automation

Write the prompt in the composer at the bottom of the page, as you would for a run:

Review this pull request for correctness and security. Comment on each problem with the
file, the line and a fix. Approve only when you find none.

Then press the clock button (Automate). A Runs when row appears under the prompt.

Choose when it runs

3. Add a trigger

The Runs when row offers four kinds:

Trigger What starts a run
+ GitHub event An event on the Project's repository, such as Pull request opened, Check suite failed or @rush in an issue or PR comment
+ Linear issue Issue moved into a state or Issue labeled in Linear
+ Schedule A time, such as every day at 09:00 on weekdays
+ Webhook A POST from your own system

GitHub triggers take filters: Only with labels, Only from authors and Only into branches (for example main, release/*). Leave a filter empty to match everything. A schedule takes a preset, or Custom… with a cron expression and a time zone, and previews its next three times. A Linear trigger needs Linear connected under Settings → Integrations first.

Press Create automation. The console opens its editor with the name filled in from the prompt's first line.

4. Copy a webhook secret now

For a webhook trigger, Rush shows the URL and its secret once, after you save. Copy both. Your system starts a run with the secret as its bearer token, and the body reaches the agent as the event:

curl -X POST "$AUTOMATION_WEBHOOK_URL" \
  -H "Authorization: Bearer $AUTOMATION_SECRET" \
  -H "Idempotency-Key: deploy-4812" \
  -d '{"service": "checkout", "alert": "p95 latency over 2s"}'

The Idempotency-Key header stops a retry from starting a second run.

Tune it in the editor

5. Set the agent and the limits

The editor has the name, the prompt and a sidebar:

  • Agent: a Saved agent, or Project's default agent; Read-only (no pushes); and Each run as New run or Wake a session, which continues a session you pick, as it is, instead of starting a fresh one.
  • Triggers: each with Last fired or Never fired, and + Add for another.
  • State: On: triggers fire or Off: triggers are ignored.

Each run gets the event that fired it below your prompt, marked as untrusted, so the agent treats an issue body or a comment as data, not instructions. Run now starts one by hand to test it.

An automation runs as the person who created it, with that person's accounts, in the Project's repository with its apps and secrets. Only its creator or an org admin can edit it; an admin who saves a change becomes its runner.

What fires and what never does

An automation starts work from events other people cause, so it ignores the ones that would let the wrong person, or a loop, start a run:

  • Bots never fire it, including Rush's own GitHub App, so an agent's comment cannot start another agent.
  • Only people with write access count. Mentions, pull requests and issues fire only from people with write access to the repository.
  • Forks never fire it. A pull request or a CI run from a fork is ignored.
  • Merged, not closed. Pull request merged fires on a merge; a pull request closed without merging fires nothing.
  • Agents in Linear never fire it. Linear changes made by an app or a coding agent are ignored, and removing a label never fires.

A matching event is also skipped when the automation is off, the Project is paused, its creator has left the org, the same delivery arrived twice, or the hourly limit is reached. Each automation starts at most 30 runs an hour across all its triggers, and a schedule that starts new runs fires at most once an hour.

Read its run history

6. Check Recent runs

Recent runs in the editor lists each run with what started it (the trigger kind, or Run now), its status and its age. Open one and it is an ordinary run page: the transcript, the changes, the pull request or the answer. Every run an automation starts also appears in the Project's Runs, so your team sees it beside the runs people started.

Next

Automations covers triggers and wakes in depth, and Steer a run as a team shows how teammates follow a run once it starts.