Changelog

Improving AppSignal, one deploy at a time.

Sep 10, 2026

Elixir package v2.17.5

Elixir2.17.5

Changed

  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.

Fixed

  • Fix the sanitization of function arguments in SQL statements.

    Before this release, SQL sanitization of function arguments stripped out parts of the SQL statement after the function argument list.

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

Sep 10, 2026

Node.js package v3.9.1

Node.js3.9.1

Fixed

  • Fix the sanitization of function arguments in SQL statements.

    Before this release, SQL sanitization of function arguments stripped out parts of the SQL statement after the function argument list.

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

Sep 10, 2026

CLI v2.2.0

Added

  • Add dashboard chart inspection, creation, and partial updates from JSON files or stdin.

    Creating dashboards and charts now requires a nonempty description. Partial updates continue to preserve omitted descriptions.

Fixed

  • Fix dashboard commands rejecting valid API source values.
  • Restore exception details and ordered error causes in incidents show using retained traces. Cause backtrace locations remain available. If optional details cannot be loaded within ten seconds, the command preserves available results and warns on stderr without failing.
  • Structured metadata from JSON logs is now included in both JSON and human output from logs search and logs tail.

View the CLI v2.2.0 changelog for more information.

Sep 10, 2026

Ruby gem v4.10.3

Ruby4.10.3

Fixed

  • Fix the sanitization of function arguments in SQL statements.

    Before this release, SQL sanitization of function arguments stripped out parts of the SQL statement after the function argument list.

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

Sep 09, 2026

Support Grape 4 and other improvements

Ruby4.10.2

Added

  • Add support for Grape 4. On Grape 4, every request through a Grape API raised a NoMethodError. Applications on Grape 3 and below were not affected.

    On Grape 4, the action name and the reported path now describe the endpoint's full route, so they include the API prefix, the path version and the mount point. They also no longer end in a trailing slash when the endpoint declares no path of its own, so an endpoint reported as GET::My::Api#/users/:id/ is now reported as GET::My::Api#/users/:id. Action names on Grape 3 and below do not change.

Changed

  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.

Fixed

  • Load the host Rails application before the appsignal demo command reads the AppSignal configuration. This matches the behavior of appsignal diagnose.

    Thanks @Guflly for your contribution!

  • Fix events showing as unknown in long-running applications. An application process that kept running for thirty days without restarting could lose the names and queries of the events it recorded, both in slow traces and in the "Slow events" panel.

  • Prevent gc events from appearing in the "Slow events" panel.

  • Report Delayed Job jobs that fail to load. Before this change, a job whose payload could not be deserialized was not reported to AppSignal at all.

    This can happen when a deploy removes or renames a job class while jobs of that class are still queued. Those jobs are now reported as failed, with the Delayed::DeserializationError they raised, and are named after the class recorded in the job's handler. When even that cannot be read, they are named DelayedJobInternal.

  • Record a single event for a bulk enqueue of Active Job jobs. Before this change, enqueuing jobs with ActiveJob.perform_all_later would record an event for the batch and, if the adapter was instrumented with AppSignal, another event for each job in it. A job that slices a large collection and enqueues it in batches was therefore reported with an event per job enqueued, where before version 4.9.0 it had one event per batch.

    A bulk enqueue is now recorded as a single enqueue_all.active_job event, named after the job class when every job in the batch shares one.

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

Sep 09, 2026

Update the agent in the 3.x series

Ruby3.13.2

Changed

  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.
  • Update the agent from version 0.35.19 to version 0.37.0. The 3.x series of the Ruby gem was several agent releases behind, so this update also brings the improvements from every agent release in between. Those include better sanitisation of SQL queries, host metric collection that keeps working when a disk mount is frozen, and no more leftover [timeout] processes on Alpine Linux containers.

Fixed

  • Fix events showing as unknown in long-running applications. An application process that kept running for thirty days without restarting could lose the names and queries of the events it recorded, both in slow traces and in the "Slow events" panel.
  • Prevent gc events from appearing in the "Slow events" panel.

View the Ruby gem v3.13.2 changelog for more information.

Sep 09, 2026

Python package v1.7.1

Python1.7.1

Fixed

  • Fix the sanitization of function arguments in SQL statements.

    Before this release, SQL sanitization of function arguments stripped out parts of the SQL statement after the function argument list.

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

Sep 08, 2026

Support host metrics in collector mode

Python1.7.0

Added

  • Add an ignore_logs option, which takes a list of patterns. Log lines that match any of the patterns are not sent to AppSignal. Set it with the APPSIGNAL_IGNORE_LOGS environment variable, or as an option on the Appsignal client. Read our ignore logs guide for the patterns that are supported.

    This option only has an effect in collector mode, because that is the only mode in which this package sends logs.

  • Report host metrics, NGINX metrics, StatsD metrics and environment metadata when using a collector. These are sent by the AppSignal agent, which now runs alongside the collector instead of being replaced by it.

  • Detect the revision that is being deployed from the environment variables set by Heroku, Render, Kamal and Scalingo: HEROKU_SLUG_COMMIT, RENDER_GIT_COMMIT, KAMAL_VERSION and CONTAINER_VERSION. Applications deployed on those platforms now report their revision without setting the revision configuration option.

    This affects collector mode, where deploys were reported as unknown when the revision was not configured.

Changed

  • Report app instead of unknown as the OpenTelemetry service name when the service_name configuration option is not set and collector mode is in use.
  • On Heroku, report the name of the dyno as the hostname. Before, the hostname of the container that the dyno runs in was reported, so applications running on Heroku will see their data reported under a new host name.
  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.

Fixed

  • An option set to None when initializing the Appsignal client no longer replaces a value that AppSignal detected itself. For example, Appsignal(hostname=None) now reports the detected hostname, instead of reporting no hostname at all. Options that AppSignal does not detect are unchanged: setting request_headers to None, for example, still turns off request header collection.
  • In collector mode, backtrace lines from your own application are now shown as paths relative to your application's root, and are recognized as your application's code.
  • Send the traces, metrics and logs that are still buffered when stop is called, instead of dropping them.
  • Apply the ca_file_path and http_proxy configuration options to the data sent to a collector. Before this change both options were only applied to the data sent by the agent, so a custom certificate authority file or a proxy had no effect when a collector was used.
  • Stop running minutely probes when stop is called. Before this change they kept running and kept reporting metrics after AppSignal was stopped.

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

Sep 08, 2026

Support BullMQ 6 and update OpenTelemetry dependencies

Node.js3.9.0

Added

  • Report queue events from applications that use BullMQ's own telemetry, which is what BullMQ version 6 and newer offer through the bullmq-otel package. These were previously reported as uncategorised events named after the raw span, because BullMQ describes its spans with its own attributes rather than the OpenTelemetry messaging conventions. They are now named and categorised the same way as events from the @appsignal/opentelemetry-instrumentation-bullmq package.
  • Warn when your application loads more than one version of @opentelemetry/api, warning about potential data loss, as older versions fail to send data through global values configured by newer versions. The warning names the versions and where they were loaded from.

Changed

  • Update the bundled OpenTelemetry packages to their current versions. This resolves two reported vulnerabilities:

    • CVE-2026-59892 in @opentelemetry/propagator-jaeger, which this integration does not use but did bundle through @opentelemetry/sdk-node.
    • CVE-2026-54285 in @opentelemetry/core, which applies to the W3C baggage propagation that this integration does use.
  • Update the agent to handle high traffic apps. On high-traffic apps that would exceed the maximum accepted internal payload size, send data to the Push API more frequently.

  • Allow any 1.x version of @opentelemetry/api from 1.9.0 onwards. This prevents an issue where npm installs a second copy of the package for AppSignal alone, which can stop spans from being reported without any error.

Removed

  • Drop support for Node.js 18. The minimum supported version is now Node.js 20.6.0, which is what the bundled OpenTelemetry packages require.

Fixed

  • Keep naming MongoDB events after the operation they perform when the @opentelemetry/instrumentation-mongodb package is version 0.74.0 or newer. That version renames its spans to follow the stable database semantic conventions, and events from it were being named unknown.mongodb as a result.
  • Report the queue name on BullMQ events as the queue tag. It was being reported as the message_destination tag instead.
  • Do not emit B3 trace context propagation headers. If you relied on AppSignal to send the trace context in the b3 or x-b3-* headers, you can configure that yourself by passing your own textMapPropagator to the OpenTelemetry SDK.

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

Sep 03, 2026

Logs query autocomplete, now in beta

The logs query bar now suggests what you can filter on, so you can build a query by selecting from a list instead of remembering the syntax.

Logs query bar with three applied filters and a dropdown of fields and attributes

Select the query bar and a dropdown opens with two groups:

  • Fields are on every log line: severity, source, hostname, group, and message.
  • Attributes are the keys AppSignal finds in your own JSON log lines, such as code.file.path or data.args.

Select a field, then an operator, then a value. The operators are is, is not, contains, does not contain, is one of, and is none of. You can still type or paste a full query. AppSignal turns the parts it recognizes into pills and keeps the rest as plain text you can edit.

Try it the next time you filter your logs and tell us how it goes on our Discord server. Read the query syntax documentation for the syntax behind the pills.

Sep 01, 2026

Fix host metrics and query sanitization

Collector0.11.3

Fixed

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

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

  • Sanitize Redis spans' query text instead of the command name.

    The collector previously redacted db.operation / db.operation.name, which per the OpenTelemetry semantic conventions only contains the command verb (e.g. GET, HMSET) with nothing to redact, and left the full command-with-arguments in db.query.text / db.statement unredacted. The full command is now correctly sanitized, matching how the official OpenTelemetry Redis instrumentations emit data.

    As a side effect, Redis spans now group by command shape rather than by exact arguments, the same way SQL spans group by query shape.

  • Sanitize SQL queries for database systems reported using the current OpenTelemetry semantic conventions.

    The collector's SQL sanitization only recognized the db.system values from semantic conventions up to v1.29.0. Values renamed in v1.30.0, when the attribute became db.system.name, such as microsoft.sql_server for Microsoft SQL Server, were not recognized, so their queries were stored without sanitization. Both the older db.system values and the current db.system.name values are now recognized.

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

Aug 21, 2026

Pre-release: collector mode

Ruby5.0.0.rc.1

Added

  • Add a collector_endpoint configuration option (APPSIGNAL_COLLECTOR_ENDPOINT environment variable) that puts the integration in collector mode. In collector mode AppSignal reports traces, metrics and logs to an AppSignal Collector, over OTLP/HTTP.

    Collector mode requires Ruby 3.1 or newer, and the OpenTelemetry gems, which are not installed by default. Add the appsignal-opentelemetry gem alongside appsignal to install them. When they are missing or too old, AppSignal logs a warning and keeps reporting through its agent.

  • Add configuration options that map to OpenTelemetry resource attributes in collector mode: service_name, filter_attributes, filter_function_parameters, filter_request_query_parameters, filter_request_payload, response_headers, send_function_parameters, send_request_query_parameters and send_request_payload.

    In collector mode, existing options are passed to the collector as resource attributes as well: name, environment, hostname, revision, ignore_actions, ignore_errors, ignore_namespaces, request_headers, filter_session_data and send_session_data.

    Setting any of these without collector_endpoint, or setting filter_parameters, filter_metadata or send_params with it, logs a warning at startup.

Added

  • Add the appsignal-opentelemetry gem. It installs the OpenTelemetry gems that AppSignal needs to run in collector mode. Add it alongside appsignal to opt into collector mode with a single gem instead of listing each OpenTelemetry gem yourself:

    Ruby
    gem "appsignal"
    gem "appsignal-opentelemetry"

    Collector mode requires Ruby 3.1 or newer, so this gem does too. Its version stays in lockstep with the appsignal gem.

View the Ruby gem v5.0.0.rc.1 changelog for more information.

Aug 20, 2026

Honor custom CA file path during installation

Ruby4.10.1

Fixed

  • Use the CA certificate configured in APPSIGNAL_CA_FILE_PATH to download the AppSignal agent when installing this gem.

    The gem downloads the agent from our servers over HTTPS during installation. It always used the CA certificate bundled with the gem to verify that connection, whatever the value of the ca_file_path configuration option. This meant the installation failed behind a proxy that intercepts TLS connections, such as Zscaler, even when APPSIGNAL_CA_FILE_PATH pointed to a CA bundle that trusts the proxy.

    The bundled CA certificate is still used when APPSIGNAL_CA_FILE_PATH is not set.

    Thanks @Cosmo for your contribution!

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

Aug 10, 2026

Fix Excon instrumentation and other improvements

Ruby4.10.0

Changed

  • Fix Excon requests being reported as taking almost no time. An Excon request is now recorded as a single request.excon event covering the whole request, so the event lasts as long as the request did. The response.excon, retry.excon and error.excon events no longer exist. AppSignal also no longer registers itself as Excon's instrumentor.

  • Report which template was rendered for collection and layout render events.

  • Name ROM query events after ROM, rather than after the database they ran against. A query made through ROM was reported as query.postgres, or query.sqlite, or whatever else the application's database was. Those queries are now all reported as query.rom.

    Events that dry-monitor reports and AppSignal has no formatter for are now named after their event id followed by .dry, so an event reported as foo becomes foo.dry. They had no group at all before.

    If you have a dashboard, trigger or saved filter that names one of these events, point it at the new name.

Fixed

  • Fix a rare hang when stopping AppSignal in an application that sends check-ins. Stopping AppSignal waits for any check-in events that have not been transmitted yet, and it could wait forever instead of finishing.

  • Fix event formatters that register or unregister themselves. Calling unregister on the formatter itself, as in MyFormatter.unregister("my.event"), did nothing at all. The formatter stayed registered, and no error was raised and nothing was logged to say so. Calling register on the formatter itself stored it where AppSignal never looked for it, so it was never used to format an event.

    Registering and unregistering through Appsignal::EventFormatter itself, as in Appsignal::EventFormatter.unregister("my.event", MyFormatter), was not affected and keeps working the same way.

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

Aug 03, 2026

CLI v2.1.0

Added

  • Added --notification-frequency and --notification-threshold to incidents update, so incident notification behavior, including nth-occurrence notifications, can be configured from the CLI.
  • Trace listing commands now accept --query, allowing performance and error samples to be filtered by transaction tags such as tag.region=eu-west or by revision.
  • Added incident note listing, update, and delete commands, so you can find note IDs and edit or remove notes you authored.

Changed

  • The bundled AppSignal skill now documents and recommends Markdown for structured incident notes, including findings, actions, code, and links.

View the CLI v2.1.0 changelog for more information.

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.

$appsignal install

Make your next crash make sense.

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