Email notifications

The five things Cefense will email you about, how to turn each one down, and the one that cannot be turned off.

6 sections4 min read

Six kinds of email, each one its own switch. Five of them are yours to turn off. The sixth tells you that somebody granted a credential for your account, which is exactly the message whose value depends on arriving when it is not wanted.

The six kinds

KindSent whenWhat it carriesDefault
connectionA GitHub, GitLab, or Bitbucket credential is granted to your workspaceWhich host, which account, what scopes, where the grant came from, and what is already connectedAlways on
scan_reportA scan finishes having found somethingCounts by severity, the repository, the branch, the commit, and how long it tookOn, at High and above
scan_failedA scan stops without a usable resultThe reason, how many times in a row it has now failed, and when the repository was last covered properlyOn
advisoryA CVE is published against a package one of your scans recordedThe advisory, the package and version, the fixed version, and how many repositories are affectedOff
fix_pr_openedCefense opens a pull request carrying a patchThe pull request, the branch, and the finding it closesOn
immunityA threat becomes exposed or closed between two scans, new research reaches a package a scan recorded, or a Hyper sandbox run finishesThreat names, tiers and counts, the package and version for research, and for Hyper the result or why it did not run, with missing environment variable names but never their valuesOn, at High and above

A scan report says how many, not which

Counts by severity, and nothing more. No titles, no file paths, no code. The finding belongs in the workspace behind a sign-in, not in a mailbox and a mail provider's logs. A scan that found nothing sends no email at all, because an all-clear every six hours is how a sending address gets filtered.

Severity floors

Three kinds carry findings, and those three carry a floor: a scan report, an advisory, and an Immunity change. Anything below the floor does not send, and the email says how many were held back so a small number is never mistaken for the whole picture.

KindFloorDefault
scan_reportcritical, high, watch, or infohigh
advisorycritical, high, watch, or infocritical
immunitycritical, high, watch, or infohigh
connection, scan_failed, fix_pr_openedNone. They are single events, not findings.n/a

Setting a floor on one of the last three is refused rather than accepted, because a control with nothing behind it is worse than no control.

Cadence

Only the scan report repeats often enough for a cadence to mean anything. every sends one email per qualifying scan. daily sends the first qualifying one and nothing else for a day.

One repository behaving differently

Any repository can be given its own exception: a different severity floor, or silence altogether. An exception is stored only when it actually differs, so the list stays a list of exceptions rather than a copy of every repository you have.

From the terminalbash
cf notifications
cf notifications set scan_report --severity critical --cadence daily
cf notifications set advisory --on
cf notifications mute acme/legacy-api
cf notifications repo acme/payments --severity watch
cf notifications repo acme/legacy-api --reset

cf notify is the same command. The workspace has the same controls under the account menu.

BehaviourWhat it does
A repository's floorReplaces the kind's floor for that repository. It does not widen it or narrow it, it stands in for it.
Muting a repositoryStops every repository-scoped email about it: reports, failures, advisories, and pull requests.
--resetRemoves the exception, so the repository goes back to following your ordinary settings.

Whose settings these are

Yours, and yours in this organization. Two people on the same team can set completely different floors, and the same person on two teams has two independent sets. Nothing you leave alone is written down: a person who never opens the screen is simply on the defaults.

Everyone in the organization is a candidate for every organization-scoped email, and each is evaluated against their own settings. The person who published a pull request is left off the email announcing it, on the grounds that they know.

Have a correction or need help?

Email the docs team