• /
  • EnglishEspañolFrançais日本語한국어Português
  • Log inStart now

Ruby agent release notesRSS

April 9
Ruby agent v10.3.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v10.3.0

  • Feature: Add database query naming via SQL comments

    Database queries can now be explicitly named using SQL comments. Queries can include /* NewRelicQueryName: CustomName */ comments to assign stable names for better tracking and identification. This is especially useful for tracking specific database queries during performance regressions or incidents. PR#3480

  • Feature: Add Semantic Logger instrumentation

    The agent now supports Semantic Logger log forwarding and decoration for the semantic_logger gem versions 4.6.0+. If you were previously using Semantic Logger's built-in New Relic appender, it is recommended to choose one approach to avoid sending duplicate logs. New Relic's Semantic Logger instrumentation can be disabled by setting instrumentation.semantic_logger to disabled. PR#3467

    Thanks to @jdelStrother for providing valuable feedback that helped shape this instrumentation.

  • Feature: Add new 'ignored_middleware_classes' configuration

    A new configuration option, ignored_middleware_classes, allows users to exclude specific middlewares from instrumentation (ex. Rack::Cors). It defaults to an empty array. Issue#1814 PR#3481

  • Feature: Add new NewRelic::Agent.add_transaction_log_attributes API

    A new API, NewRelic::Agent.add_transaction_log_attributes, allows users to add transaction-scoped custom attributes to log events for the current transaction. These attributes will only be applied to logs created within the scope of the current transaction. PR#3472

  • Bugfix: Provide config option to reduce cardinality of ActionCable broadcast metrics

    By default, the metrics for ActionCable broadcast method calls include the value of the broadcasting. This value can have very high cardinality. Now, the :simplify_action_cable_broadcast_metrics configuration option allows users to remove the broadcasting value from the metric name. This creates a metric that looks like: Ruby/ActionCable/broadcast. When this configuration option is enabled, the broadcasting value will be added as a span attribute. PR#3463

  • Bugfix: Remove dead 'digest/md5' require for FIPS/FedRAMP compliance

    In version 7.1.0 of the agent, MD5 usage was replaced with SHA1 for FIPS compliance (PR). However, the old require for 'digest/md5' was not removed. We have removed the require to help our FIPS/FedRAMP users. Thank you to @ashleyboehs for bringing this to our attention! Issue#3469 PR#3470

  • Bugfix: Prevent agent from starting during rails test to avoid shutdown delay

    Previously, the agent would cause a ~3 second shutdown delay when running the rails test command. The Rails::Command::TestCommand constant has been added to the default autostart.denylisted_constants list to prevent the agent from starting during Rails test runs. Thanks to @varyform for bringing this to our attention. PR#3478

  • Bugfix: Fix "Unable to calculate elapsed transaction time" warnings when using Falcon web server

    The agent now uses Fiber.current.object_id instead of Thread.current.object_id to track transaction state when running under Falcon, preventing collisions from concurrent requests sharing the same thread. Also fixes a "NameError: uninitialized constant Async::HTTP::VERSION" when using Falcon. Thanks to @97jaz and @gsar for bringing this to our attention. PR#3483

  • Bugfix: Fix typo in harvest.rb causing NoMethodError

    A typo in lib/new_relic/agent/agent_helpers/harvest.rb caused a NoMethodError: undefined method 'agent' for NewRelic:Module. Thanks to @oakbow for reporting this issue. PR#3484

  • Bugfix: Remove usage of deprecated ObjectSpace._id2ref

    The agent now uses an alternative approach instead of the deprecated ObjectSpace._id2ref method, eliminating deprecation warnings when running on Ruby 4.0+. PR#3490

  • Bugfix: Fix NoMethoError in Logging instrumentation

    Previously, when the Logging gem instrumentation attempted to decorate local logs, it would raise a NoMethodError if it encountered a non-string object. This is now fixed. PR#3501

February 18
Ruby agent v10.2.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v10.2.0

  • Feature: Introduce Hybrid Agent for OpenTelemetry Tracing Support

    OpenTelemetry Tracing APIs can now be translated into New Relic telemetry with the New Relic Ruby agent's new Hybrid Agent features. This allows the newrelic_rpm gem to behave similarly to an OpenTelemetry SDK, accepting OpenTelemetry API calls and turning them into New Relic Transactions and Segments with familiar attributes and names.

    The following configuration options relate to Hybrid Agent features:

    Configuration nameDefaultBehavior
    opentelemetry.enabledfalseA global configuration option for disabling all OpenTelemetry signals sent through New Relic.
    opentelemetry.traces.enabledtrueEnables the creation of Transaction Trace segments and timeslice metrics from OpenTelemetry Spans
    opentelemetry.traces.include''A comma-delimited list of OpenTelemetry Tracers, represented as a string (e.g. "AppTracer1,OpenTelemetry::Instrumentation::Bunny::Instrumentation"), that will have their trace signals sent to New Relic.
    opentelemetry.traces.exclude''A comma-delimited list of OpenTelemetry Tracers, represented as a string (e.g. "AppTracer1,OpenTelemetry::Instrumentation::Bunny::Instrumentation"), that will not have their trace signals sent to New Relic. All known tracers for instrumentation that conflicts with New Relic instrumentation are excluded by default.
  • Feature: Add configuration option error_collector.backtrace_truncate_location

    A new configuration option has been added, error_collector.backtrace_truncate_location, which allows the user to specify where in the backtrace to truncate when the number of frames exceeds error_collector.max_backtrace_frames. Options are 'top' (removes frames from the beginning), 'middle' (removes frames from the middle, preserving the beginning and end), or 'end' (removes frames from the end). The default is 'middle'. PR#3424

  • Feature: Add Logging gem instrumentation

    The agent will now record logs generated by the Logging gem. PR#3420

  • Feature: Add configuration option utilization.detect_in_parallel

    A new configuration option has been added, utilization.detect_in_parallel, which controls whether the agent uses threads when detecting cloud vendor information to speed up agent startup. When set to false, vendor detection runs sequentially without creating threads. The default is true. PR#3439

February 3
Ruby agent v10.1.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v10.1.0

  • Feature: Add support for forking processes in Parallel gem instrumentation

    Parallel gem instrumentation has been added to allow more consistent monitoring in processes forked using the Parallel gem. PR#3405

  • Feature: Add support for Grape v3.1.0

    Grape's release of v3.1.0 introduced changes that were incompatible with the agent's instrumentation, causing issues when collecting transaction names. The agent has been updated to properly extract class names for transaction naming in the updated Grape API structure. PR#3413

  • Bugfix: Create health check files in forked processes

    The agent now properly initializes health check loops after forking, ensuring each process generates its own health check file. This fix also has the effect of correctly including entity.guid values in the health check files. PR#3409 Issue#3408

  • Bugfix: Fix sidekiq.ignore_retry_errors

    The configuration option sidekiq.ignore_retry_errors: true was continuing to report retry errors. The agent now correctly ignores retry errors and only reports when jobs permanently fail. PR#3399

January 14
Ruby agent v10.0.0

Important

Major Version Update: This version of the Ruby agent is a SemVer MAJOR update and contains breaking changes. MAJOR versions may drop support for language runtimes that have reached End-of-Life according to the maintainer. Additionally, MAJOR versions may drop support for and remove certain instrumentation. For more details on these changes please see the migration guide here.

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v10.0.0

  • Breaking Change: Remove support for Ruby 2.4 and 2.5

    Support for Ruby versions 2.4 and 2.5 has been removed. The new minimum required Ruby version is now 2.6. PR#3314

  • Breaking Change: Removal of Cross Application Tracing (CAT)

    Previously, Cross Application Tracing (CAT) was deprecated in favor of Distributed Tracing. CAT functionality has now been removed. The configuration option cross_application_tracer.enabled has been removed. Public API methods NewRelic::Agent::External.process_request_metadata, NewRelic::Agent::External.get_response_metadata, NewRelic::Agent::Transaction::ExternalRequestSegment#process_response_metadata, NewRelic::Agent::Transaction::ExternalRequestSegment#get_request_metadata, and NewRelic::Agent::Transaction::ExternalRequestSegment#read_response_headers have also been removed. PR#3333

  • Breaking Change: Rename ActiveJob metrics and segments

    ActiveJob metrics have been updated to include the job's class name for more specific reporting. This is a breaking change and may require updating custom dashboards or alerts. PR#3370 PR#3320

    • Old format: Ruby/ActiveJob/<QueueName>/<Method>
    • New format: Ruby/ActiveJob/<QueueName>/<ClassName>/<Method>

    In addition, segments created for Active Job enqueuing actions now include the job class.

    • Old format: ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName>
    • New format: ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName>/<ClassName>
  • Breaking Change: Rename bin/newrelic command to bin/newrelic_rpm

    The executable file for the agent's CLI has been renamed from bin/newrelic to bin/newrelic_rpm. This change resolves a name collision with the standalone New Relic CLI tool. PR#3323

  • Breaking Change: Remove the newrelic deployments CLI command

    The deprecated newrelic deployments CLI command has been removed. To track changes and deployments in New Relic, please see our guide to Change Tracking for a list of available options. PR#3299

  • Breaking Change: Remove the NewRelic::Agent::SqlSampler#notice_sql method

    Users should call NewRelic::Agent::Datastores.notice_sql instead. PR#3338

  • Breaking Change: Remove unused arguments from various NewRelic::Agent::Datastores APIs

    The following APIs from the NewRelic::Agent::Datastores class have had method arguments removed:

    • NewRelic::Agent::Datastores.notice_sql, previously had three positional arguments, query, scoped_metric and elapsed. Now, it only has query.
    • NewRelic::Agent::Datastores.notice_statement, previously had two positional arguments query and elapsed. Now it only has query.
    • NewRelic::Agent::Datastores.wrap requires a proc. Previously the proc received three arguments: the result of the yield, the most specific scoped metric name, and the elapsed time of the call. Now, it only receives one: the result of the yield.

    The values of the removed arguments are derived from the current segment at the time of the call. PR#3347

  • Breaking Change: Remove experimental feature Configurable Security Policies (CSP)

    The experimental feature, Configurable Security Policies (CSP), is no longer supported and has been removed. PR#3292

  • Breaking Change: Remove support for Puma versions < 3.9.0

    The minimum version of Puma now supported is 3.9.0 or higher. PR#3326

  • Breaking Change: Improve configuration validation and coercion

    The internals used to coerce and validate the values provided for agent configuration are now more performant and more accurate.

    • Warning messages will now be logged to the newrelic_agent.log file when nil is provided as a config value for a setting that does not support it.
    • Integer values are permitted for Float configuration types
    • Float values are permitted for Integer configuration types
    • Fatal interruptions are prevented when a default value can be found to replace an invalid input value PR#3341
  • Breaking Change: Replace 'default' option with 'adaptive' for distributed tracing remote parent samplers

    Previously, the default option for distributed_tracing.sampler.remote_parent_sampled and distributed_tracing.sampler.remote_parent_not_sampled was default, which used the pre-existing adaptive sampler. The default option has been renamed to adaptive. PR#3363

  • Feature: Add logger as a dependency

    The logger gem is now listed as a dependency of the agent to ensure continued logging functionality and support for Ruby 4.0.0 and newer versions. PR#3293

  • Feature: Add Active Support notification allowlist configuration option

    A new configuration option, instrumentation.active_support_notifications.active_support_events, allows users to define an allowlist of Active Support notifications event names for the agent to subscribe to. By default, the agent subscribes to all Active Support: Caching and Active Support: Messages events. PR#3327

  • Feature: Use Ruby's built-in Gzip compression

    The agent now uses the built-in Zlib.gzip method from the Ruby standard library for compression, replacing the previous custom implementation. PR#3332

  • Feature: Add argument validation for the NewRelic::Agent#record_custom_event API

    The NewRelic::Agent#record_custom_event API now raises an ArgumentError when an invalid event_type is provided. A valid event type must consist only of alphanumeric characters, underscores (_), colons (:), or spaces ( ). PR#3319

  • Feature: Add root sampling configuration options

    You can now configure the sampling behavior for traces that originate within the current service using distributed_tracing.sampler.root. PR#3330

    There are four modes available:

    ModeDescription
    adaptiveUses the existing adaptive sampler algorithm
    always_offMarks 0% of root traces as sampled
    always_onMarks 100% of root traces as sampled
    trace_id_ratio_basedSamples traces based on a ratio set in distributed_tracing.sampler.root.trace_id_ratio_based.ratio. The ratio must be float between 0.0 and 1.0
  • Feature: Add Trace ID Ratio Based sampling options

    The agent can now sample traces using the OpenTelemetry Trace ID Ratio Based sampler algorithm. PR#3330 This samples traces based on a probability between 0.0 and 1.0 based on the trace ID.

    To use this option, you must first set your distributed tracing sampler configuration to trace_id_ratio_based and then set the corresponding distributed_tracing.sampler.*.trace_id_ratio_based.ratio sampler to a Float between 0.0 and 1.0.

    For example:

    distributed_tracing.sampler.remote_parent_sampled: 'trace_id_ratio_based'
    distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based.ratio': 0.5

    This configuration would sample approximately 50% of your traces for all traces where the remote parent is sampled.

    This option is available for:

    • distributed_tracing.sampler.root
    • distributed_tracing.sampler.remote_parent_sampled
    • distributed_tracing.sampler.remote_parent_not_sampled
  • Feature: Add Entity GUID to Agent Control health check files

    When the agent is started within an Agent Control environment, a health check file is created at the configured file location for every agent process. This file now includes the guid of the entity related to the agent when available. PR#3371

  • Bugfix: Resolve a NoMethodError in GCP utilization detection.

    The GCP metadata discovery logic will now gracefully handle nil or unexpected values, preventing service initialization crashes. PR#3388

December 2, 2025
Ruby agent v9.24.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v9.24.0

  • Feature: Deprecation reminder for SqlSampler#notice_sql API

    The NewRelic::Agent::SqlSampler#notice_sql method is deprecated and will be removed in a future major version. Instead, users should call NewRelic::Agent::Datastores.notice_sql. PR#3345

  • Feature: Deprecation notice for second and third arguments in Datastores.notice_sql API

    The second (scoped_metric) and third (elapsed) arguments in the NewRelic::Agent::Datastores.notice_sql method are deprecated. They have not been used by the method for some time. Instead, these values will be set based on the current segment when the API is called. PR#3345

  • Feature: Deprecation notice for second argument in Datastores.notice_statement API

    The second (elapsed) argument in the NewRelic::Agent::Datastores.notice_statement method is deprecated. It has not been used by the method for some time. Instead, this value will be set based on the current segment when the API is called. PR#3346

  • Feature: Deprecation notice for proc's second and third arguments in Datastores.wrap API

    The NewRelic::Agent::Datastores.wrap method is changing. In a future major version, proc will only accept a single argument, the result of the yield. The scoped metric name and elapsed arguments will be removed, as they are being removed from the Datastores.notice_sql method. The scoped metric name and elapsed values are derived from the current segment when the wrap yields. PR#3346

November 12, 2025
Ruby agent v9.23.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v9.23.0

  • Feature: Add sidekiq.ignore_retry_errors configuration option

    A new configuration option, sidekiq.ignore_retry_errors, has been added to control if Sidekiq job retries are captured. Retry errors are captured by default, but now if sidekiq.ignore_retry_errors is set to true, the agent will ignore exceptions raised during Sidekiq's retry attempts and will only report the error if the job permanently fails. Thank you DonGiulio for recognizing this improvement and contributing a solution. PR#3317

  • Feature: Deprecation notice for recording deployments using Capistrano

    Sending application deployment information using a Capistrano recipe is deprecated and will be removed in agent version 10.0.0. For recording deployments, please see our guide to Change Tracking for a list of available options.

  • Feature: Use remote parent sampling configurations for decisions in more scenarios

    Previously, the distributed_tracing.sampler.remote_parent_sampled and distributed_tracing.sampler.remote_parent_not_sampled configuration options were used for the sampling decision only when the traceparent and tracestate headers were present. Now, these configuration options are applied in cases when the tracestate header is missing and when only the newrelic header is available. This change makes distributed trace sampling more consistent and predictable. PR#3306

October 7, 2025
Ruby agent v9.22.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v9.22.0

  • Feature: One-step instrumentation for Kubernetes

    The Kubernetes APM auto-attach automatically instruments applications and manages agent upgrades within Kubernetes deployments. This feature has exited preview and is now generally avaliable. Learn more about Kubernetes auto-attach. PR#2635 PR#3287

  • Feature: Deprecation notice for Ruby 2.4 and Ruby 2.5

    Ruby agent support for Ruby versions 2.4 and 2.5 is deprecated and will be removed in agent version 10.0.0. The new miniumum required Ruby version will become Ruby 2.6 and we will stop testing with Ruby 2.4 and 2.5. PR#3288

  • Feature: Deprecation notice for the newrelic deployments command

    Support for recording deployments using the newrelic deployments command is now deprecated and will be removed in agent version 10.0.0.

    Going forward, there are a number of automated and manual ways ways to record changes in New Relic. Please see our guide to Change Tracking for a list of available options. PR#3262

  • Feature: Deprecation reminder for cross application tracing

    Cross application tracing has been deprecated since major version 8.0.0 of the Ruby agent. We will remove support for it entirely in version 10.0.0 of the agent. PR#3288

  • Feature: Ensure compatibility with Ruby 3.5 change to Method#source_location

    Updated the agent to correctly parse the return value of Method#source_location, which is changing in Ruby 3.5 from a two-element to a five-element array. This change maintains support for older Ruby versions while adding support for the future release. PR#3257

August 27, 2025
Ruby agent v9.21.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v9.21.0

  • Feature: In Serverless APM mode, use event source name as transaction name prefix

    The agent will now use the event source name as a prefix for the transaction name in Serverless APM mode. This will help to better identify the source of the transaction in the New Relic UI. PR#3245

  • Bugfix: Revert changed logic for how we track the thread the span starts in

    This change restores the previous behavior of tracking the thread the span starts in, addressing issues that arose from the updated logic. Thank you @david-zw-liu for bringing this to our attention. PR#3248

July 31, 2025
Ruby agent v9.20.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v9.20.0

  • Feature: Add ECS Docker ID for Fargate

    Previously, the Ruby agent did not record the Docker ID when running in an AWS ECS Fargate environment. The Docker ID will now be recorded correctly. PR#3172

  • Feature: Add NewRelic::Helper.version_satisfied?

    The agent has a new helper method to simplify version comparison. NewRelic::Helper.version_satisfied? accepts three arguments: a left-side version number, the comparison operator as a string, and a right-side version number. Our thanks go to @kekke-n for this contribution. PR#3182

  • Feature: Add code.stacktrace attribute on datastore spans when duration exceeds configured threshold

    The agent will now add the code.stacktrace attribute to datastore spans when the duration exceeds the configured threshold. The threshold is configured using the transaction_tracer.stack_trace_threshold configuration option. PR#3220

  • Feature: Consolidate "Unknown" constant values

    All references to the various capitalization styles for "Unknown" have been consolidated into two constants: NewRelic::UNKNOWN and NewRelic::UNKNOWN_LOWER. Thank you, @tsubasa1122, for your contribution! PR#3185

  • Bugfix: Fix Brewfile source links

    Previously, the multiverse README's links to the Brewfile were broken. Our thanks go to @emmanuel-ferdman for submitting a PR to fix them! PR#3191

  • Bugfix: Fix error when using HTTPX 1.5.0

    The agent previously encountered an error when using the new HTTPX version 1.5.0. This was due to a change in the way HTTPX stores the response. The agent has been updated to handle this change correctly, and no longer encounters an error when using HTTPX 1.5.0. PR#3203

  • Bugfix: Bugfixes and improvements to debug level agent logs

    Improves the information logged at the debug level by the agent when the agent reads in a configuration source. PR#3221

  • Bugfix: Fix risk of server-side forgery for Slack workflow script

    Internally, we keep track of gems that are released using a GitHub actions workflow that posts updates on Slack. [@odaysec] identified a way we could reduce the risk of server-side forgery for this workflow. Thank you! PR#3184

  • Bugfix: Replace JSON.load calls with JSON.parse

    Generally, JSON.parse is seen as safer than JSON.load. Thank you, @odaysec, for bringing this to our attention! PR#3183 PR#3230

April 30, 2025
Ruby agent v9.19.0

Important

We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.

See the New Relic Ruby agent EOL policy for information about agent releases and support dates.

v9.19.0

  • Feature: Add Thread ID as attribute to all spans

    The agent will now record the Thread ID as an attribute on each span. PR#3122

  • Feature: Add support for W3C TraceContext Trace Flag

    Previously, the agent would not use the trace flag field of the traceparent header for sampling decisions. This could lead to fragmented traces in the UI. While the default behavior remains unchanged, two new configuration options, distributed_tracing.sampler.remote_parent_sampled and distributed_tracing.sampler.remote_parent_not_sampled, have been introduced to allow more control over the way sampling decisions are made. PR#3135

  • Bugfix: Include request.uri in Transaction events by default

    The New Relic data dictionary expects Transaction events to have the request.uri attribute. The Ruby agent now fulfills this expectation. If you would like to exclude request.uri from Transaction events, you can do so by setting transaction_events.attributes.exclude to 'request.uri'. PR#3103

  • Bugfix: Fix error in Active Job instrumentation when using perform_all_later

    Previously, when Active Job's perform_all_later method was called and the agent was running, a NoMethodError would be raised with the message undefined method 'queue_name' for nil. The error has been fixed and the name of the segment will reflect the first job in the queue. Our thanks goes to @tan-linx for bringing this to our attention and providing a fix. PR#3110

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.