Skip to content

Run agents from Slack

Connect a Slack workspace, start agent sessions from messages, and control who can follow up and what appears in the thread.

Mention @dreadnode with a task in Slack. The agent runs on your Dreadnode runtime, reports progress in the thread, and links to the full session. Replies continue that session with your permissions, capabilities, secrets, and billing.

You need an organization owner to connect Slack and permission to create and install an app in your Slack workspace. Your Slack email must match your Dreadnode account’s email, and that account must belong to the connected organization.

Open Org Settings → Integrations → Slack as an organization owner. Each organization connects to one Slack workspace; a workspace can connect to only one organization in the deployment.

  1. Choose Copy manifest, then Open Slack apps. Create an app From a manifest, select your workspace, and paste the YAML. Complete any workspace approval required to install the app.
  2. Under OAuth & Permissions, install the app and copy its bot token (xoxb-). Under Basic Information → App-Level Tokens, generate an app-level token (xapp-) with connections:write.
  3. Paste both tokens into Dreadnode and choose Connect. Dreadnode verifies them before saving. If verification fails, the error identifies the token and Slack’s reason. Connecting can last up to a minute.

Store the tokens in your secret manager; Dreadnode does not reveal them after saving. The connected section shows the workspace, app handle, who connected it, and the last event. If the app has been renamed in Slack, use the displayed handle below.

Invite the app to a public or private channel, then send:

@dreadnode summarize the findings in my project

The app must be a channel member to receive your mention. You can also send it a direct message. Group DMs are unsupported.

By default, Dreadnode chooses the workspace and project from your most recent accessible session in this organization. If you have no recent project session, it uses your default workspace and project. The model comes from your recent session, or the organization’s model catalog when there is no recent model.

To choose a project, put its workspace and project keys before the task:

@dreadnode project:security/recon summarize the findings

Replace security/recon with keys you can access. A bare project:recon selects a project in your recent workspace. You can also place agent:, capability:, and model: options before the task, using names available in your organization. Options stop at the first word of the task and apply only when starting a session. Follow-ups keep the thread’s existing session and ignore these options.

Slack attachments are not sent to the agent. Add files through Dreadnode and use the Slack message to describe the task.

With Thread detail → Full activity, tool steps update in a grouped progress view while the agent works. File steps name the file, simple commands name the executable, and recognized results add short outcomes such as counts or confirmed file changes. Arbitrary tool output and file contents stay in the full session.

The answer appears when the turn ends. Long answers continue in another message marked (continued). If Slack stops accepting updates, the reply says so and includes View session to read the full result on the platform. View session opens the session in Agents → Sessions, where you can review the conversation and execution details. If the agent returns no answer, the reply says so. Dreadnode masks recognized credential patterns and renders agent-written Slack mentions as plain text before posting. Masking is best-effort: it does not detect every secret or confidential detail. Choose Session link only when answer content should stay in Dreadnode.

Reply in the thread to continue, including while work is running. Each turn has its own reply. A new top-level mention starts a separate session. Ordinary replies in threads with no Dreadnode session are ignored.

Anyone in the thread can send a standalone stop or use Slack’s Stop button to cancel active work. This also drops queued follow-ups; send those again when you are ready to continue. Stopping a reply that is still queued leaves any other active turn running. Stopping does not grant access to the session.

In the Dreadnode transcript, Open in Slack returns to the original thread while your organization has a connection to that workspace. If the session or its requester’s account is deleted, start a new Slack thread; its old thread cannot start a replacement session.

Choose an option on the question message, or reply in the thread when the agent asks for text. For multiple-choice questions, select your options and choose Submit. If the agent asks several questions together, answer each one; text replies answer the first unanswered question. If Slack cannot refresh after an answer is saved, Dreadnode tells you it was saved; open the session to continue instead of resending that answer. Skip declines the whole set.

Only the person who started the session can answer, even when teammate follow-ups are enabled. While a question is pending, replies answer it instead of starting another turn. The question shows the accepted answers and removes its controls when the response reaches the agent.

With Session link only, questions stay in Dreadnode: open the session in Chat to answer. View session opens the passive session view. Questions too large for Slack’s controls also link to that view. If the runtime stops or the question was answered elsewhere, Slack removes the controls; reply again to continue the session.

As an organization owner, expand Settings on the connected Slack section. Changes save automatically and apply to new turns. Other organization members can view the settings.

  • Follow-ups defaults to Requester only. Any linked member lets other linked organization members reply using the original requester’s session, runtime, permissions, and credits. The transcript identifies the Slack author. With Requester only, other participants receive a private reminder when they reply, whether or not their Slack account matches a Dreadnode member.
  • Thread detail defaults to Full activity. Choose Final answer only to omit tool activity, or Session link only to omit both activity and the answer.
  • Slack Connect channels defaults to Session link only for channels shared with other organizations. Use Thread detail applies your normal detail setting there too. Everyone in that channel can see the resulting output.

Slack Connect settings change visibility, not who can follow up or open the session.

If a mention is refused because no account matches, check People in the Slack section. It lists recent Slack activity, the email Slack reported, and whether that email matched an organization member. The list itself does not grant access.

Use Manage members to verify that the person belongs to this organization with the same email as their Slack profile. If Slack provided no email, ask your Slack administrator to check email availability. Account matching happens automatically; there is no separate linking flow. Unlinked people cannot start or steer sessions.

Choose Replace tokens, then Open Slack apps to return to the installed app’s token settings. Leave one field blank to keep that saved token. For a disconnected app, follow its displayed recovery instructions before replacing tokens; an uninstalled app needs to be installed again.

To connect a different workspace, choose Disconnect and confirm first. Disconnecting stops Slack responses within a minute and keeps sessions, transcripts, and people history. If a restart or prolonged connection interruption ends Slack delivery, an open stream closes with an interruption notice and View session. If Slack has already ended the stream, its content is preserved and the working indicator is cleared. The agent may finish on the runtime; its final response is not replayed into Slack after recovery. Use View session to check the result and reply in the thread to continue once connected again. A pending question remains answerable.

If the section says Slack disabled, contact your deployment operator. Self-hosted installations need outbound Slack access. Slack is unavailable on air-gapped installations.