Filters
All event-based triggers (github, linear, webhook) support a filter: block. Filters let multiple pipelines subscribe to the same event type with different criteria — only the pipelines whose filters pass are enqueued.
All conditions in a filter: block are AND-ed: every condition must pass for the pipeline to fire.
filter.repos
Allow-list of GitHub repository.full_name values. Events from repos not in the list are dropped.
filter:
repos: [acme/frontend, acme/backend]Only applies to github triggers.
filter.when
AND-equality checks against nested payload paths. Every entry must match.
filter:
when:
review.state: approved
pull_request.user.login: my-bot # PR must be authored by the botPaths use dot notation to traverse nested JSON. The check is strict equality (===).
filter.not
Reject the event if any entry matches. Useful for loop-breaker guards.
filter:
not:
review.user.login: my-bot # ignore reviews submitted by the bot
comment.user.login: my-bot # ignore comments from the botfilter.mentioned
Checks whether the daemon's configured GitHub login appears as an @mention in the event's text body (comment body, review body, etc.).
filter:
mentioned: true # fire only when bot is @-mentioned (actor mode)
# or
mentioned: false # fire only when bot is NOT @-mentioned (observer mode)Pairing an observer pipeline (mentioned: false) with an actor pipeline (mentioned: true) on the same event type is the standard pattern for tiered response — observe everything, act only when asked:
# pr-review-comment.yaml — observe all inline comments
trigger:
github: [pull_request_review_comment.created]
filter:
not: { comment.user.login: my-bot }
mentioned: false
agent: reviewer
skill: pr-comment-review
# pr-review-comment-mentioned.yaml — act when @-mentioned
trigger:
github: [pull_request_review_comment.created]
filter:
mentioned: true
agent: editor
skill: pr-comment-actfilter.assignee
Checks payload.assignee.login. The special value bot resolves to the daemon's configured GitHub login.
filter:
assignee: bot # only fire when the event is assigned to the botCombining filters
All conditions in the block must pass simultaneously. This example fires only for approved reviews on bot-authored PRs, submitted by a human (not the bot itself):
trigger:
github:
- pull_request_review.submitted
filter:
when:
review.state: approved
pull_request.user.login: my-bot
not:
review.user.login: my-botSee also
- Event Matcher — planned richer routing (per-repo agents, typed payloads,
filter.branches,filter.authors)

