4b6817381b
Benchmark image — build + push to ECR (any adapter) / build + push (push) Waiting to run
CI / quality (ubuntu-latest) (push) Waiting to run
CI / test (tools-runtime) (push) Waiting to run
CI / test (e2e-general) (push) Waiting to run
CI / test (cli-runtime) (push) Waiting to run
CI / test (e2e-provider-and-openclaw) (push) Waiting to run
CI / test (integrations-and-misc) (push) Waiting to run
CI / coverage-report (push) Blocked by required conditions
CI / test-kubernetes (push) Waiting to run
CI / should-run-thorough (push) Waiting to run
CI / test-thorough (cloudwatch-demo) (push) Blocked by required conditions
CI / test-thorough (flink-ecs) (push) Blocked by required conditions
CI / test-thorough (upstream-lambda) (push) Blocked by required conditions
CI / test-thorough (prefect-ecs-fargate) (push) Blocked by required conditions
CodeQL / Analyze (python) (push) Waiting to run
Release / build-binaries (zip, opensre.exe, onefile, windows-latest, windows-x64) (push) Blocked by required conditions
Release / publish-release (push) Blocked by required conditions
Release / publish-main-release (push) Blocked by required conditions
Release / prepare (push) Waiting to run
Release / verify (push) Blocked by required conditions
Release / build-python-dist (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, macos-15-intel, darwin-x64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, macos-latest, darwin-arm64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04, linux-x64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04-arm, linux-arm64) (push) Blocked by required conditions
Synthetic Deterministic Tests / Synthetic offline (deterministic) (push) Waiting to run
Interactive Shell Live (PR + post-merge) / turn-checks (no-LLM) (push) Waiting to run
Interactive Shell Live (PR + post-merge) / turn-live shard ${{ matrix.shard_index }} (push) Waiting to run
CI (OpenClaw E2E) / openclaw test (push) Has been cancelled
132 lines
4.7 KiB
Plaintext
132 lines
4.7 KiB
Plaintext
---
|
|
title: "Slack"
|
|
description: "Deliver investigation findings to a Slack channel via incoming webhook."
|
|
---
|
|
|
|
The Slack integration delivers investigation findings to a Slack channel using an [incoming webhook](https://api.slack.com/messaging/webhooks). 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
|
|
|
|
1. Visit [https://api.slack.com/apps](https://api.slack.com/apps) and click **Create New App → From scratch**.
|
|
2. Name the app (e.g. `OpenSRE`) and pick your workspace.
|
|
3. In the left sidebar, open **Incoming Webhooks** and toggle the feature **On**.
|
|
4. Click **Add New Webhook to Workspace**.
|
|
5. Pick the channel where findings should be posted and click **Allow**.
|
|
6. Copy the generated URL. It has three path segments — a workspace ID, a channel/app binding ID, and a per-webhook secret — for example:
|
|
|
|
```text
|
|
https://hooks.slack.com/services/<workspace-id>/<binding-id>/<secret>
|
|
```
|
|
|
|
<Note>
|
|
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.
|
|
</Note>
|
|
|
|
---
|
|
|
|
## Step 2: Configure the integration in OpenSRE
|
|
|
|
You have two equivalent paths:
|
|
|
|
<Tabs>
|
|
<Tab title="Direct setup command (recommended)">
|
|
```bash
|
|
opensre integrations setup slack
|
|
```
|
|
Paste the webhook URL when prompted. The credentials are persisted to `~/.opensre/integrations.json`.
|
|
</Tab>
|
|
<Tab title="Manual env var">
|
|
Add to `.env`:
|
|
```bash
|
|
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.
|
|
</Tab>
|
|
<Tab title="Onboarding wizard">
|
|
```bash
|
|
opensre onboard
|
|
```
|
|
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.
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
---
|
|
|
|
## Step 3: Verify
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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.
|