Changelog

Improving AppSignal, one deploy at a time.

Jul 20, 2026

CLI v2.0.2

Added

  • Added appsignal-cli feedback so users and LLM workflows can send missing endpoint, feature, or broken behavior reports directly from the CLI, with optional contact email reuse for follow-up.

Changed

  • Exception incident details now show error causes when sample data is available, making wrapped root causes visible directly from incidents show.

View the CLI v2.0.2 changelog for more information.

Jul 17, 2026

Report internal memory usage

Collector0.11.0

Added

  • Track Collector's memory usage as internal metrics. The Collector will now self-report memory usage and uptime every minute.

Changed

  • Handle HTTP HEAD requests on the /up and / endpoints. These now respond with 200 OK so health checks and uptime monitors that use HEAD requests no longer receive a 404 response.

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

Jul 16, 2026

Instrument job enqueues, Faraday, and other improvements

Ruby4.9.0

Added

  • Improve Faraday support. AppSignal now instruments Faraday requests automatically, without double-instrumenting the underlying HTTP client. Turn it off with the instrument_faraday option. Read more in our Faraday integration docs.

  • Add config options to turn individual integrations off. Set instrument_sidekiq, instrument_shoryuken, instrument_que, instrument_resque, instrument_delayed_job, instrument_active_job, instrument_excon or instrument_mongo to false to disable that integration entirely. This turns off both the instrumentation of the jobs or requests and the enqueue instrumentation for that integration. They all default to true. Each can also be set through its environment variable, such as APPSIGNAL_INSTRUMENT_SIDEKIQ.

  • Instrument background job enqueues. Enqueuing a job now records an enqueue event on the active transaction, so enqueues made from within a web request or another job show up in the event timeline. This is recorded for Sidekiq (enqueue.sidekiq), Que (enqueue.que, plus bulk_enqueue.que for bulk enqueues on Que 2), Resque (enqueue.resque), Shoryuken (enqueue.shoryuken) and Delayed Job (enqueue.delayed_job). Each event is titled after the job being enqueued.

    For Active Job, the enqueue.active_job event is now recorded by AppSignal's own instrumentation rather than by Rails' native enqueue.active_job notification. The native notification is suppressed so the enqueue is recorded once, and the event is now titled after the job being enqueued.

    These enqueue events can be turned off with the enable_job_enqueue_instrumentation config option. Set it to false to stop recording enqueue events across all integrations, without affecting the instrumentation of the jobs themselves. It defaults to true and can also be set through the APPSIGNAL_ENABLE_JOB_ENQUEUE_INSTRUMENTATION environment variable.

  • Report the grape gem version in the environment metadata. For more information, see our environment metadata docs.

Fixed

  • Instrument HTTP.rb chained requests on http 6. Requests made through a chained client -- HTTP.follow.get(...), HTTP.headers(...).get(...), and so on -- go through HTTP::Session rather than HTTP::Client, and were not being recorded. They now produce a request.http_rb event like any other request.

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

Jul 06, 2026

Export sample details in Markdown for your AI assistant

Exception and performance sample detail pages now export as Markdown, alongside the existing JSON download. Open the sample's actions menu and select Download Markdown, or use the copy icon to copy it to your clipboard.

The Markdown is document in sections covering the backtrace, timeline, parameters, attributes, environment, deploy marker, and a context block. Paste it into an AI assistant like Claude or Codex to ask questions about the sample.

The Download JSON row now has the same copy icon, so you can copy either format the same way.

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 10, 2026

Fix host metrics timeout and other improvements

Node.js3.8.1

Fixed

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

  • 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.

  • Ensure sendError ends its span even when the callback throws.

View the Node.js package v3.8.1 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 →

$appsignal install

Make your next crash make sense.

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