Triggers
Run agents on schedules or matching events.
An agent has at most one trigger. Without one, it runs only when you start it from the dashboard or API. Each run starts a new session that stays open for follow-ups unless the agent sets conversation.interactive to false. For event triggers, the session's first message includes the event.
Schedules
Runs at 09:00 UTC on weekdays. schedule is a 5-field cron expression (minute, hour, day of month, month, day of week) in UTC:
Runs every 6 hours, at 00:00, 06:00, 12:00, and 18:00 UTC. If Ellipsis is unavailable when a run is due, that run is skipped and the next one starts on schedule.
Pull requests
Runs on each push to a non-draft pull request into main that changes a matching path, including when the pull request opens.
| Event | When it fires |
|---|---|
opened | Opened, reopened, or marked ready for review |
pushed | New commits, including when the pull request opens |
merged | Merged |
closed | Closed without merging |
review_submitted | A review is submitted |
commented | A comment is added |
Branch pushes
Runs when a push to the default branch or a release/ branch changes package.json or the lockfile. Push triggers have no on field.
Issues
Runs when someone opens an issue labeled bug in api-repo.
CI checks
Runs when a check named lint or starting with test fails on the default branch or a release/ branch of api-repo. A check is a GitHub Actions job or a status another CI app reports; failed covers the failure and timed_out conclusions. A cancelled, skipped, or neutral check never fires.
namesmatches check names exactly or by a prefix ending in*; omit it to match every checkbranchis the branch the check ran on; a check on a fork's pull request has noneforis the commit's author, or the pull request's when the check is attached to one, so an agent's own commits don't count unlessbotsincludes it- Several checks failing on one commit start one session per agent, not one per check
The session receives the check, its output, and the file annotations GitHub holds for it, plus the pull request it belongs to. For a GitHub Actions check it names the workflow run, so the session can read the failing job's log with gh.
The Ellipsis GitHub App needs the Checks permission on your installation. GitHub prompts the installation's owner to accept it; until then, Ellipsis receives no check events.
Releases
Runs when a release whose tag starts with v is published in api-repo, skipping prereleases. A draft fires when it is published, not when it is saved; edits, deletions, and unpublishes never fire.
tagmatches tag names exactly or by a prefix ending in*; omit it to match every tagprerelease: truematches only prereleases andfalseonly full releases; omit it to match bothforis the release's author, so a release cut by CI or a release bot needsbotsto include it
The session receives the release's tag, name, notes, target, author, and URL, and can read the release and the ones before it with gh.
Repositories and authors
Filters only decide which events match. They don't grant access or choose which repositories the session checks out; the environment does.
- An empty repository list matches every installed repository
- Branch filters accept exact names, prefixes ending in
*, anddefault - Labels match when any listed label is present
- Paths are globs of files to match;
!patterns aren't allowed teamslists GitHub team slugs of the installed organization,platformfor@org/platform; the author must passusersand be on one of the teams, and bots never are- Every matching agent runs
A team named in teams must exist when the file syncs; a missing team is a sync error, and a personal account installation can't use teams. Membership is checked against GitHub each time an event matches, and members of child teams count.
Linear issues
Runs when a person creates a Linear issue; issues created by bots don't count. The session receives the issue. Name the repositories it needs in session.environment.
Slack channels
Runs when someone creates a Slack channel. The session receives the channel's name and purpose. To answer messages instead, use Slack mentions.
Sentry alerts
Runs when an issue alert fires in the api Sentry project. on accepts issue_alert and metric_alert; omit projects to match every project. A sentry.yaml file, when present, replaces these triggers.
Mentions
@ellipsis mentions are configured separately, in GitHub, Slack, and Linear handler files.