Why this matters
Every error tracker eventually drowns in “yes I know about this, move on.” Network errors from ad-blockers. Third-party SDK timeouts. Bot traffic. Old browser quirks. Each one is harmless individually, but as the wall of green-text-noise grows, you stop reading any of them, and that’s when a real bug slips through.
The classic fix is regex-based ignore rules. Which means you build them once, never touch them again, and they slowly rot as your error messages change. Six months later you have 47 ignore rules, half of them inactive, no one remembers why any of them exist.
Agentry’s suppressions are stored as fingerprint patterns + a reason field — so you can explain why you’re suppressing something in English, ask the agent to audit them later, and surgically un-suppress when needed.
What you get
- The noisy fingerprints removed from your case list
- A
reasonrecorded per suppression so the next person (or future you) knows what’s going on - The suppression list queryable via
agentry_list_suppressionsfor periodic review
Walk through it
The NetworkError: Failed to fetch script errors are all from ad-blocker hosts blocking our analytics script. Suppress them and tag the reason so future me knows.
Let me check how widespread this is first.
agentry_list_cases {
project_id: "default",
query: "NetworkError Failed to fetch script",
status: "open"
}
{
"cases": [
{ "id": "c_n01", "fingerprint": "f_n01",
"message": "NetworkError: Failed to fetch script (segment.com/analytics.js)",
"event_count": 412, "users_affected": 287 },
{ "id": "c_n02", "fingerprint": "f_n02",
"message": "NetworkError: Failed to fetch script (googletagmanager.com/gtag/js)",
"event_count": 198, "users_affected": 142 }
]
}
Two fingerprints, ~600 events from ~430 users. Classic ad-blocker pattern. Suppressing both.
agentry_record_suppression {
project_id: "default",
fingerprint_pattern: "f_n01",
action: "auto_resolve",
reason: "Ad-blockers blocking segment.com/analytics.js — not actionable",
hint_text: "If this re-appears with a non-segment URL, that's a real bug."
}
{ "suppression_id": "sup_a1", "applied_to_cases": 1 }
agentry_record_suppression {
project_id: "default",
fingerprint_pattern: "f_n02",
action: "auto_resolve",
reason: "Ad-blockers blocking gtag.js — not actionable",
hint_text: "Same as sup_a1 but for GTM."
}
Both suppressed. They’ll stop appearing in your open case list and won’t trigger webhooks. Their event counts are still recorded in case you want to query them later.
Heads-up: you currently have 14 active suppressions total. Want me to review them — some may have been added for bugs you’ve since fixed and could be removed?
The output
✅ 2 suppressions added
sup_a1 f_n01 auto_resolve "Ad-blockers blocking segment.com/analytics.js"
sup_a2 f_n02 auto_resolve "Ad-blockers blocking gtag.js"
Both cases moved to resolved status. 610 future events will be auto-resolved
on arrival (no case bump, no webhook).
Current suppressions (14 total):
- 8 for known third-party noise (this category)
- 3 for staging-only flakes
- 2 for resolved bugs (could be removed)
- 1 for "I know but won't fix" (marked permanent)
Setting it up
Nothing to install — agentry_record_suppression works the moment errors are flowing.
Three suppression actions to know:
| Action | Behavior |
|---|---|
auto_resolve | New matching events bump the (resolved) case. Useful when you want to track frequency but not get paged. |
auto_ignore | New matching events don’t create or bump cases at all. Use sparingly — you lose all visibility. |
prompt_hint | Cases still appear, but with your hint text shown when the agent investigates. Good for “this is a known quirk, look in X” guidance. |
Pattern matching is on the fingerprint (a deterministic hash of error type + normalized message + top stack frame). Same fingerprint = same suppression applies.
Variations
- “Audit my suppressions — for each one, check if the underlying error still exists. Suggest removals.”
- “Suppress all errors from
Bot/Crawleruser-agents.” - “Add a
prompt_hintto allRateLimitErrorcases telling the agent to check our Redis dashboard before investigating.” - “Remove the suppression on case
c_xxx— we want to track that one again.”