Notifications Hardening Guide

Last updated: 2026-05-30 (reconciled against src/Notify + src/Notifier implementation)

This guide documents the security controls protecting the Stella Ops notification path — channels, rules, templates, delivery history, and inbound/outbound webhooks across the Notify and Notifier services. It is written for operators hardening a deployment and for engineers reviewing notification-related changes. Each control cites the source symbol that implements it so claims can be verified against src/.

See also: secrets-handling.md, rate-limits.md, and authority-scopes.md.

Threat model

Controls

Deployment checklist

Incident playbook (channel compromise)

  1. Disable the affected channel. Re-POST the channel definition (POST {Api.BasePath}/channels, upsert semantics) with enabled=false, or delete it (DELETE {Api.BasePath}/channels/{channelId}). (There is no PATCH /channels/{id} route; channel writes are upserts.)
  2. Rotate the secret in your secret store, or for webhook channels rotate the HMAC secret via POST /api/v2/security/keys/rotate (signing keys) / the webhook security service RotateSecret path; update the channel secretRef if it changed.
  3. Search delivery history (GET {Api.BasePath}/deliveries, filterable by channelId/time range) for deliveries to the compromised endpoint and notify tenants if required.
  4. Re-enable with new endpoint/secret after validation.

Offline/air-gap notes