Watch & respond

Monitors & alerts

Recurring scans that run on a schedule, and the channels an alert can reach when they find something new.

What a monitor is

A monitor is a saved target — a web URL, a DNS domain, or a code path — with a schedule attached. You choose daily or weekly. Once due, a monitor runs the same scan you could trigger by hand: a web monitor runs a web scan, a DNS monitor a DNS scan, a code monitor a code scan. A background check runs every hour and starts any monitor whose interval has elapsed since its last run; nothing runs on a finer cadence than that hourly check, so a daily monitor can run up to roughly an hour late relative to the exact moment it became due.

A separate kind of monitor watches a deployed smart contract instead of a web target: it polls the contract's bytecode, a watchlist of admin events (ownership transfer, upgrade, role grants, pause/unpause), and any view functions you ask it to track. It is typically created automatically once a smart-contract audit records a deployed address. This on-chain monitor only alerts — it never sends a transaction. For a monitor that can pause a contract, see Auto-pause, a separate, explicitly-armed function.

The monitors list, showing scheduled web, DNS, code and on-chain targets
Each monitor shows its type, schedule, last run, and a link to its last report.

Baseline then drift

Two watches behind your monitors follow the same rule: the first pass establishes a baseline and announces nothing, and only what appears afterwards is news. A new-CVE watch matches your inventoried dependencies against advisory feeds; on the first pass every match already found is recorded as known, not alerted — alerting on that backlog would bury the one row that actually matters under everything that was already true. The same applies to the attack-surface watch, which tracks open ports, your private-surface probe, DNS records and certificates: a port that appears is news, but a port is only reported as having disappeared when the tool that would have seen it actually ran and succeeded on that pass. If the tool failed, timed out, or the host stopped answering, the item is left alone with the reason recorded — it is not asserted to have closed, and it is not asserted to still be open either.

One exception to your severity threshold
A new advisory that CISA lists as actively exploited is reported regardless of your configured minimum severity. A medium severity issue someone is actively using outranks a high severity issue nobody has touched, and the exploited flag says so in the alert itself.

Alert channels

Alerts can reach an email address over your own configured SMTP settings, and a webhook URL — Slack, Discord, Telegram, or a generic JSON endpoint, auto-detected from the URL's host. Configure both from Settings.

  1. 1

    Set the SMTP details

    Host, port, username, password, and the recipient address. A password already on file is shown as a placeholder, never in the clear — saving without touching that field leaves the stored password exactly as it was; an explicit empty value clears it.
  2. 2

    Set the webhook URL

    Paste a Slack incoming-webhook URL, a Discord webhook URL, a Telegram bot URL, or any other HTTPS endpoint. A Telegram URL must carry ?chat_id=<CHAT_ID> at the end; the form checks for this at save time, because Telegram silently refuses every message otherwise.
  3. 3

    Send a test

    Both the email and webhook sections have a test button that sends a real message through the configured channel and reports success or failure immediately, without waiting for a scan.

On read-back, neither secret is ever returned in the clear. The SMTP password comes back as a <set> or <unset> placeholder. The webhook URL comes back with its host visible and everything else masked — a Telegram URL as api.telegram.org/bot••••/sendMessage, since the bot token embedded in the URL is itself a live credential.

Alert settings showing SMTP, webhook configuration and test buttons
Secrets are shown redacted; a saved placeholder keeps the stored value unchanged.

What triggers an alert

SourceFires when
A scan (web, DNS, code)At least one finding is at or above your configured minimum severity
An AI auditThe verdict crosses your threshold — mapped from minimum severity, or overridden per schedule below
The on-chain monitorBytecode changed, a watched admin event fired, or a watched view value changed since the last poll
The attack-surface watchA port, DNS record, or certificate appeared, or provably disappeared
The new-CVE watchA dependency now matches an advisory it did not match on the last pass — or any pass, if it is a first sighting after the baseline

Delivery receipts

Every delivery attempt — email or webhook, successful or not — is written to the evidence ledger as delivered, delivery failed, or delivery skipped (for example, no webhook was configured). The record carries a redacted destination, never a full email address or a webhook URL with its embedded token, and for a webhook, a hash of the response body rather than the body itself. This is what lets an incident report state that an alert fired at a given time and was delivered, or explain why it was not. See the evidence ledger for how these records are chained and anchored.

Scheduled contract audits

A smart-contract audit can be scheduled to re-run daily, weekly, or monthly against a saved source snapshot, or against fresh source fetched at run time when you supply a deployed address and chain. Each schedule carries its own alert override, independent of your general minimum-severity setting: off (never alert for this schedule), FAIL only, or any completed verdict.

Alert override valuesjson
"alertOverride": "off" | "FAIL_only" | "any"

The platform watches its own health

Sentinelleai runs self-tests against its own protective capabilities. When one degrades or breaks, the operator is alerted and that capability is marked unhealthy so downstream results fail safe: a report says a control could not run rather than presenting a clean result from a tool that has quietly stopped working. A capability that cannot be tested here at all is marked as such — it is never counted as healthy by default.

What monitoring stops short of

  • Monitoring runs on a schedule, not continuously. Daily and weekly are the choices; the shortest possible delay between something changing and a monitor noticing it is the length of that schedule, not real time.
  • A feed or tool that goes silent is reported as unknown, never folded into a clean result. Silence is not evidence that nothing changed.
  • Disabling or deleting a monitor is treated as reducing your protection: both require a stated reason and an acknowledgement, and both are recorded. Re-enabling a monitor needs no confirmation.