Slack connection kinds
In the web app, Apps → Connect Slack offers three options. The CLI mirrors them withkeystroke connect slack --kind <kind> (no --kind opens the same chooser):
The Keystroke Slack App and the
slackbot catalog slug are the same thing. The Apps page and
chooser say “Keystroke Slack App”; keystroke credentials list and imports like
@keystrokehq/slackbot/actions show the underlying catalog slug slackbot. keystroke connect slackbot still works and opens the same dialog as connect slack --kind keystroke.Custom Slack App tools use the same package and credential key. Keystroke and custom installs
both materialize
slackbot credentials; the OAuth connection behind the instance (gateway slack
vs slack-app:<handle>) is what changes the bot identity. Import
@keystrokehq/slackbot/actions for either. Existing custom apps may need a reinstall to pick up
scopes such as chat:write.public or users:read.email.--kind keystroke). For a dedicated agent identity, use the Custom Slack App flow. A Personal
Slack Account connection does not register a gateway workspace
(keystroke channels accounts --platform slack stays empty).
Example requests
Ask your coding agent which agent to put in Slack and how it should respond.“Put our support agent in the #support channel and have it reply only when mentioned.”
“Connect the data analyst agent to #data so the team can ask questions there.”
“Give Delbert its own Slack handle so it can be mentioned in any channel.”
Connect agents to Slack (web)
Each agent’s detail page has an External Channels panel (right side).1
Open the agent
Go to Agents and select your agent. Open the External Channels panel (configure rail).
2
Choose Keystroke app or custom app
Click Connect. Pick Use the Keystroke Slack App (channel bindings as @Keystroke) or Create your own Slack App (one agent ↔ one custom bot identity).
3
Keystroke path — add a channel
If the Keystroke Slack App isn’t connected yet, complete OAuth first. Then Add to a Slack Channel to create a channel (default
#agent-slug) or pick an existing one.4
Custom path — wizard
Follow the custom app wizard (name + handle → Slack manifest → paste Client ID / Secret / Signing Secret → install). The agent binds to the whole app automatically.
5
Message the agent
Message the bound channel (Keystroke) or mention the custom bot. Review runs in History by filtering Type to Agent.
?rail=configure&slack=keystroke or slack=custom on the agent URL (or keystroke channels setup <slug> --custom).
Channel access and credentials
Once an agent is bound to a Slack channel (or custom app), anyone who can message it uses the agent’s tools and credentials — not their own. Only bind agents to channels whose members you trust with everything the agent can do.Manage Slack from the CLI
Prefer the happy path for the Keystroke Slack App:keystroke auth login first. Hosted sessions are already authenticated and must use --print-url, since they cannot open a browser.)
Verify the gateway workspace registered before binding:
channels setup creates the Slack channel when needed (or binds an existing one with the same name), then binds the agent with Mentions + follow-ups (same default as the web UI).
For a custom @handle, open the agent wizard (user finishes in the browser):
Advanced primitives
Reply behavior matches the External Channels UI:defineAgent({ slug }) after deploy (or the platform agent id). See the CLI reference.
Connecting the Keystroke Slack App registers the gateway for your organization; you don’t need to add Slack to keystroke.config.ts.
Other external channels
Additional external channels listed below will be added over the coming weeks. You can request specific channels by contacting us at team@keystroke.ai and we will add them promptly.- Microsoft Teams
- Telegram
- Linear
- Discord
- Google Chat
Next steps
Run agents
Prompt the same agent directly while testing channel behavior.
Agent runs
Inspect Slack-started agent sessions in History.
Credentials
Connect OAuth credentials used by tools and integrations.
Build agents
Tune the agent prompt and tools for channel use.