Rules

The ready-made rules every source gets, and how to write your own: match a field, or count it over a window.

Detection Available on ready-made on every plan; custom rules from Starter Updated 25 October 2026

These pages describe ShellOrbit as it runs today. Breaking changes to the HTTP API are announced before they ship, and existing request and response shapes stay supported.

A rule reads each event a source sends and raises a finding when it matches. Ready-made rules are on for every source the moment it is connected. Custom rules add your own.

Ready-made rules

Rules: Source, Rules, Guide
SourceRulesGuide
GitHubSecret scanning alert, repository made public or deleted, branch protection or ruleset deleted, deploy key added, new organization ownerGitHub
AWSRoot user activity, CloudTrail stopped or changed, console sign in without MFA, repeated failed console sign ins, administrator policy attached, security group opened to the internet, S3 public access block removed, GuardDuty or Security Hub disabled, KMS key scheduled for deletion, access key or IAM user createdAWS
Okta, Auth0, your appPossible credential stuffing, repeated failed sign ins for one account, administrator role granted, MFA turned off, API token created, sign in from a new countryOkta, Auth0, your app

Switch a ready-made rule off for one source on that source’s page, for example the console sign in rule on an account where only automation signs in.

One finding, not a flood

A rule opens one finding per source and subject, such as the repository, the account, or the trail. A repeat of the same thing updates that finding’s last seen time and does not alert again. Once you resolve it, the next match opens a new one.

Custom rules

From Starter, in Settings, Integrations, Rules. A custom rule has:

Rules: Part, What it is
PartWhat it is
NameWhat the finding is called
SourceOne source, or any
SeverityCritical, high, medium, or low
ConditionsAll must match. Each is a path, a test, and a value
ThresholdOptional: only when the conditions match more than N times in M minutes

A path is header.<Name> for a header or body.<dot.path> for a field, such as body.repository.visibility or body.detail.eventName. The tests:

Rules: Test, Matches when
TestMatches when
eqThe value equals the text
neThe value does not equal the text
containsThe value contains the text
existsThe path is present
inThe value is one of a comma separated list

Examples

Rules: Rule, Conditions, Threshold
RuleConditionsThreshold
Deploy outside working hoursheader.X-GitHub-Event eq deploymentNone
Lots of new Stripe disputesbody.type eq charge.dispute.createdMore than 5 in 60 minutes
AWS console sign in from outside the officebody.detail.eventName eq ConsoleLogin, body.detail.sourceIPAddress ne 198.51.100.10None
Rules: Plan, Custom rules
PlanCustom rules
HobbyNone
Starter10
Pro50
BusinessUnlimited, within fair use

Test a rule

Press Send a test event on a source to run a sample of its kind through every rule. Ready-made rules raise a test finding; custom rules show whether they would have matched.