Skip to content
Data
Skill

/suppressing-noisy-errors

Create PostHog error tracking suppression rules to drop high-volume, low-value errors at ingestion. Use when the user asks "stop capturing this error", "drop browser extension errors", "ignore ResizeObserver loops", "suppress bot-driven errors", or wants to reduce ingestion cost

From plugin
posthog
41k172 skills11 agents2 commands3 MCP

Claude Code

$ npx -y skills add posthog/posthog --skill suppressing-noisy-errors --agent claude-code

SKILL.md

suppressing-noisy-errors.SKILL.md
name: suppressing-noisy-errors
description: >
  Create PostHog error tracking suppression rules to drop high-volume,
  low-value errors at ingestion. Use when the user asks "stop capturing
  this error", "drop browser extension errors", "ignore ResizeObserver
  loops", "suppress bot-driven errors", or wants to reduce ingestion
  cost from noisy unactionable errors. Identifies suppression
  candidates, scopes the filter tightly, decides between full
  suppression and sampling, and confirms the rule before creating it.
  Suppressed errors are dropped permanently — this skill defaults to
  caution.

Suppressing noisy errors

Suppression is destructive in spirit: matching events are dropped at ingestion and never become issues. The wrong rule silently throws away real bugs. This skill exists to make sure suppression is applied only to patterns that are genuinely unactionable, with filters narrow enough to avoid swallowing unrelated errors.

When suppression is the right tool

Suppression is the right tool when an error is:

  • **Unactionable from your code** — browser extensions, third-party scripts, ad

blockers, network beacons firing after navigation. You can't fix it because you didn't write it.

  • **Browser engine quirks** — `ResizeObserver loop limit exceeded`,

`Script error.`, `Non-Error promise rejection captured` with empty payloads.

  • **Bot or crawler traffic** — errors firing only from headless browsers or known

crawler user agents.

  • **Sampling already enough** — for high-volume but real errors, dampen with

`sampling_rate` instead of full suppression so you keep visibility without paying full cost.

Suppression is **not** the right tool when:

  • The error is unactionable _today_ but might become actionable after a fix —

use issue status `archived` or `resolved` instead so it surfaces if it returns.

  • You only want to mute notifications — assign the issue to a user, change its

status, or use notification rules.

  • The error is a duplicate of another — merge or create a grouping rule

(`grouping-noisy-errors`).

Available tools

| Tool | Purpose | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | `posthog:query-error-tracking-issues-list` | Find suppression candidates by volume and impact; dry-run a candidate filter via `filterGroup` | | `posthog:query-error-tracking-issue-events` | Inspect sampled `$exception` events to confirm the pattern | | `posthog:execute-sql` | Fallback dry-run for filters that need OR groups or operators outside the `filterGroup` allowed list | | `posthog:error-tracking-suppression-rules-list` | Check existing suppression rules | | `posthog:error-tracking-suppression-rules-create` | Create the suppression rule | | `posthog:error-tracking-issues-partial-update` | Hide past data via issue status without dropping events at ingestion |

Workflow

Step 1 — Identify candidates

High occurrences with low distinct users is the strongest noise signal — one user (or one bot) producing many events.

posthog:query-error-tracking-issues-list
{
  "status": "active",
  "orderBy": "occurrences",
  "orderDirection": "DESC",
  "dateRange": { "date_from": "-7d" },
  "limit": 30,
  "volumeResolution": 0
}

Look for:

  • High `occurrences`, low `users` ratio (e.g., 50,000 occurrences, 3 users → likely

bot or extension loop)

  • Exception messages matching known noise patterns: `ResizeObserver loop`,

`Script error.`, extension namespaces (`chrome-extension://`, `moz-extension://`, `safari-extension://`)

  • Stack traces dominated by third-party domains the user doesn't control

Step 2 — Confirm the pattern

For each candidate, pull a sample of `$exception` events and check that the pattern matches what you intend to suppress:

posthog:query-error-tracking-issue-events
{
  "issueId": "<candidate_issue_id>",
  "limit": 10,
  "include": ["exception", "stacktrace", "environment", "navigation"]
}

`onlyAppFrames` defaults to `true`, but for noise investigation you usually want the third-party frames visible — pass `onlyAppFrames: false` so extension URLs and vendor domains show up in the stack.

Confirm:

  • The exception type or message text is consistent across the sample
  • The URLs / user agents / browsers don't include real user traffic mixed in with

the noise

  • Suppressing this pattern won't hide a future real bug that happens to share

the type

If any sample doesn't match, narrow the filter or skip the candidate.

Step 3 — Scope the filter tightly

Suppression rules are configured with the same filter shape as grouping rules. The `error-tracking-suppression-rules-create` tool description warns explicitly: do **not** create match-all rules and do **not** create overly broad rules. Match on the most specific property combination you can:

| Noise pattern | Recommended filter | | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | Chrome extension errors | `$exception_sources icontains "chrome-extension://"` | | Firefox extension errors | `$exception_sources icontains "moz-extension://"`

Read more
@posthog
Ships withposthog

:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.

41k172 skills11 agents3 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
40.7k
Star history of posthog/posthog on GitHub, a chart by star-history.com

Other skills on posthog.

mcp-servers

mcp-servers

Install, configure, authenticate, and troubleshoot MCP (Model Context Protocol) servers for this agent. Use when the user asks to…

@posthog@posthogInstall Skill
dynamic-workflows

dynamic-workflows

Designs and runs task-specific JavaScript harnesses with the `workflow` tool. Use for broad, long-running, highly structured, or…

@posthog@posthogInstall Skill
subagent-orchestration

subagent-orchestration

How and when to delegate work to subagents via the `subagent` tool (Explore, Plan, General). Use when a task involves codebase…

@posthog@posthogInstall Skill
checking-member-access

checking-member-access

Explains what a member or a role can do in a PostHog project, using the access control MCP tools. Use when the user asks what…

@posthog@posthogInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

@posthog@posthogInstall Skill
analyzing-expensive-users

analyzing-expensive-us…

Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top…

@posthog@posthogInstall Skill

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem07d69k
@mem0ai@mem0aiInstall Skill
qmd

qmd

Search local markdown knowledge bases, notes, docs, and wikis with QMD. Use when users ask to find notes, retrieve documents,…

qmd4w31k
@tobi@tobiInstall Skill

Questions about suppressing-noisy-errors.

Which coding agents can use suppressing-noisy-errors?
suppressing-noisy-errors installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.