Skip to main content

Notification Channels

Available in: Free (Telegram) Solo Teams (all channels)

Control Zero can notify you when governance events occur: policy denials, audit anomalies, and security alerts. Configure one or more notification channels per project.

Available Channels

ChannelAvailabilityDescription
TelegramFree, Solo, TeamsBot messages to a Telegram chat or group
SlackSolo, TeamsMessages to a Slack channel via webhook
EmailSolo, TeamsEmails to one or more addresses
DiscordSolo, TeamsMessages to a Discord channel via webhook
WebhookSolo, TeamsHTTP POST to any endpoint

Setup Instructions

Telegram (All Plans)

Telegram is available on all plans, including Free.

  1. In the Control Zero dashboard, navigate to your project and click Settings > Notifications.
  2. Click Add Channel > Telegram.
  3. Start a conversation with the @ControlZeroBot on Telegram.
  4. Send /start to the bot. It will reply with your chat ID.
  5. Paste the chat ID into the dashboard and click Save.

You can also add the bot to a Telegram group. Send /start@ControlZeroBot in the group to get the group chat ID.

Events delivered: Policy denials, security alerts, daily audit summaries.

Slack (Solo, Teams)

  1. Navigate to Settings > Notifications > Add Channel > Slack.
  2. Click Create Webhook to be redirected to Slack's OAuth flow.
  3. Select the workspace and channel where notifications should appear.
  4. Authorize the integration. The webhook URL is saved automatically.

Alternatively, provide a Slack Incoming Webhook URL manually:

https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

Events delivered: Policy denials, security alerts, audit anomalies, daily summaries.

Email (Solo, Teams)

  1. Navigate to Settings > Notifications > Add Channel > Email.
  2. Enter one or more email addresses (comma-separated).
  3. Click Save. A verification email is sent to each address.
  4. Click the verification link in each email to activate notifications.

Events delivered: Daily audit digest, security alerts, weekly governance reports.

Discord (Solo, Teams)

  1. In your Discord server, go to Server Settings > Integrations > Webhooks.
  2. Click New Webhook. Name it (e.g., "Control Zero") and select the target channel.
  3. Copy the webhook URL.
  4. In the Control Zero dashboard, navigate to Settings > Notifications > Add Channel > Discord.
  5. Paste the webhook URL and click Save.

Events delivered: Policy denials, security alerts, audit anomalies.

Webhook (Solo, Teams)

Send governance events to any HTTP endpoint.

  1. Navigate to Settings > Notifications > Add Channel > Webhook.
  2. Enter your endpoint URL (must be HTTPS).
  3. Optionally configure a signing secret for payload verification.
  4. Click Save.

Control Zero sends a POST request with a JSON payload:

{
"event": "policy.denied",
"project_id": "proj_abc123",
"timestamp": "2026-04-03T12:00:00Z",
"data": {
"agent_id": "agent-analyst",
"action": "database:execute",
"resource": "*",
"policy_id": "db-read-only",
"reason": "Matched deny rule for database:execute"
}
}

Payload verification: If you configured a signing secret, each request includes an X-CZ-Signature header containing an HMAC-SHA256 signature of the request body.

import hmac
import hashlib

def verify_webhook(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)

Event Types

These are the high-risk security events Control Zero fires to your channels:

EventDescription
policy.deniedA burst of policy denials crossed the spike threshold
security.hook_tamperAn enforcement hook's integrity check failed on a host
security.credential_leakThe credential scanner detected a secret in agent I/O
usage.limit_reachedThe organization reached its monthly action quota

Human-in-the-loop approval lifecycle events are also delivered: hitl.approval.requested, hitl.approval.approved, hitl.approval.denied, and hitl.approval.expired.

Managing Notifications

You can configure multiple channels per project. Each channel can be individually enabled, disabled, or deleted from the Settings > Alerts page.

To control which events reach a channel, use the Events selector on that channel's card -- pick specific event types to route only those, or leave it empty to receive every event. See Notification channels for the full event list and the per-organization policy-denial spike threshold.

  • Pricing: Channel availability by plan.
  • Policies: Define the rules that trigger notifications.
  • API Reference: Programmatic notification management.