You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
updateConfiguration with a scope id returns the global value in its response #14638
On main, updateConfiguration with a scope id (zoneid, clusterid, storageid, accountid, domainid, imagestoreuuid or managementserverid) returns the global value of the setting in its response, not the value that was just set. The scoped value is stored correctly. listConfigurations with the same scope id shows it, and it takes effect.
$ cmk update configuration name=drs.algorithm value=condensed clusterid=<cluster>
{"name": "drs.algorithm", "value": "balanced", "scope": "cluster", ...} <- global value
$ cmk list configurations name=drs.algorithm clusterid=<cluster>
... "value": "condensed" <- the value that was set
A script or UI that checks the response sees the wrong value.
Cause:
ConfigurationManagerImpl.updateConfiguration(UpdateCfgCmd) ends with return _configDao.findByName(name);. That is the global configuration row, whatever the scope.
Since api,server: normalize string empty value on config update #11770, UpdateCfgCmd.setResponseValue() copies cfg.getValue() into the response. Before that change, it echoed the value from the request. So for a scoped update, the response now has the global value.
The same applies to the implicit scope a domain admin or a user gets when they call the API without a scope id.
versions
main (24.0.0-SNAPSHOT), since #11770. 4.22 and earlier echo the value from the request and are not affected.
The steps to reproduce the bug
Note the global value of a cluster-scoped setting, for example drs.algorithm (balanced by default).
Have updateConfiguration return the value that was set in the requested scope when a scope is given. The inner updateConfiguration(...) already returns that value, after normalization (for example, lowercased booleans).
threat detection engine error
The threat detection engine encountered an error and could not complete analysis. This is a tooling failure, not a security finding.
What happened
The threat detection engine failed to produce results.
On main, updateConfiguration with a scope id (zone, cluster, account and so on) returns the global value in its response. The scoped value is stored and takes effect, and listConfigurations shows it. The response has read the global row since #11770, so scripts that check it see the wrong value. PR #14641 is open to return the scoped value.
📊 Assessment
Dimension
Value
Reasoning
Type
type:bug
The response does not match the stored value
Component
component:api
ConfigurationManagerImpl.updateConfiguration and UpdateCfgCmd
Severity
Severity:Minor
The setting is stored correctly; only the response is wrong
Labels
type:bug, component:api, Severity:Minor
Coding agent
Suitable
Fix is specified and a PR is open
💡 Notes and suggestions
No similar open issues were found beyond the PR above.
Reproduction: note the global value of drs.algorithm, call updateConfiguration with clusterid, then compare the response with listConfigurations.
The report says the implicit scope for domain admins and users has the same problem.
Activity
github-actions commentedon Nov 10, 2026
Warning
threat detection engine error
The threat detection engine encountered an error and could not complete analysis. This is a tooling failure, not a security finding.
What happened
The threat detection engine failed to produce results.
Review the workflow run logs for details.
🎯 Triage report
On main,
updateConfigurationwith a scope id (zone, cluster, account and so on) returns the global value in its response. The scoped value is stored and takes effect, andlistConfigurationsshows it. The response has read the global row since #11770, so scripts that check it see the wrong value. PR #14641 is open to return the scoped value.📊 Assessment
ConfigurationManagerImpl.updateConfigurationandUpdateCfgCmd💡 Notes and suggestions
drs.algorithm, callupdateConfigurationwithclusterid, then compare the response withlistConfigurations.Add this agentic workflow to your repo
To install this agentic workflow, run