Skip to main content
An issue is one group of matching errors in a project. Squasher adds each new matching error to the same issue. The issue keeps a count of events and the times the error was first seen and last seen.
The dashboard calls these records Issues. The API paths stay under /errors, and the CLI command stays squasher errors. See the Error groups API.

What creates an issue

Squasher creates or updates an issue from these signals:
  • SDK errors. Squasher SDK events are error-level unless the event sets a lower level. Events from a Sentry SDK sent to Squasher use the same rule.
  • Error-level logs. A log record becomes an issue event when its severity number is 17 or higher, or its severity text is error or fatal in any case. This applies to OpenTelemetry logs and to logs from log drains.
  • Error spans. A span with status ERROR becomes an issue event. The message is the span status message. If the status has no message, Squasher uses the span name.
  • Failed CI runs. With the GitHub integration, a workflow that ends as failure, error, action_required, or timed_out creates an issue. Failures of the same repository, workflow, branch, and trigger event go into one issue. A later successful run resolves that issue if it is still unresolved.
  • Failed deployments. Failed deployments from Vercel or Railway create one issue per failed deployment.
For runtime errors, the issue level is fatal or error. A log with severity number 21 or higher is fatal.

How grouping works

Squasher computes a fingerprint for each runtime error. Two errors go into the same issue when their fingerprints match in the same project. The fingerprint uses three values:
  1. The service name, from the service.name resource attribute.
  2. The error type, from the error.type or exception.type attribute. If there is no error type, Squasher uses the normalized message.
  3. The normalized message.
To normalize the message, Squasher:
  • Keeps only the first line.
  • Replaces UUIDs with <uuid>.
  • Replaces hex values that start with 0x with <hex>.
  • Replaces standalone numbers with <num>. Numbers inside a word, such as order_123, stay.
  • Collapses whitespace and keeps the first 500 characters.
For example, User 4821 not found and User 97 not found from the same service and error type go into one issue. Stack frames are not part of the fingerprint. Squasher stores uploaded source maps, but it does not apply them to stack traces yet, and they do not change how errors are grouped. The issue title is the first line of the error message, up to 500 characters.

Merge duplicate issues

If two issues describe the same problem, merge the duplicate into the canonical issue. New events that match the duplicate’s fingerprint then count toward the canonical issue. A merged duplicate is hidden from the normal unresolved list. Unmerge the duplicate to restore it and send its events back to it.

Status and priority

Each issue has one status: The dashboard issue list shows unresolved issues by default. Filter by status to see the others. When a new runtime error matches an existing issue, Squasher adds it to the event count, updates Last seen, and sets the status back to unresolved. This happens for every status, including resolved, ignored, and muted. There is no separate regression status. Each issue also has a priority: low, medium, high, or critical. New issues start at medium. If auto-triage is on for runtime errors, Squasher assigns a new issue to the Squasher agent when it creates the issue. Assign a person to take over. See AI triage.

Work with issues

Dashboard

Open Issues in the project sidebar. You can search and filter the list by status, level, and service. The issue page shows the AI triage summary, event count, first and last seen times, fingerprint, environment, service, and assignee. From the issue page you can:
  • Change Status and Priority.
  • Bookmark or Subscribe to the issue for your own account.
  • Run AI triage to start a fresh triage run.
  • Create fix to start a fix run. See Auto-fix.
  • Set or clear the assignee by user ID.
  • Merge duplicate by entering the duplicate issue ID, or Unmerge this issue on a merged duplicate.

API

Use the Error groups API to list, read, and update issues, merge and unmerge duplicates, and read related traces, suspect commits, and triage runs. Set status and priority with PATCH /v1/projects/{project_id}/errors/{error_group_id}.

CLI

squasher errors (alias squasher issues) has these subcommands: list, get, update, triage, and triage-runs.

MCP

Agents can list, read, update, and triage issues through MCP with search("errors") followed by execute. Merge and unmerge are not available through MCP.

Agent handoff