CHANGELOG.md is the canonical source for official Noderax Agent release notes.
Every tagged release that should appear in the platform Updates center must
have a matching section in this file before the agent-v<version> tag is
published.
Formatting rules:
- Use
## [<version>] - YYYY-MM-DDfor each tagged release. - Use
### <Section>headings such asAdded,Changed,Fixed, orSecurity. - Use flat
-bullet items under each section. - Keep notes operator-facing because the API, web UI, CDN manifest, and GitHub Release body are generated from this file.
- Added support for custom API TLS trust roots through
api_tls_ca_filein config files andNODERAX_API_TLS_CA_FILE/API_TLS_CA_FILEenvironment overrides.
- Changed API client construction to initialize with system CA roots plus optional custom CA bundle loading, and enforced TLS
minVersionat TLS 1.2 for outbound API requests. - Changed enrollment and managed update code paths to use error-returning API client initialization so TLS CA configuration issues are surfaced before network operations start.
- Fixed startup, install, bootstrap, and managed update flows to fail fast with explicit
configure API clienterrors when API TLS CA files are unreadable or invalid.
- Added a new
log.scantask type with payload validation formodeandsourcePresetId, including optional root execution guarded bytaskscope checks. - Added
noderax-agent log-scan --request <path>to execute log scan requests from a JSON file and return structured JSON results for task parsing. - Added a dedicated log scanning engine that supports preset sources (
syslog,auth.log,kern.log,noderax-agent) withpreviewandmonitormodes, source-aware cursor handling, and hard limits for lines, bytes, and backfill.
- Task lifecycle log shipping now truncates oversized log lines to the API-safe limit and retries queued-state conflicts before failing, reducing cases where tasks appear stuck in
queuedwithout visible progress. - Root
log.scanexecution now normalizes legacytaskscope requests tooperationalscope and uses a dedicated operational helper path, so log scan operations no longer depend on task-root grants. - Agents now re-apply an already-selected root access profile when older persisted state lacks the latest revision marker, allowing updated sudoers rules for operational log scan helpers to self-heal after upgrade.
- Monitor-mode file scans now detect log rotation (inode change) and truncation (offset beyond file size), automatically reset the cursor, replay tail lines, and emit warning metadata for downstream diagnostics.
- Log scan task result parsing now reports explicit system errors when command output is empty or invalid JSON, improving failure visibility in task logs.
- Operational root panel actions now stay locked until the agent reports the profile as applied, preventing package install/remove,
apt-get update, restart, and reboot requests from being queued while sync is still pending or failed. - Package purge requests now queue the dedicated
packagePurgetask type instead of overloadingpackageRemove, so purge behavior stays consistent from the API through agent execution and task history. - Linux base sudoers rules now explicitly allow
apply operational_task,apply operational_terminal, andapply task_terminal, allowing composite root profiles to reconcile correctly on hosts with strict sudo argument matching. - Root access profile changes now push to connected agents immediately and refresh the reported applied state without waiting for the next long-poll cycle, so profile switches no longer appear stuck after being changed in the panel.
- Root terminal sessions now use the same supported shell allowlist as the generated sudoers rules, preventing
sudo-rs: I'm sorry noderax. I'm afraid I can't do thatfailures whenterminalroot access is applied. - Managed self-update now reapplies the persisted root access profile after refreshing helpers and sudoers files, so nodes already set to
terminalpick up the corrected terminal root rules immediately after updating.
- Interactive enrollment now includes
platformVersionandkernelVersioninadditionalInfoso approved nodes can report these values to the platform instead of appearing asUnknownin node detail views. - Realtime
agent.authnow includesplatformVersionandkernelVersion, allowing the control plane to refresh node platform/kernel metadata even when nodes rely on realtime reconnects instead of enrollment refresh. - Managed self-update now refreshes the Linux root-profile helper and base sudoers file during binary replacement, preventing nodes from getting stuck with
root profile helper is not installedafter an update. - Base sudoers rules now list explicit root-profile helper commands (
apply off|operational|task|terminal|all) for better compatibility withsudo-rsargument matching. - Linux package mutations now use a dedicated privileged helper and request-file handoff so
install,remove,purge, and operationalapt-get updatecontinue working on hosts that enforce strictsudo-rsargument matching. - Root task execution now uses a dedicated task-root helper handoff path, avoiding broad wildcard sudo command patterns that fail on
sudo-rsdeployments. - Root access profile handling now supports composite profile combinations (
operational_task,operational_terminal,task_terminal) so mixed capability sets are applied and validated consistently.
- Added API-synced root access profile management on the agent with five profiles:
off,operational,task,terminal, andall. - Added persisted root-access reconciliation state (
appliedProfile,lastAppliedAt,lastError) so the agent can report applied status and recover cleanly across restarts. - Added root-access sync fields to control-plane contracts used by the agent (
agent.auth,agent.auth.ack, and HTTP task claim request/response) so desired profile snapshots are delivered even when no task is returned. - Added a dedicated Linux root-profile helper (
/usr/local/libexec/noderax-agent-root-profile) that renders profile-specific sudo rules in/etc/sudoers.d/noderax-agent-root-access. - Added root terminal start support via realtime
runAsRootflags with runtime checks that only allow root sessions forterminalorall.
- Changed installer and
agentctl installprivilege setup to a helper-based model: static sudoers now only grants access to the self-update helper and root-profile helper. - Changed default host posture to root access
offat install time by applying the profile immediately during setup. - Extended
shell.execpayload handling withrunAsRootandrootScope(task|operational) and enforced scope checks against the currently applied profile. - Restricted operational root execution to curated commands (
apt-get update,reboot, andsystemctl restart noderax-agent) instead of generic elevated shell execution.
- Removed legacy default passwordless package-mutation sudo grants from bootstrap/install flow and replaced them with API-driven profile reconciliation.
- Added
noderax-agent versionandnoderax-agent --versionoutput so operators can quickly verify the running build metadata during fleet update tests.
- Fleet self-update now hands off through a request-file based privileged helper so rollout updates work on hosts that ship
sudo-rs, where sudoers wildcard argument matching is more restrictive than classicsudo. - Managed self-update now refreshes the installed privileged helper during binary replacement so later rollouts keep using the corrected handoff path.
- One-click bootstrap installer for Ubuntu and Debian hosts.
- Background service management, telemetry, task polling, and package operations for enrolled nodes.
- Interactive terminal support over the agent realtime channel.
- Platform-wide
Updatescenter for official agent release visibility, rollout selection, and changelog browsing. - Sequential fleet rollouts with retry, skip, resume, cancel, rollback, and heartbeat-confirmed completion.
- Detached self-update command for Linux
amd64andarm64agents using official CDN metadata with GitHub Releases fallback.
- Dedicated
noderaxruntime user with least-privilege task execution defaults. - Self-update sudo access is restricted to the dedicated
noderax-agent updatecommand instead of generic root shell execution.