Changelog

Improving AppSignal, one deploy at a time.

Jul 01, 2026

CLI v2.0.1

Added

  • Added traces commands, also available as samples, for listing performance samples/traces and error traces, then inspecting their span trees through the AppSignal REST tracing API. Traces can also be fetched and inspected directly from performance and exception incident numbers, and --page-all can fetch beyond the first page of trace results.

Changed

  • Incident list commands now render with the same table formatting as other list commands, making human-readable output easier to scan.

View the CLI v2.0.1 changelog for more information.

Jun 23, 2026

Fixes for host metrics and collector mode

Python1.6.5

Changed

  • Bundled certificates have been updated.

  • Use system-specific operation name in messaging span names.

    When messaging.operation.name is present (e.g. Queue.add), it is used directly as the span name prefix: Queue.add (myQueue). When only the generic messaging.operation.type is available (e.g. send), the word "message" is added for clarity: send message (myQueue).

Fixed

  • Continue reporting non-disk host metrics when a mount is frozen.

  • Emit the appsignal.action_name attribute instead of appsignal.root_name when set_root_name is used in collector mode. The collector only reads the action name from appsignal.action_name, so root names set this way were previously ignored, falling back to the OpenTelemetry span name.

  • Update the OpenTelemetry span name directly when set_name is used in collector mode, instead of setting the appsignal.name attribute. The collector uses the span name as-is, so names set this way were previously ignored.

  • Emit the db.system.name and db.query.text semantic-convention attributes instead of appsignal.sql_body when set_sql_body is used in collector mode. This fixes SQL query sanitization when using the experimental collector mode.

  • Fix host-metrics leaking zombie [timeout] processes in Alpine linux containers.

    Before this release AppSignal agent relied on a proper init process that reaps child processes killed by system timeout. Now the agent terminates and reaps unresponsive child processes in host-metrics collection and a subreaper is no longer required.

  • Emit request parameters and headers using the attribute names the collector recognizes when in collector mode. set_params now emits appsignal.request.payload instead of appsignal.request.parameters, and set_header uses the http.request.header prefix instead of appsignal.request.headers. The collector and server do not recognize the previous names, so this sample data was previously dropped in collector mode.

View the Python package v1.6.5 changelog for more information.

Jun 23, 2026

Host metrics collection zombie process fix

Ruby4.8.6

Fixed

  • Fix host-metrics leaking zombie [timeout] processes in Alpine linux containers.

    Before this release AppSignal agent relied on a proper init process that reaps child processes killed by system timeout. Now the agent terminates and reaps unresponsive child processes in host-metrics collection and a subreaper is no longer required.

View the Ruby gem v4.8.6 changelog for more information.

Jun 18, 2026

Public AppSignal CLI release!

Our new AppSignal CLI brings your monitoring data into the terminal. Tail logs, triage incidents, manage dashboards and anomaly detection triggers, and turn logs into metrics, all without leaving the shell where you run your tests and deploys.

It's built for people and AI agents. Every command returns human-readable output or JSON (--output json), so the same tool you reach for during an incident can also feed structured data to a coding agent. The CLI also bundles an agent skill for Claude, Codex, and OpenCode.

Sign in with OAuth and you're ready to go:

Shell
appsignal-cli auth login

Install it with Homebrew (brew install appsignal/appsignal-cli/appsignal-cli) or the install script, then read the documentation to get started.

Changed

  • apps list now uses the current OAuth account to determine the organization automatically and saves that org to the active config. You no longer need to pass --org when listing apps for the signed-in account.
  • incidents update now accepts multiple incident numbers for bulk state changes, so you can close or reopen an explicit set of incidents in one command. It also adds --assign-me to assign the incident to the authenticated CLI user without needing to look up your user ID first.
  • OAuth login now requests the user:read scope needed for browser-based AppSignal account access, and older tokens now produce a clearer re-authentication message when that scope is missing. The unsupported apps orgs command has been removed.
  • Added dashboard management commands to list, create, and update AppSignal dashboards from the CLI.
  • appsignal-cli now sends a minimal best-effort telemetry event for each command run to help measure CLI usage and reliability. The event includes only the command path, success or failure, duration, CLI version, and output format, and you can disable it entirely with APPSIGNAL_CLI_TELEMETRY=0.
  • OAuth is now the default auth login flow, so running appsignal-cli auth login opens the browser-based sign-in flow without requiring --oauth. Personal token login remains available by passing --token explicitly.

Removed

  • OAuth is now the default authentication method. appsignal-cli auth login opens the browser flow directly, while personal API token login remains available with --token.

View the CLI v2.0.0 changelog for more information.

Jun 09, 2026

Improve stability

Added

  • Allow appsignal.group and appsignal.format attributes in OpenTelemetry logs to override the log line's group and format.

    When present, appsignal.group overrides the resource-level service name as the log group, and appsignal.format (one of plaintext, logfmt, json, autodetect) overrides the log source's parsing format.

Fixed

  • Fix crashes when truncating attribute keys and values whose length limit fell in the middle of a multi-byte UTF-8 character. Truncation now rounds the cut point down to the nearest character boundary instead of panicking.
  • Continue reporting non-disk host metrics when a mount is frozen.

This release can be installed through our collector packages and Docker image.

Jun 04, 2026

Prevent host-metrics leaking zombie `[timeout]` processes

Elixir2.17.3

Fixed

  • Fix host-metrics leaking zombie [timeout] processes in Alpine linux containers.

    Before this release AppSignal agent relied on a proper init process that reaps child processes killed by system timeout. Now the agent terminates and reaps unresponsive child processes in host-metrics collection and a subreaper is no longer required.

View the Elixir package v2.17.3 changelog for more information.

Jun 02, 2026

Filter internal Sidekiq data, and fix bugs

Ruby4.8.5

Changed

  • Exclude more Sidekiq internal job attributes (cattr, tags, retry_for and unique_for) from the tags reported for Sidekiq jobs.

Fixed

  • Continue reporting non-disk host metrics when a mount is frozen.
  • Prevent a NoMethodError in the Active Job, Rake, Sidekiq, Delayed Job, and WebMachine instrumentations when the creation of an AppSignal transaction is interrupted by process shutdown signals.

View the Ruby gem v4.8.5 changelog for more information.

May 26, 2026

Emit Ecto query metrics

Elixir2.17.2

Added

  • Emit distribution metrics from the Ecto integration.

    Each Ecto query telemetry event now also reports its timing values as ecto_query_time, ecto_queue_time, ecto_decode_time, ecto_idle_time and ecto_total_time distribution metrics.

    All five metrics are tagged by repo and hostname. The ecto_query_time, ecto_decode_time and ecto_total_time metrics are additionally tagged by repo and source (the Ecto table).

    This surfaces pool waits, decode time, idle connection time and per-table latency as standalone metrics in addition to the existing query span.

Fixed

  • Preserve sub-millisecond precision when reporting timing distribution metrics.

    The Ecto (ecto_query_time, ecto_queue_time, ecto_decode_time, ecto_idle_time, ecto_total_time) and Oban (oban_job_duration, oban_job_queue_time) distribution metrics now report fractional milliseconds, instead of being truncated to whole milliseconds. Sub-millisecond measurements were previously rounded down to zero.

View the Elixir package v2.17.2 changelog for more information.

May 14, 2026

Elixir package v2.17.1

Elixir2.17.1

Fixed

  • Continue reporting non-disk host metrics when a mount is frozen.
  • Fix compatibility with Finch 0.22+. This change moves SSL and proxy options to pool-level conn_opts in Finch.start_link.

Security

  • CVE-2026-32686 describes an unauthenticated remote Denial of Service vulnerability in decimal before 3.0.0. Loosen decimal requirement to allow ~> 3.0 and fix compatibility with ecto.

View the Elixir package v2.17.1 changelog for more information.

May 13, 2026

Log-based metrics, now in beta

Turn any log source into a stream of metrics — without writing application code or paying to index every line.

Log-based metrics is now in beta, and joins the existing beta and preview features in AppSignal Labs. Define a query against any log source, choose a metric type, and AppSignal extracts the value during ingestion.

Log-based metrics: log lines flowing into metric charts on a dashboard

AppSignal supports three metric types:

  • Count — count matching log lines (5xx responses, failed logins, retries).
  • Gauge — record the value of an attribute at ingestion (queue depth, connection count).
  • Measurement — build a histogram of a numeric attribute over time (request duration, payload size, job runtime).

Extraction runs as a log line action, in an order you control. Place it before any filter actions on the same source and you can keep the metric while discarding the underlying log line — handy for high-volume sources you don't need to search line-by-line.

To create one, open the Logs Explorer and select Create a metric — either from the view's ⋮ menu (using the current query) or from a numeric attribute on any log line (using that attribute as the field). Manage your metrics on the new Metrics page under Logging. Any metrics created through the AppSignal MCP manage_log_line_action tool are visible there too.

Read the documentation for examples and patterns.

May 06, 2026

Dark mode is now in beta

A dark theme for the AppSignal UI is now available as part of AppSignal Labs.

Light mode remains the default. To opt in, click your profile picture in the top-right corner and switch the Theme toggle to:

  • Light — the default
  • Dark — always-on dark mode
  • System — follows your OS preference

We're rolling this out gradually as we polish the rough edges, so expect a few screens that aren't quite there yet. Found one that doesn't look right? Tell us — that's the whole point of Labs.

Learn more about AppSignal Labs →

Apr 24, 2026

Limit collector memory usage

Fixed

  • Cap the amount of metric states stored for cumulative-to-delta conversion, preventing high-cardinality tag combinations from causing excessive memory usage.
  • Evict and block traces that accumulate large amounts of orphaned spans, preventing them from growing unboundedly in memory.

This release can be installed through our collector packages and Docker image.

Apr 21, 2026

AppSignal JavaScript `urql` package v1.0.0

JavaScript@appsignal/urql@1.0.0

Added

  • Our new @appsignal/urql package allows reporting all GraphQL errors automatically through a custom urql exchange:

    JavaScript
    import { createClient, fetchExchange } from "urql";
    import Appsignal from "@appsignal/javascript";
    import { createAppsignalExchange } from "@appsignal/urql";
     
    const appsignal = new Appsignal({
      key: "YOUR FRONTEND API KEY",
    });
     
    const client = createClient({
      url: "https://api.example.com/graphql",
      exchanges: [createAppsignalExchange(appsignal), fetchExchange],
    });

View the AppSignal JavaScript urql v1.0.0 changelog for more information.

Apr 15, 2026

MCP Server: Performance, Logs, and More

AppSignal MCP graduates from beta to preview with this release.

The AppSignal MCP server now exposes 24 tools across seven areas — up from 18 — with two new capability areas and expanded write access throughout.

What's new:

  • Performance: Ask your agent which actions are slowest, pull traces for a specific action, inspect full span trees, and drill into individual spans. Works with both sample-based performance data and OpenTelemetry traces.
  • Logging: Search log lines using AppSignal's expression syntax, and set up log processing rules directly from your editor: create filters, trigger alerts, extract metrics from log lines, and control execution order.
  • Anomaly triggers: In addition to listing triggers and alerts, you can now create, update, and archive anomaly detection triggers without leaving your editor.
  • OAuth support: The MCP server now supports OAuth authentication, which unlocks GitHub Copilot CLI support.

Token permissions now include the performance and logging toolsets alongside app, exceptions, metrics, anomalies, and dashboards.

For setup instructions and the full tool reference, see the MCP documentation. Read the full blog post for the complete breakdown.

Mar 17, 2026

Update OpenTelemetry dependencies to v2

Node.js3.8.0

Changed

  • Update OpenTelemetry dependencies to v2. All bundled OpenTelemetry packages have been updated to their OpenTelemetry v2-compatible versions. This resolves compatibility issues when third-party span processors or instrumentations are used alongside AppSignal, which could cause spans to silently drop due to v1/v2 incompatibilities. The @opentelemetry/instrumentation-redis-4 package has been removed. Redis v4 instrumentation is now handled by @opentelemetry/instrumentation-redis, which supports both Redis v3 and v4.
  • Update Prisma instrumentation to v7. The @prisma/instrumentation package has been updated from v6 to v7. The middleware config option has been removed, as Prisma dropped its middleware API in Prisma v5. Prisma's native tracing is now the only supported instrumentation method.
  • Bundled certificates have been updated.
  • Update BullMQ OpenTelemetry extractor to support new messaging semantic conventions.
  • Use system-specific operation name in messaging span names.

View the Node.js package v3.8.0 changelog for more information.

$appsignal install

Make your next crash make sense.

Free for 30 days. No credit card. Two-minute install.