# Review stale or dangerous error suppressions

> Find suppressions that are hiding high-volume, high-impact, or recently regressed errors before noise rules mask real incidents.

## Agent adaptation contract

- Canonical human page: https://agentry.sh/workflows/stale-suppression-review
- Execution mode: on_demand
- Immutable automation template: none
- Applies to: universal
- Required example events: $exception, suppression_created
- Required Agentry resources: none declared
- Do not use when:
  - Do not use until the example events are mapped to observed project signals, the current onboarding state is verified, and live event/property reads prove the required data is present.
- Ask before using:
  - Which observed events map to $exception, suppression_created? Is the current onboarding state verified, and do live event/property reads show non-synthetic traffic for them?
  - Which live properties provide $exception.fingerprint, $exception.users_affected, suppression_created.fingerprint, suppression_created.reason, and which stable user or account identifier joins the signals?

This is an adaptable workflow example, not an API recipe. Map event and property names to the project's saved signal map, require status: "verified" from GET /v1/projects/:project_id/onboarding, and confirm the required signals through live event/property metadata and rows. Fetch current OpenAPI or query-blueprint details before making calls. Do not infer unattended authority from this page.

## Why this matters

Suppressions start as a mercy and become blind spots. A broad rule that was safe last month can hide a revenue-impacting regression after a deploy.

## What you get

- Suppression rules with recent matching cases
- Rules that match too many fingerprints
- Suppressed cases with user or revenue impact
- Recommendations to narrow, expire, or remove rules

## Walk through it

**You:**
> Are any suppressions hiding real problems?

**Agent:**
> I'll list suppression rules and compare them with current open and ignored cases.

```text
Endpoint: GET /v1/projects/:project_id/suppressions
Exact shape: /v1/openapi.json?path=%2Fv1%2Fprojects%2F%7Bproject_id%7D%2Fsuppressions&method=get
Use query parameters, not a JSON body.
```

```text
Endpoint: GET /v1/projects/:project_id/cases
Exact shape: /v1/openapi.json?path=%2Fv1%2Fprojects%2F%7Bproject_id%7D%2Fcases&method=get
Use query parameters, not a JSON body.
Query/filter concept:
  status: "open"
```

## The output

The agent returns suppressions sorted by risk: broad pattern, recent matches, affected users, and recommended action.

## Setting it up

No extra instrumentation required beyond errors. Keep suppression reasons specific so future agents can evaluate intent.

## Variations

- *"Expire any suppression that has not matched in 30 days."*
- *"Show suppressed errors after the last deploy."*
- *"Turn this into a weekly oncall hygiene check."*
