All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased section should follow Release Toolkit.
Remember that the keywords that you can use under Unreleased section are:
- breaking => Major
- security => Minor
- enhancement => Minor
- bugfix => Patch
Only add an entry if it changes what a user of Agent Control experiences: a new capability, a changed behavior, or a fixed bug. Skip:
- Internal refactors with no behavior change
- Documentation-only changes
- Test-only changes
- Pipeline/CI changes, unless they add support for something new (e.g. a new build target)
- Linux: added Debian 13 (trixie) as a supported/published platform.
- Renamed the
secrets_providersconfig key tovalue_providers, the old key is kept for backwards compatibility. - OnHost: added support for RedHat 10
- K8s: add a new
nr-kubecmvalue provider to resolve variables from Kubernetes ConfigMaps. chart_values.globalis still supported in agentTypes, but deprecated. You can still configure globals viachart_values.[chart-name].global- Linux: added
uninstall.shscript bundled in the package that auto-detects the package manager (apt, yum, zypper) and removesnewrelic-agent-control.
- On-host: the eBPF agent now writes its status log under the AC managed filesystem directory instead of
/etc/newrelic-ebpf-agent. - On-host: fix false "already running" startup error when a stale PID file held a PID reused by an unrelated process.
- Suppress
Healthreporting (OpAMP and status server) for sub-agents whose agent type defines nohealth:block, including on initial supervisor start failure. - On-host: when an agent type is upgraded to a new version, stale filesystem entries declared by the old version are now removed via a diff instead of a full agent directory wipe; the sub-agent's OpAMP instance ID is preserved across version bumps.
- K8s: when a sub-agent type is upgraded to a new version, the OpAMP instance ID is now preserved across the upgrade; previously the fleet-data ConfigMap was deleted on every type change regardless of whether the agent name changed, causing a new instance ID to be generated on the next start.
- Linux:
postremovescript now correctly removesnewrelic-agent-controldirectories on any uninstall (not only onapt purge), and targets the right paths (/etc/newrelic-agent-control,/var/lib/newrelic-agent-control,/var/run/newrelic-infra) instead of the old infra-agent ones. - On-host: the service now retries indefinitely on failure (20 s delay) instead of stopping after 5 rapid restarts; applies to both the Linux systemd unit and the Windows SCM failure actions.
- Updated rust crate nr-auth to v0.5.2
- Updated rust crate opamp-client to v0.0.42
- Updated rust crate flate2 to 1.1.10
- Updated rust crate rcgen to 0.14.10
- Updated rust crate serde-saphyr to 1.2.0
- Updated alpine/kubectl to v1.37.0
- Updated rust crate aws-lc-rs to 1.18.1
- Updated rust crate toml to 1.1.5
- Updated rust to v1.98.1
- Updated rust crate windows-link to 0.100.0
- Updated rust crate windows-registry to 0.100.0
- Updated rust crate syn to 3.0.5
- Updated rust crate crossbeam to 0.8.5
- Updated rust crate rstest to 0.27.0
- Updated rust crate encoding_rs to 0.8.40
- Add support for variables override through
variable.agentConfigsyntax in Remote Configuration keys. - Add support for a single entry of a
string_mapvariable override throughvariable.agentConfig.<variable>:<map-key>syntax in Remote Configuration keys. - On-host infrastructure agent type (linux): expose the
nri-dockerintegration configuration through a newconfig_dockervariable.
- K8s supervisor: force a Flux reconciliation on stalled HelmReleases (e.g. after exhausting install/upgrade retries) when a new remote config
- On-host: report the actual last failure (launch error or non-zero exit) in the
lastErrorMessageof the unhealthy status once the restart policy is exceeded, instead of the generic "Restart policy exceeded" message. - On-host: persist fluent-bit's home directory (
fb.db) across infra-agent package updates instead of storing it in the replaced package directory
- Updated rust crate either to 1.18.0
- Updated rust to v1.98.0
- Updated rust crate actix-web to 4.15.0
- Updated alpine/kubectl to v1.36.4
- Updated rust crate syn to 3.0.4
- On-host: enforce a 2400 MiB hard memory limit on the Agent Control process tree (AC + all child agents) via systemd
MemoryMaxon Linux. - Agent type: enforce variable name format to
[A-Za-z0-9_-]starting with a letter and maximum length of 64 characters. - On-Host: enable self-update capability by default. Self updates are only executed when commanded by Fleet Control.
- Linux: prevent systemd service disable after RPM package update
- Updated rust crate futures to 0.3.34
- Updated alpine/helm to v4.2.4
- Updated rust crate serde-saphyr to 1.1.0
- Windows filesystem: Removed unused code and use higher-level APIs for Windows interaction.
- Reports the
com.newrelic.remoteAgentTypeRepoReachableOpAMP custom capability when the configured Agent Type OCI repository is reachable at startup.
- Windows: fixed files under Agent Control's managed directories being left with permissions it could not use. Managed directories now use an inheritable Administrators ACE, and Agent Control tries to repair ACEs on startup.
- Updated rust crate http to 1.5.0
- Updated rust crate clap to 4.6.6
- Updated rust crate serde-saphyr to 1.0.1
- Updated rust crate base64 to 0.23.1
- Updated rust crate aws-lc-rs to 1.18.0
- Updated rust crate thiserror to 2.0.20
- Updated rust crate async-trait to 0.1.92
- Updated rust crate actix-web to 4.14.1
- Updated rust crate rcgen to 0.14.9
- Kubernetes:
--release-nameis now optional onuninstall-agent-control; omitting it skips deleting the release's own HelmRelease/HelmRepository CRs. - On-host: added nri-apache and nri-nginx agentTypes.
- On-host: added nri-postgresql agentType.
- On-host: added nri-mysql agentType.
- On-host: added nri-memcached Agent Type.
- On-host: added nri-flex agentType.
- Log files rotated have now 30 days of retention.
- Added
agent-type validate --file <path>subcommand tonewrelic-agent-control-cliandnewrelic-agent-control-k8s-clifor schema-level validation of agent type definition files. - Extended
agent-type validatewith semantic validation: every${nr-var:X}reference indeploymentmust have a matchingvariablesdeclaration. - Enable cache for remote Agent Type registry
- Updated rust crate kube to 4.2.0
- Updated rust crate rustls-pki-types to 1.15.1
- Updated rust crate base64 to 0.23.0
- Updated rust crate either to 1.17.0
- Updated rust crate jsonwebtoken to v11
- Updated rust crate serial_test to v4
- Updated rust crate schemars to 1.2.2
- Updated alpine/kubectl to v1.36.3
- Updated rust crate toml to 1.1.4
- Updated rust crate clap to 4.6.4
- Updated rust crate tokio to 1.53.1
- Updated rust crate glob to 0.3.4
- Updated rust crate tokio-stream to 0.1.19
- Updated rust crate syn to 3.0.3
- On-host: the infra agentType has been fixed removing nri-flex binary copy.
- On-host and Kubernetes: when an agent's type is bumped via a live remote config update, Agent Control now reconciles both per-agent and shared filesystems, deleting paths declared by the old type that no longer appear in any active agent's declarations. Co-owned shared paths still claimed by another active agent are preserved. On Kubernetes, k8s objects annotated with the old type are garbage-collected while new-type resources are left intact.
- Adds
oci-utilsCLI totest/crates/oci-test-utilsfor pushing agent packages and agent type definitions to OCI registries from the command line (dev/test tooling; not published). - On-host agent-type parsing now validates
reported_version_package: it must reference a declared package, and is required when more than one package is defined. Invalid configurations are rejected at parse time with a descriptive error. Thisreported_version_packagewill be used to know which version to report asagent.version. - Add support for
copy_from_filefor on-host "in-agent" filesystem. - Add support for
shared_filesystemin on-host agent types. It includes a single-owner rule: two agents claiming the same path in the shared-filesystem are invalid and reported as Failed. - On-host self-update: skip sub-agent reconciliation when a self-update is in progress. When a single remote config both bumps the Agent Control version and changes a sub-agent's
agent_type, the changed sub-agent is no longer recreated moments before the process restarts; the new config is stored and re-applied cleanly by the restarted process, avoiding a redundant sub-agent restart and telemetry gap. - On-host: added support for nri-redis agentType for both Linux and Windows.
- On-host health config: replaced the flat
health.http:/health.file:fields with an explicitchecks:list. Each entry is discriminated bykind:(Process,Http, orFile). The previously implicit supervised-process health check is now declared askind: Process. An omitted or emptychecks:list disables health reporting entirely. - On-host filesystem entries (
file/dir) now always survive sub-agent stop, restart, and config-apply. A straypersistent:key in existing agent-type YAML is ignored rather than rejected.
- Added identifying attributes for each package specified in the agentType as
package.version.<id>. - RPM packages now restore
local_config.yamlfrom the.rpmsavebackup left by a prior uninstall.
- Updated rust crate bytes to 1.12.1
- Updated rust crate regex to 1.13.1
- Updated rust to v1.97.1
- Updated alpine/helm to v4.2.3
- Updated rust crate toml to 1.1.3
- Updated rust crate syn to v3
- Updated rust crate clap to 4.6.2
- Updated rust crate tokio to 1.53.0
- Updated rust crate aws-lc-rs to 1.17.3
- Updated rust crate thiserror to 2.0.19
- Updated rust crate serde to 1.0.229
- Updated rust crate async-trait to 0.1.91
- Updated rust crate futures to 0.3.33
- Updated rust crate quote to 1.0.47
- Updated rust crate serde_json to 1.0.151
- Adds exponential backoff + jitter retries to OCI artifact fetches via a new
BackoffPolicy(configurable underself_update.download_retry), replacing the oldwith_retries(usize, Duration)API. - add post-download script support for OCI packages.
- Hardens service restart policies on Linux and Windows (systemd rate limiting: 5 restarts max in 60s) to prevent crash-looping from saturating CPU.
- Added support for remote agent type definition retrieval from OCI registries.
- Agent type definitions now tolerate unknown fields for forward compatibility.
- On-host agents: now it is possible to avoid specifying a health check in the agent type definition, in which case the agent health will be not reported.
- On-host agents: removed command-based version checking. Agent version is now determined from OCI package metadata, eliminating the need for
deployment.versionconfiguration in agent type definitions. - Replace filesystem in on-host agent-type definitions with an explicit, recursive, tagged-kind tree: every entry declares
kind: file | dir | dir_content_from_map, anddirentries nest viaentries:. - On-host filesystem entries now accept a
persistentflag (defaultfalse): ephemeral entries are deleted on sub-agent stop, persistent entries survive until the agent is removed from the fleet. Reconciliation across writes is driven by a.ac-managed-paths.jsonmanifest (reserved filename β agent types must not declare it) so paths Agent Control no longer owns are deleted while sub-agent-created files are preserved. - Include new 'shared-filesystem-dir` variable for Agent Types.
- Extend internal
fscrate with a copy operation. - Removed the filesystem manifest-based prune mechanism; Agent Control no longer deletes previously-declared paths that a config later drops. Agent-managed files are reclaimed only when the agent is removed from the fleet.
- On-host self-update: an empty
version: ""pushed from Fleet Control now behaves the same as an absentversionfield (no-op, no update attempted). Previously it silently triggered a pull of the:latestOCI tag.
- Updated rust crate config to 0.15.25
- Updated rust crate syn to 2.0.118
- Updated alpine/helm to v4.2.2
- Updated rust crate bytes to 1.12.0
- Updated rust crate serde-saphyr to 0.0.29
- Updated rust crate actix-web to 4.14.0
- Updated rust crate quote to 1.0.46
- Updated kubernetes crates (major)
- Updated rust crate opentelemetry-semantic-conventions to 0.32.1
- Updated rust crate mockall to 0.15.0
- Updated rust to v1.96.1
- Updated rust crate aws-lc-rs to 1.17.1
- Updated rust crate rustls-pki-types to 1.15.0
- Updated rust crate opamp-client to v0.0.41
- Added support for JP endpoints.
- Agent type definitions changed: flat per-platform schema (one YAML per
(platform, operating_system)pair), a new top-levelprotocol_versionfield (quotedMAJOR.MINOR, validated at registry ingestion), and strictername/namespacevalidation (no-) andversion(plainMajor.Minor.Patchsemver). FQNs and configuration values are unchanged, so this is not a breaking change for end users; internal authors of custom definitions must migrate β see docs/INTEGRATING_AGENTS.md.
- Validate version coming from remote.
- Updated rust crate chrono to 0.4.45
- Updated amazon-eks to v1.36
- Updated rust crate http to 1.4.2
- Updated rust crate regex to 1.12.4
- Updated alpine/kubectl to v1.36.2
- Updated alpine/helm to v4.2.1
- Updated rust crate opamp-client to v0.0.40
- Updated rust crate nr-auth to v0.5.1
- the agentType for the PCG config should be called pipeline_control_gateway_config_mode
- Add support for Ubuntu 26.
- Updated rust crate serial_test to 3.5.0
- Add DaemonSet health-check in pipeline-control-gateway-config Agent Type
- pcg_config: revert agentType config
- Updated rust crate opentelemetry_sdk to 0.32.1
- Updated rust crate serde-saphyr to 0.0.27
- Updated rust to v1.96.0
- On-host: clean the OpAMP instance id and remote config of an agent when it is removed, matching the k8s behavior (previously these files were left orphaned under
fleet-data/). - self-instrumentation: dropped the internal traces exporter support for self-instrumentation.
- pcg_config: the agentType variable structure should assume the same file structure
- cd_enabled: when cd_enabled is false, we should set ac_remote_update to false as well
- Updated rust crate oci-client to 0.17.0
- Updated rust crate either to 1.16.0
- Updated rust crate serde_json to 1.0.150
- Updated rust crate http to 1.4.1
- Updated rust crate reqwest to 0.13.4
- bumping opamp-rs to fix custom_capabilities
- Updated rust crate aws-lc-rs to 1.17.0
- Updated rust crate config to 0.15.23
- Updated alpine/helm to v4.2.0
- Updated rust crate opamp-client to v0.0.39
- Updated alpine/kubectl to v1.36.1
- Updated rust crate tar to 0.4.46
- We should check cd_enabled not remote update
- OCI registry authentication configurable via config
- Adds support for Fluxless mode