Slack triggers
slack.mention fires when the bot is mentioned in a channel where it is present. Direct messages, slash commands, and interactive components do not produce this trigger.
.paseo/workflows/slack-help.yml:
name: slack-help
on: slack.mention
max_runtime: 1h
filters:
workspace: T01234567
channels: [C01234567]
from_users: [U01234567]
steps:
- id: answer
environment: dev
max_runtime: 30m
idle_timeout: 5m
agent: codex
prompt:
- text: |
Answer with hub.reply, then call hub.finish_execution.
${{ paseo.prompt }}
allow_outputs:
- { type: slack.reply, max: 1, required: true }
Slack filters use IDs, not display names or Hub connection slugs. from_users matches the author, workspace the team, and channels the channel. pattern is a required prefix after the mention; contains is its legacy alias and has the same prefix behavior. All filters must pass.
The reply posts in the triggering thread. A root message gets a thread; a threaded message stays there. slack.reply grants hub.reply, but does not add reply instructions to the prompt.
Leading declared inputs follow the mention:
@Isee repo=project agent=claude investigate the failed sync
Hub consumes consecutive declared headers and exposes the remainder as ${{ paseo.prompt }}. See Workflows.
Find your Slack IDs
| Filter | Where to copy it |
|---|---|
workspace | Open Slack in a browser. The team ID is the T… segment of the URL. |
from_users | Your avatar → Profile → ⋮ → Copy member ID. Member IDs start with U. |
channels | Channel name → About. The channel ID is at the bottom of the panel and starts with C. |
Guided setup fills workspace from the Slack app you connected and asks you for your member ID, so a generated starter already carries both.