The Slack integration delivers investigation findings to a Slack channel using an incoming webhook. It is the simplest of the three messaging integrations to configure — one URL, one channel.
Prerequisites
- A Slack workspace where you can create or install apps (workspace admin or app-install permissions).
- The channel you want findings posted to.
Step 1: Create a Slack incoming webhook
-
Visit https://api.slack.com/apps and click Create New App → From scratch.
-
Name the app (e.g.
OpenSRE) and pick your workspace.
-
In the left sidebar, open Incoming Webhooks and toggle the feature On.
-
Click Add New Webhook to Workspace.
-
Pick the channel where findings should be posted and click Allow.
-
Copy the generated URL. It has three path segments — a workspace ID, a channel/app binding ID, and a per-webhook secret — for example:
https://hooks.slack.com/services/<workspace-id>/<binding-id>/<secret>
Treat this URL like a password — anyone holding it can post to your channel. If your workspace already has a Slack app you want to reuse, you can add a new webhook to it instead of creating a fresh app; the URL format is the same.
You have two equivalent paths:
opensre integrations setup slack
Paste the webhook URL when prompted. The credentials are persisted to ~/.opensre/integrations.json.Add to .env:SLACK_WEBHOOK_URL=https://hooks.slack.com/services/<workspace-id>/<binding-id>/<secret>
OpenSRE reads this at startup as a fallback when no Slack entry exists in ~/.opensre/integrations.json. If you have previously run opensre integrations setup slack, remove that entry first (opensre integrations remove slack) or the env var will be ignored. Select Slack and paste your webhook URL. The wizard validates the URL via a probe request, then persists it to ~/.opensre/integrations.json — the same store the direct setup command writes to. No extra step is needed.
Step 3: Verify
opensre integrations verify slack
A successful run reports the integration as passed — but this only confirms the webhook URL is configured. It does not post anything to Slack. To also confirm delivery actually works, add the --send-slack-test flag:
opensre integrations verify slack --send-slack-test
This posts a small test message to the configured channel. Expected failure modes are listed below.
You can also trigger a real investigation against a bundled fixture:
opensre investigate --input tests/e2e/kubernetes/fixtures/datadog_k8s_alert.json
Findings should appear in the configured channel.
On-demand Slack messages
The slack_send_message tool lets the agent post a plain-text notification to your configured incoming webhook at any time — not only when an investigation publishes an RCA report.
| Surface | Available when |
|---|
| Interactive shell / chat | Slack webhook configured (SLACK_WEBHOOK_URL or opensre integrations setup slack) |
| Investigation gather pass | Same |
| Gateway / action agent | Same |
Example prompts:
- “Post to Slack: deploy to staging completed successfully.”
- “Send a Slack message that the checkout 502 spike is resolved.”
The tool requires approval before sending (same as other external messaging actions). It resolves the webhook URL internally and never exposes it in tool traces.
Environment variables
| Variable | Description |
|---|
SLACK_WEBHOOK_URL | Incoming webhook URL. Required for delivery. |
Troubleshooting
error: webhook_url is required. from opensre integrations setup slack
The setup command was given an empty value. Re-run and paste the full URL including the https:// prefix.
invalid_payload or channel_not_found from Slack
The webhook URL was created against a channel that has since been archived or renamed in a way that broke the binding. Create a new webhook in the Slack app settings and replace SLACK_WEBHOOK_URL.
Findings posted to the wrong channel
A webhook is bound to the channel it was created against. To change channels, create a new webhook in Slack pointed at the new channel and update SLACK_WEBHOOK_URL.
Webhook returns no_service
The Slack app or webhook was deleted. Re-create it and update the URL.