Change logs for Rudder 9.0

Rudder 9.0.0.rc2 (2025-10-15)

Changes

Bug fixes

API

  • Fixed: systemUpdate/targets requieres a POST to get the list of nodes (#27715)

Release notes

This is a bug fix release in the 9.0 series and therefore all installations of 9.0.x should be upgraded when possible. When we release a new version of Rudder it has been thoroughly tested, and we consider the release enterprise-ready for deployment.

Rudder 9.0.0.rc1 (2025-10-13)

Changes

Miscellaneous

  • Update onboarding documentations (#27604)

  • Update onboarding documentations (#27604)

Generic methods

  • add metadata to the GM of the modules (#27663)

CI

  • Pin the typos-cli version (#27684)

Bug fixes

Web - Technique editor

  • Fixed: Rudder 9.0 Beta 2 : Error message when deleting technique in editor (#27644)

  • Fixed: Frozen method in the technique editor after reset of a draft (#27564)

Module - augeas

  • Fixed: fix supported_targets in augeas module metadata (#27725)

Module - commands

  • Fixed: fix warnings in commands module tests (#27717)

  • Fixed: Error with command_execution_results but everything looks ok (#27683)

Web - UI & UX

  • Fixed: "Close" button in API account modals uses the wrong CSS class (#27713)

  • Fixed: Notifications hides the button (#27612)

  • Fixed: Drag-and-drop icon appears when hovering a method over a block (#27625)

Generic methods

  • Fixed: Test the file_from_template_options method (#27639)

Miscellaneous

  • Fixed: Post-hooks for campaigns should be executed even even if pre-hooks are in failure (#27574)

Web - Config management

  • Fixed: The migrate button in directive pages is always displayed and often useless and ugly (#24486)

  • Fixed: Random error after node-to-relay is applied and other dynamic group and node accepted by API problems (#27264)

Web - Nodes & inventories

  • Fixed: Multiple JS error on properties page (#27596)

Release notes

This is a bug fix release in the 9.0 series and therefore all installations of 9.0.x should be upgraded when possible. When we release a new version of Rudder it has been thoroughly tested, and we consider the release enterprise-ready for deployment.

Rudder 9.0.0.beta2 (2025-10-07)

Changes

Packaging

  • Package the command module (#27545)

Module - commands

  • add uid/gid lookup by name for the commands module (#27651)

  • The command module should avoid using custom parsing methods for lists (#27598)

  • The command module should avoid using custom parsing methods for lists (#27598)

Module - common

  • Better logging for custom promise type protocol when a CFEngine request is malformed (#27568)

API

  • Return categoryId in JSON groups API (#27531)

Architecture - Dependencies

  • Ignore adler advisory in 8.2 (#27539)

Bug fixes

Packaging

  • Fixed: openssl build broken on RHEL7 (#27664)

  • Fixed: Missing flags for required CFEngine dependencies (#27647)

  • Fixed: Allow caching single files (#27571)

  • Fixed: Missing slash in cache path (#27569)

  • Fixed: Only cache the module binaries (#27565)

Agent

  • Fixed: Unable to install RHEL agent (#27590)

  • Fixed: APT agents are built without apt support in system-updates (#27649)

  • Fixed: Error trying to compile rudder-agent 8.3.4~git202508191033 on armhf Debian 13 trixie (libapt) (#27459)

  • Fixed: Agent stops when creating modules symlink (#27526)

Security

  • Fixed: Update curl & openssl (#27558)

  • Fixed: We need latest cargo deny to check licenses (#27620)

  • Fixed: XSS vulnerability in ammonia dep (#27615)

Inventory

  • Fixed: Incorrect script name in the Rudder inventory task (#27534)

Documentation

  • Fixed: Remove doc about automatically defined reporting section (#27635)

  • Fixed: Remove metion to AIX from the menu (#27535)

  • Fixed: System info API changed format in v21 and needs new documentation (#26637)

Web - Campaigns

  • Fixed: Inconsistency in campaigneventstate between init and DB migration (#27674)

  • Fixed: Campaign hook readme is incorrect (#27544)

Generic methods

  • Fixed: Document the file_from_template_options method (#27646)

  • Fixed: Test the command_execution_options generic method (#27585)

  • Fixed: [Regression] Rudder 9.0 Beta 2 : sysctl generic method causes apparent repair loops (#27627)

  • Fixed: Incorrect serialization of the parameters passed by the command_execution_options method to its underlying module (#27550)

Techniques

  • Fixed: Password setting from standard user technique fails after upgrade to Rudder 9.0 Beta 2 (#27622)

Module - templates

  • Fixed: The file_from_template_options method should accept inline JSON in its data field (#27636)

Architecture - Code maintenance

  • Fixed: Scala compilation should happen in maven compile phase (#27638)

Web - UI & UX

  • Fixed: Copy button on first login page for creating user not working anymore (#27588)

  • Fixed: In technique editor the number of techniqes is under "techniques" big title (#27595)

  • Fixed: Nodes table has CSP error with column containing JSON property (#27577)

  • Fixed: Nodes server list can no longer be exported to CSV (#27578)

  • Fixed: Plugins error callouts width are same as title width (#27561)

  • Fixed: Compliance - No data available (#27623)

Module - system-updates

  • Fixed: Document how the services to restart and reboot state are computed (#27553)

rudderc

  • Fixed: Allow empty string in JSON fields (#27548)

API

  • Fixed: Make group tree API not include system by default (#27498)

  • Fixed: Missleading format for parameter category in API (#27384)

System techniques

  • Fixed: Missing report in http only mode (#27563)

Release notes

Special thanks go out to the following individuals who invested time, patience, testing, patches or bug reports to make this version of Rudder better:

  • Pierre-Yves Taczynski

This is a bug fix release in the 9.0 series and therefore all installations of 9.0.x should be upgraded when possible. When we release a new version of Rudder it has been thoroughly tested, and we consider the release enterprise-ready for deployment.

Rudder 9.0.0.beta1 (2025-09-09)

Changes

Packaging

  • Add apache conf template to the package (#27517)

  • Prepare Debian 13 packaging (#27430)

Documentation

  • Document server certificate change in 9.0 (#27390)

  • User API update documentation is incorrect (#27521)

System techniques

  • Allow configuring the certificates (#27451)

Architecture - Internal libs

  • Move & update AuthorizationType into rudder-core (#22595)

  • Move & update AuthorizationType into rudder-core (#22595)

Architecture - Code maintenance

  • Using Cons for big lists can blow the compiler stack and prevent scala project compilation entirely (#27412)

  • Add a generic json codec for enumeratum (#27364)

Agent

  • Adding command module (#27218)

Relay server or API

  • Finish Rust dependency update (#27404)

Security

  • We need to resolve directory real path in our path trasversal check (#27402)

rudderc

  • Remove unused promises from rudderc generated techniques (#27400)

Web - Campaigns

  • Add campaign hooks in the campaign workflow engine (#26883)

Web - UI & UX

  • Make doughnut graphs accessible and manipulable (#27391)

  • Move the graph creation functions from homepage.js to another js file. (#27329)

System integration

  • Allow per-hook-kind logger (#27365)

Architecture - Evolution

  • Add an ID for node details tab content container (#27358)

Bug fixes

Agent

  • Fixed: Add a stricter permission control to the inventory hooks executed by the inventory on Windows nodes (#27476)

  • Fixed: Fix the rudder_info! macro to make it usable in audit mode (#27450)

System integration

  • Fixed: Upload large file in technique resources or file download returns error (#27413)

Packaging

  • Fixed: Missing rudder-sources when building rudderc (#27441)

  • Fixed: Missing rudder-sources when building rudderc (#27441)

  • Fixed: Add a compatibility flag for apt lib (#27436)

  • Fixed: perl-Digest-MD5 is missing from dependencies in RHEL6 (#25491)

Documentation

  • Fixed: correct prerequisites for Rudder install (#27395)

  • Fixed: Add RHEL 10 in supported OS list (#27362)

Web - UI & UX

  • Fixed: Hosts table contains local ipv6 address (#27112)

  • Fixed: When the JSON property is invalid in global properties, the error is nasty (#26718)

  • Fixed: Cannot delete a technique from technique tree with grayed screen (#27387)

  • Fixed: There is no explanation as to why Save button is disabled (#27386)

  • Fixed: Event logs restore button creates as many confirmation blocks as clicks (#25361)

  • Fixed: When a technique is enabled, the directive page button to disabled it is way too exposed (#27239)

Security

  • Fixed: Vulnerability in tracing (#27519)

  • Fixed: Ignore CVEs for icu4j (#27437)

  • Fixed: Hashed password is logged at debug level for all non OAuth2 users (#26767)

Web - Compliance & node report

  • Fixed: Ignored nodes should be excluded from compliance and score processing (#27446)

Generic methods

  • Fixed: File_from_template_options fails to render a file when using a custom data as source (#27515)

  • Fixed: When the component value of a method is too long, the reporting can be missing (#27167)

Web - Technique editor

  • Fixed: No manual when a filter for methods in the technique editor right panel (#26813)

CI

  • Fixed: fix broken agent installation on CI (#27469)

  • Fixed: Missing curl dependency in the methods docker test image (#27453)

Module - templates

  • Fixed: Fix audit bug for the template module (#27448)

  • Fixed: Fixing rudder_module_type.yml for the template module (#27381)

Miscellaneous

  • Fixed: Dashboard will not display charts when switching between bechmarks (#27370)

rudderc

  • Fixed: Constraint doesn’t allow to change variable (#27363)

API

  • Fixed: Nodes API payload for agentKey has the wrong JSON format (#27369)

Module - system-updates

  • Fixed: Security updates not applied on Debian 12, but campaign ends without error (#26855)

  • Fixed: Log the list of restarted services (#27367)

Web - Maintenance

  • Fixed: Users cleanup configuration is still too strict for disabling/deleting (#27379)

Plugin manager cli

  • Fixed: Quiet option still show spinner in rudder package (#27371)

System techniques

  • Fixed: Archive tarball contains wrong directories (#27368)

Release notes

Special thanks go out to the following individuals who invested time, patience, testing, patches or bug reports to make this version of Rudder better:

  • Matthieu Baechler

This is a bug fix release in the 9.0 series and therefore all installations of 9.0.x should be upgraded when possible. When we release a new version of Rudder it has been thoroughly tested, and we consider the release enterprise-ready for deployment.

Rudder 9.0.0.alpha1 (2025-07-24)

Changes

Packaging

  • Add a dependency on argon2 on server (#27304)

  • Build the template and inventory modules into the agent (#27206)

  • Cleanup perl build (#27176)

  • Update C dependencies (#27093)

  • Use new hardening options for C compiler (#27060)

  • Remove embedded perl support in rudder 9.0 (#26797)

  • Remove letsencrypt root x1 from rudder packages (#26796)

  • Update rudder packages to 9.0 supported OS (#26793)

  • Remove the rudder-api-client package (#26726)

Documentation

  • Add link to techblog in docs (#26943)

  • Update the api doc toolchain (#27118)

Miscellaneous

  • Rework property hierarchy (#27113)

  • Migrate methods to logger v4 (#26732)

  • Adding tests to the CI for the template module (#26505)

Web - UI & UX

  • Export pending nodes tables into CSV (#27272)

  • Improve drag’n drop ergonomics in the techniques editor (#26921)

  • Improve drag’n drop ergonomics in the techniques editor (#26921)

  • Improve drag’n drop ergonomics in the techniques editor (#26921)

Architecture - Code maintenance

  • Enforce UTC timezone for datetime (#27084)

  • Enable fatal warning and disable variable initialization check (#27147)

  • Scala3 - reorganize imports, clean unused values (#27012)

  • Deprecated method in chimney (#27014)

  • Port remaining lift-json into zio-json (#26866)

  • Compatibility fix for scala 3 in Rudder 9.0 (#26887)

  • Clean-up insertion in ruddersysevents (#26865)

Web - Config management

  • Add new settings to handle certificate trust (#26942)

  • Export change logs table into CSV (#27096)

Web - Technique editor

  • Remove deprecated Windows versions from the technique editor (#27198)

Architecture - Dependencies

  • Update front-end dependencies (#27103)

  • Updating Rust version and dependencies (#27168)

  • Migration from Box to ZIO : Refactor XmlUnserialisation (#26861)

  • Migration from Box to ZIO : Refactoring of classes ChangeRequest and ModificationValidationPopup (#26853)

API

  • Add and Remove/deprecate API for Rudder 9.0 - version 22 (#27173)

Security

  • Drop support for legacy password hash algorithms (#27128)

  • Add argon2id support for local hash (#26996)

  • Enable CSP on all pages and add tag to exclude a page (#26934)

Generic methods

  • Remove the old methods test framework in 9.0 (#27038)

  • Remove the old methods test framework in 9.0 (#27038)

  • Migrate user methods to logger v4 (#26746)

Web - Compliance & node report

  • Export technical logs table into CSV (#27047)

Web - Nodes & inventories

  • Export node inventories tables into CSV (#27031)

Architecture - Evolution

Agent

  • Updating Rust dependencies and compiler version (#27066)

  • Updating rust-mustache dependency (#26848)

  • Adding Ansible compatible filters for minijinja engine (#26614)

  • Adding support for calling Jinja2 from python in template module (#26567)

  • Adding a parameter to hide diffs in the report of the template module (#26527)

  • Adding diff to report in template module (#26517)

  • Adding diff to report in template module (#26517)

  • Adding diff to report in template module (#26517)

  • Adding diff to report in template module (#26517)

Module - templates

  • Adding documentation for the template module (#27009)

  • Adding audit flag to the CLI (#26971)

  • Adding a Windows runner from GitHub Actions to the template module (#26930)

System techniques

  • Cleanup update promises (#27177)

  • remove usage of agent_capability_http_reporting (#27070)

  • Migrate the server system techniques to rudder_logger_v4 (#26932)

Server components

  • cleanup rudder server create-user (#27303)

  • Add support to download policies via https archives (#27137)

Bug fixes

Packaging

  • Fixed: Add LD_LIBRARY_PATH to augeas module build (#27097)

  • Fixed: Agent package builds leak rpath (#27059)

  • Fixed: CFengine patch for proper identification of ArchLinux and Manjaro Linux nodes (#26915)

  • Fixed: Broken nettle dep on Debian (#26176)

  • Fixed: raugeas does not build on arm (#26227)

Miscellaneous

  • Fixed: Remove two useless “chown root” that prevents building the agent without being root (#26895)

  • Fixed: the logo doesn’t display well anymore (#27316)

  • Fixed: Creating global parameter with change-validation enabled leads to 404 (#27145)

rudderc

  • Fixed: rudderc built-in methods should come from the rudder repo (#27325)

  • Fixed: The Rudderc static binary still includes the outdated ncf library rather than the 8.3+ one (#27308)

Architecture - Code maintenance

  • Fixed: NodeInfo instead of CoreNodeFact causing compilation error (#27319)

  • Fixed: Synchronize scalafmt with plugins need (#27265)

  • Fixed: Add .scala.semanticdb in gitignore (#27157)

  • Fixed: Scala3: port RestDataExtractorTest to ZIO (#27016)

Security

  • Fixed: Cannot remove all rights from a user who has a single role, from the User management GUI (#27211)

  • Fixed: Update jgit to last version against XXE (#27006)

  • Fixed: Advisories in Rust deps (#26872)

Web - Compliance & node report

  • Fixed: the hover on compliance shows HTML (#25584)

Web - UI & UX

  • Fixed: Export in CSV concatenate IPs without spaces or delimiters (#27273)

  • Fixed: Missing enable / disable action button for group (#27127)

Architecture - Dependencies

  • Fixed: We must specify magnolia version, else it conflicts on difflicious (#27269)

Module - templates

  • Fixed: Adding linux generic method for the template module (#27230)

  • Fixed: Improving the clarity of error messages in the template module. (#27094)

  • Fixed: Assigning permissions to GitHub Actions (#26998)

CI

  • Fixed: Add the x86_64-pc-windows-gnu cross compilation target to the rust toolchain (#27204)

  • Fixed: Allow LGPL license 2.1 dependencies (#26870)

  • Fixed: Use 8.3 package in 9.0 tests for now (#26588)

Module - augeas

  • Fixed: Fix warnings in augeas module (#27122)

Web - Maintenance

  • Fixed: Missing webapp dependency (#27098)

Generic methods

  • Fixed: Port the permissions_user_acl_absent and permissions_user_acl_present methods to logger v4 (#27044)

  • Fixed: Port more generic methods to logger v4 (#26859)

  • Fixed: Port to log v4 and test more legacy methods (#26736)

Agent

  • Fixed: fixing windows compatibility for the template module (#26914)

  • Fixed: Change default template engine to Minijinja (#26884)

  • Fixed: Agent template module does not compile on Windows. (#26513)

  • Fixed: rudder-client fails to send inventory (#27294)

Techniques

  • Fixed: Missing report on built-in directive when removing users en Windows (#27301)

  • Fixed: Migrate the manageKeyValueFile builtin technique to logger V4 (#27109)

System techniques

  • Fixed: Fix reporting issues on server system techniques (#27117)

Server components

  • Fixed: rudder server create-user doesn’t work with argon2 (#27293)

Release notes

This is a bug fix release in the 9.0 series and therefore all installations of 9.0.x should be upgraded when possible. When we release a new version of Rudder it has been thoroughly tested, and we consider the release enterprise-ready for deployment.