Skip to content

[Fleet] Agent privilege level change UI#237790

Merged
jillguyonnet merged 10 commits intoelastic:mainfrom
jillguyonnet:fleet/221891-singe-unprivileged-agent-ui
Oct 14, 2025
Merged

[Fleet] Agent privilege level change UI#237790
jillguyonnet merged 10 commits intoelastic:mainfrom
jillguyonnet:fleet/221891-singe-unprivileged-agent-ui

Conversation

@jillguyonnet
Copy link
Contributor

@jillguyonnet jillguyonnet commented Oct 7, 2025

Summary

Closes #221891
Closes #221892

This PR implements the UI for the new agent privilege level change API (single agent and bulk).

Key changes:

  • Add an agent version check: this had been missed in the API implementation; agents should be on 9.3.0 or higher, otherwise attempting to remove root privilege through the API will fail and the UI will not allow it.
  • Add a check if the agent is already unprivileged:
    • POST /api/fleet/agent/{agent_id}/privilege_level_change: return 200 with message "Agent {agentId} is already unprivileged", no action created
    • POST /api/fleet/agents/bulk_privilege_level_change: no change (confirmation pending)
    • UI: don't show the option for root privilege removal
  • Add is_action_secrets_storage_enabled to Fleet setup API (GET kbn:api/fleet/agents/setup).
  • Add "Remove root privilege" action for Fleet agents in Fleet UI (cf. screenshots).
  • Store optional user password as secret if action secrets storage is enabled (all Fleet servers on 9.3.0 or higher).

Screenshots

Click to reveal

⚠️ At the time of writing, Elastic Agent 9.3.0 is not available yet, so screenshots show 9.2.0 instead.

Considering 4 agents:

  • Agent on version 9.3.0 on agent policy with an integration (System) that requires root privilege: root privilege removal denied.
  • Agent on version 9.3.0 on agent policy with no integrations: root privilege removal permitted.
  • Agent on version 9.1.0 on agent policy with no integrations: root privilege removal unsupported.
  • Agent on version 9.3.0 already unprivileged: root privilege removal permitted but not offered in the UI.
Screenshot 2025-10-09 at 16 38 23

The single agent actions in the table rows only show "Remove root privilege" if the agent is eligible:
Screenshot 2025-10-09 at 16 38 31

Clicking on "Remove root privilege" opens a flyout for the agent, allowing the user to specify options (here, action secrets are enabled and the password field would be stored as a secret if specified):
Screenshot 2025-10-09 at 16 38 43

If action secrets are not enabled, the user password is stored as plain text:
Screenshot 2025-10-09 at 17 07 42

If the action is successfully created, a notification is shown:
Screenshot 2025-10-09 at 16 38 57

The bulk agent actions show "Remove root privilege for N agents" when agents are selected:
Screenshot 2025-10-09 at 16 39 14

In this case, the flyout will report which agents are not eligible if any and only create the action for eligible agents:
Screenshot 2025-10-09 at 16 39 28

The agent details page also offers the action (as well as migration):
Screenshot 2025-10-09 at 16 40 05

With the flyout:
Screenshot 2025-10-09 at 16 40 20

Checklist

Identify risks

These changes only impact the new Fleet agent privilege level change API.

Release note

Adds a functionality for removing root privilege from Fleet managed agents if applicable.

@jillguyonnet jillguyonnet self-assigned this Oct 7, 2025
@jillguyonnet jillguyonnet added Team:Fleet Team label for Observability Data Collection Fleet team backport:skip This PR does not require backporting release_note:feature Makes this part of the condensed release notes 9.3 candidate labels Oct 7, 2025
@jillguyonnet
Copy link
Contributor Author

jillguyonnet commented Oct 7, 2025

@sileschristian Could I please get a UX review from you? Notably the following questions:

1. Flyout texts ("root privilege" instead of "root access"?).

2. Action icon: I thought the wrench could make sense, but not sure 😄

3. Should we reorder the agent actions in the single agent action and bulk actions menus? There seem to be discrepancies between the two, and maybe it would make sense to review the order from a UX point of view (e.g. perhaps less common actions should be lower in the menu?).

Screenshots:

Click to reveal

Single agent action:
Screenshot 2025-10-07 at 10 40 43

Bulk actions menu:
Screenshot 2025-10-07 at 10 41 01

@jillguyonnet jillguyonnet force-pushed the fleet/221891-singe-unprivileged-agent-ui branch from 5546242 to 1fb2df5 Compare October 7, 2025 14:48
…t --include-path /api/status --include-path /api/alerting/rule/ --include-path /api/alerting/rules --include-path /api/actions --include-path /api/security/role --include-path /api/spaces --include-path /api/streams --include-path /api/fleet --include-path /api/saved_objects/_import --include-path /api/saved_objects/_export --include-path /api/maintenance_window --include-path /api/agent_builder --update'
@jillguyonnet
Copy link
Contributor Author

jillguyonnet commented Oct 7, 2025

A note: currently neither the API or the UI reject handling an agent that is already unprivileged. @michalpristas let me know if it should be the case.

@michalpristas
Copy link
Contributor

i'm up for fast result, now the question is should it fail or succeed.
my guess would be failure but i'd like more input from @cmacknz or @kpollich

@jillguyonnet
Copy link
Contributor Author

i'm up for fast result, now the question is should it fail or succeed.
my guess would be failure but i'd like more input from @cmacknz or @kpollich

Fleet rejects fast if the agent is on an unsupported (< 9.3.0) version or if needs root privilege (e.g. it's on an agent policy with the system integration). We could certainly return fast if it's already unprivileged. In this case, it would probably also make sense to hide the option in the UI, same as unsupported version and requires root privilege. Also, even though the endpoint is named privilege_level_change, it is really root privilege removal, so it seems like it would make sense to reject the request.

@cmacknz
Copy link
Member

cmacknz commented Oct 7, 2025

Fleet rejects fast if the agent is on an unsupported (< 9.3.0) version or if needs root privilege (e.g. it's on an agent policy with the system integration). We could certainly return fast if it's already unprivileged. In this case, it would probably also make sense to hide the option in the UI, same as unsupported version and requires root privilege. Also, even though the endpoint is named privilege_level_change, it is really root privilege removal, so it seems like it would make sense to reject the request.

Attempting to change the privilege level from unprivileged to privileged should return an error quickly, something equivalent to an HTTP 501 Not Implemented.

A request to maintain the privilege level of an unprivileged agent should succeed quickly, equivalent to a 200 OK. This would let users retry bulk privilege level changes where only some of the agents have succeeded in the batch.

@cmacknz
Copy link
Member

cmacknz commented Oct 7, 2025

A request to maintain the privilege level of an unprivileged agent should succeed quickly, equivalent to a 200 OK. This would let users retry bulk privilege level changes where only some of the agents have succeeded in the batch.

In the UI for an individual agent that is already unprivileged we shouldn't show the privilege level change / remove root access as an option if we aren't already doing that.

@jillguyonnet
Copy link
Contributor Author

jillguyonnet commented Oct 8, 2025

Thanks for your input @cmacknz

Attempting to change the privilege level from unprivileged to privileged should return an error quickly, something equivalent to an HTTP 501 Not Implemented.

It's not even possible in the current implementation. Calling POST /api/fleet/agent/{agent_id}/privilege_level_change or /api/fleet/agents/bulk_privilege_level_change attempts to lower the level to unprivileged: the unprivileged flag is hardcoded to true here (single agent) and here (bulk).

A request to maintain the privilege level of an unprivileged agent should succeed quickly, equivalent to a 200 OK. This would let users retry bulk privilege level changes where only some of the agents have succeeded in the batch.

Great point 👍 I added fast success for single agent. For bulk, I ran into a slight complication: currently, for a Fleet-created action, we expect action.nbAgentsActioned === action.nbAgentsActionCreated + action.nbAgentsFailed. If we want fast success for unprivileged agents (essentially, skip them but don't create an error), it seems to me that a proper solution would be to add an action field like nbAgentsSkipped (such that action.nbAgentsActioned === action.nbAgentsActionCreated + action.nbAgentsFailed + action.nbAgentsSkipped). It seems like a significant change to add, so I would like feedback from @juliaElastic and @criamico on this point. Currently, unprivileged agents are included.

In the UI for an individual agent that is already unprivileged we shouldn't show the privilege level change / remove root access as an option if we aren't already doing that.

Added 👍

@jillguyonnet
Copy link
Contributor Author

@sileschristian Thanks for your feedback!

I pushed the following changes to this PR:

  • icon changed from wrench to lock
  • "root access" replaced with "root privilege"

I opened #238091 for followup changes. Since we have that issue to discuss the redesign of these menus, I would rather keep the changes in this PR related to privilege level change only.

I've also updated the screenshots in the PR description. Please let me know of any further feedback 🙏

@jillguyonnet jillguyonnet marked this pull request as ready for review October 8, 2025 16:00
@jillguyonnet jillguyonnet requested review from a team as code owners October 8, 2025 16:00
@elasticmachine
Copy link
Contributor

Pinging @elastic/fleet (Team:Fleet)

@juliaElastic
Copy link
Contributor

Great point 👍 I added fast success for single agent. For bulk, I ran into a slight complication: currently, for a Fleet-created action, we expect action.nbAgentsActioned === action.nbAgentsActionCreated + action.nbAgentsFailed. If we want fast success for unprivileged agents (essentially, skip them but don't create an error), it seems to me that a proper solution would be to add an action field like nbAgentsSkipped (such that action.nbAgentsActioned === action.nbAgentsActionCreated + action.nbAgentsFailed + action.nbAgentsSkipped). It seems like a significant change to add, so I would like feedback from @juliaElastic and @criamico on this point. Currently, unprivileged agents are included.

With the current logic we can already retry the bulk action and have it partially succeed for those agents that are not unprivileged. Isn't that the goal?

Copy link
Contributor

@florent-leborgne florent-leborgne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a few super minor copy styling suggestions

Copy link
Contributor

@vishaangelova vishaangelova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Left a couple of suggestions for your consideration:)

@juliaElastic
Copy link
Contributor

Maybe we could drop these agents before they get processed to create the action, i.e. filter them out of this list. The result would be that they silently get filtered out though, which is not ideal.

Yeah this would result in inconsistencies on the UI e.g. actioning 50 agents and then seeing 48 being actioned.

Alternatively, we keep the current solution (process them) with the option to improve this in the future (as you said, reworking the bulk action framework should be its own issue). The UI will already prevent attempting processing already unprivileged agents for manual selection, so the only scenarios where we could try to do it would be through the bulk API (either list of ids or kuery) and select all (kuery) in the UI. It seems to me like an acceptable first solution. WDYT?

Sounds good to me.

@jillguyonnet
Copy link
Contributor Author

@juliaElastic FYI I captured the discussion around potentially modifying bulk actions in #238220

@juliaElastic
Copy link
Contributor

Should we add the action to the agent details page too? I think we missed to add the migrate action too.

image
@jillguyonnet
Copy link
Contributor Author

Should we add the action to the agent details page too? I think we missed to add the migrate action too.

Good point! I'll add that, and also a mention of this menu in #238091.

@cmacknz
Copy link
Member

cmacknz commented Oct 9, 2025

Alternatively, we keep the current solution (process them) with the option to improve this in the future (as you said, reworking the bulk action framework should be its own issue). The UI will already prevent attempting processing already unprivileged agents for manual selection, so the only scenarios where we could try to do it would be through the bulk API (either list of ids or kuery) and select all (kuery) in the UI. It seems to me like an acceptable first solution. WDYT?

Agreed if there is significant work here it doesn't need to be tackled in this PR. Increasingly we need to be thinking of handling actions like this the same way we do for automatic upgrades. Users are declaring a target state for the agent (be a specific version, have a specific privilege level) and Fleet needs to automatically converge the agents to the state without users needing to button click through one off failures or agents that happen to be offline during the initial conversion.

@jillguyonnet
Copy link
Contributor Author

@elasticmachine merge upstream

@elasticmachine

This comment was marked as outdated.

@jillguyonnet
Copy link
Contributor Author

@elasticmachine merge upstream

Copy link
Contributor

@vishaangelova vishaangelova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI copy LGTM 🚀

Copy link
Contributor

@juliaElastic juliaElastic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jillguyonnet jillguyonnet merged commit 77ef607 into elastic:main Oct 14, 2025
12 checks passed
@jillguyonnet jillguyonnet deleted the fleet/221891-singe-unprivileged-agent-ui branch October 14, 2025 13:34
ersin-erdal pushed a commit to ersin-erdal/kibana that referenced this pull request Oct 15, 2025
## Summary

Closes elastic#221891
Closes elastic#221892

This PR implements the UI for the new agent privilege level change API
(single agent and bulk).

Key changes:
* Add an agent version check: this had been missed in the API
implementation; agents should be on 9.3.0 or higher, otherwise
attempting to remove root privilege through the API will fail and the UI
will not allow it.
* Add a check if the agent is already unprivileged:
* `POST /api/fleet/agent/{agent_id}/privilege_level_change`: return 200
with message "Agent {agentId} is already unprivileged", no action
created
* `POST /api/fleet/agents/bulk_privilege_level_change`: no change
(confirmation pending)
   * UI: don't show the option for root privilege removal
* Add `is_action_secrets_storage_enabled` to Fleet setup API (`GET
kbn:api/fleet/agents/setup`).
* Add "Remove root privilege" action for Fleet agents in Fleet UI (cf.
screenshots).
* Store optional user password as secret if action secrets storage is
enabled (all Fleet servers on 9.3.0 or higher).

### Screenshots

<details>
<summary>Click to reveal</summary>

⚠️ At the time of writing, Elastic Agent 9.3.0 is not available yet, so
screenshots show 9.2.0 instead.

Considering 4 agents:
* Agent on version 9.3.0 on agent policy with an integration (System)
that requires root privilege: root privilege removal denied.
* Agent on version 9.3.0 on agent policy with no integrations: root
privilege removal permitted.
* Agent on version 9.1.0 on agent policy with no integrations: root
privilege removal unsupported.
* Agent on version 9.3.0 already unprivileged: root privilege removal
permitted but not offered in the UI.

<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 23"
src="https://github.com/user-attachments/assets/54cf5bda-3b46-409f-9d53-37bcfb1c7151"
/>

The single agent actions in the table rows only show "Remove root
privilege" if the agent is eligible:
<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 31"
src="https://github.com/user-attachments/assets/ac2fc903-efae-4054-bbe9-0467a3884b0e"
/>

Clicking on "Remove root privilege" opens a flyout for the agent,
allowing the user to specify options (here, action secrets are enabled
and the password field would be stored as a secret if specified):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 43"
src="https://github.com/user-attachments/assets/127008ec-2abb-4f93-9de3-57e35e753c57"
/>

If action secrets are not enabled, the user password is stored as plain
text:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 17 07 42"
src="https://github.com/user-attachments/assets/196c2664-72bb-4e63-b69a-994240b0a7a5"
/>

If the action is successfully created, a notification is shown:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 57"
src="https://github.com/user-attachments/assets/f329ccaf-611e-47ab-bd31-9e62798b4be3"
/>

The bulk agent actions show "Remove root privilege for N agents" when
agents are selected:
<img width="1919" height="805" alt="Screenshot 2025-10-09 at 16 39 14"
src="https://github.com/user-attachments/assets/6ed795d3-1bd7-4498-9e0a-9cb5bba5dcdd"
/>

In this case, the flyout will report which agents are not eligible if
any and only create the action for eligible agents:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 39 28"
src="https://github.com/user-attachments/assets/cdca55f7-52da-411c-a9bd-c90c76e2373b"
/>

The agent details page also offers the action (as well as migration):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 05"
src="https://github.com/user-attachments/assets/602ae6cd-ba2f-4b17-9eac-a8bb0f09a99a"
/>

With the flyout:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 20"
src="https://github.com/user-attachments/assets/4c9ce2ea-2eab-490d-9d5b-e2c82ba8ffc1"
/>
</details>

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

These changes only impact the new Fleet agent privilege level change
API.

## Release note

Adds a functionality for removing root privilege from Fleet managed
agents if applicable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
mgadewoll pushed a commit to tkajtoch/kibana that referenced this pull request Oct 17, 2025
## Summary

Closes elastic#221891
Closes elastic#221892

This PR implements the UI for the new agent privilege level change API
(single agent and bulk).

Key changes:
* Add an agent version check: this had been missed in the API
implementation; agents should be on 9.3.0 or higher, otherwise
attempting to remove root privilege through the API will fail and the UI
will not allow it.
* Add a check if the agent is already unprivileged:
* `POST /api/fleet/agent/{agent_id}/privilege_level_change`: return 200
with message "Agent {agentId} is already unprivileged", no action
created
* `POST /api/fleet/agents/bulk_privilege_level_change`: no change
(confirmation pending)
   * UI: don't show the option for root privilege removal
* Add `is_action_secrets_storage_enabled` to Fleet setup API (`GET
kbn:api/fleet/agents/setup`).
* Add "Remove root privilege" action for Fleet agents in Fleet UI (cf.
screenshots).
* Store optional user password as secret if action secrets storage is
enabled (all Fleet servers on 9.3.0 or higher).

### Screenshots

<details>
<summary>Click to reveal</summary>

⚠️ At the time of writing, Elastic Agent 9.3.0 is not available yet, so
screenshots show 9.2.0 instead.

Considering 4 agents:
* Agent on version 9.3.0 on agent policy with an integration (System)
that requires root privilege: root privilege removal denied.
* Agent on version 9.3.0 on agent policy with no integrations: root
privilege removal permitted.
* Agent on version 9.1.0 on agent policy with no integrations: root
privilege removal unsupported.
* Agent on version 9.3.0 already unprivileged: root privilege removal
permitted but not offered in the UI.

<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 23"
src="https://github.com/user-attachments/assets/54cf5bda-3b46-409f-9d53-37bcfb1c7151"
/>

The single agent actions in the table rows only show "Remove root
privilege" if the agent is eligible:
<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 31"
src="https://github.com/user-attachments/assets/ac2fc903-efae-4054-bbe9-0467a3884b0e"
/>

Clicking on "Remove root privilege" opens a flyout for the agent,
allowing the user to specify options (here, action secrets are enabled
and the password field would be stored as a secret if specified):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 43"
src="https://github.com/user-attachments/assets/127008ec-2abb-4f93-9de3-57e35e753c57"
/>

If action secrets are not enabled, the user password is stored as plain
text:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 17 07 42"
src="https://github.com/user-attachments/assets/196c2664-72bb-4e63-b69a-994240b0a7a5"
/>

If the action is successfully created, a notification is shown:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 57"
src="https://github.com/user-attachments/assets/f329ccaf-611e-47ab-bd31-9e62798b4be3"
/>

The bulk agent actions show "Remove root privilege for N agents" when
agents are selected:
<img width="1919" height="805" alt="Screenshot 2025-10-09 at 16 39 14"
src="https://github.com/user-attachments/assets/6ed795d3-1bd7-4498-9e0a-9cb5bba5dcdd"
/>

In this case, the flyout will report which agents are not eligible if
any and only create the action for eligible agents:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 39 28"
src="https://github.com/user-attachments/assets/cdca55f7-52da-411c-a9bd-c90c76e2373b"
/>

The agent details page also offers the action (as well as migration):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 05"
src="https://github.com/user-attachments/assets/602ae6cd-ba2f-4b17-9eac-a8bb0f09a99a"
/>

With the flyout:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 20"
src="https://github.com/user-attachments/assets/4c9ce2ea-2eab-490d-9d5b-e2c82ba8ffc1"
/>
</details>

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

These changes only impact the new Fleet agent privilege level change
API.

## Release note

Adds a functionality for removing root privilege from Fleet managed
agents if applicable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
rylnd pushed a commit to rylnd/kibana that referenced this pull request Oct 17, 2025
## Summary

Closes elastic#221891
Closes elastic#221892

This PR implements the UI for the new agent privilege level change API
(single agent and bulk).

Key changes:
* Add an agent version check: this had been missed in the API
implementation; agents should be on 9.3.0 or higher, otherwise
attempting to remove root privilege through the API will fail and the UI
will not allow it.
* Add a check if the agent is already unprivileged:
* `POST /api/fleet/agent/{agent_id}/privilege_level_change`: return 200
with message "Agent {agentId} is already unprivileged", no action
created
* `POST /api/fleet/agents/bulk_privilege_level_change`: no change
(confirmation pending)
   * UI: don't show the option for root privilege removal
* Add `is_action_secrets_storage_enabled` to Fleet setup API (`GET
kbn:api/fleet/agents/setup`).
* Add "Remove root privilege" action for Fleet agents in Fleet UI (cf.
screenshots).
* Store optional user password as secret if action secrets storage is
enabled (all Fleet servers on 9.3.0 or higher).

### Screenshots

<details>
<summary>Click to reveal</summary>

⚠️ At the time of writing, Elastic Agent 9.3.0 is not available yet, so
screenshots show 9.2.0 instead.

Considering 4 agents:
* Agent on version 9.3.0 on agent policy with an integration (System)
that requires root privilege: root privilege removal denied.
* Agent on version 9.3.0 on agent policy with no integrations: root
privilege removal permitted.
* Agent on version 9.1.0 on agent policy with no integrations: root
privilege removal unsupported.
* Agent on version 9.3.0 already unprivileged: root privilege removal
permitted but not offered in the UI.

<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 23"
src="https://github.com/user-attachments/assets/54cf5bda-3b46-409f-9d53-37bcfb1c7151"
/>

The single agent actions in the table rows only show "Remove root
privilege" if the agent is eligible:
<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 31"
src="https://github.com/user-attachments/assets/ac2fc903-efae-4054-bbe9-0467a3884b0e"
/>

Clicking on "Remove root privilege" opens a flyout for the agent,
allowing the user to specify options (here, action secrets are enabled
and the password field would be stored as a secret if specified):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 43"
src="https://github.com/user-attachments/assets/127008ec-2abb-4f93-9de3-57e35e753c57"
/>

If action secrets are not enabled, the user password is stored as plain
text:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 17 07 42"
src="https://github.com/user-attachments/assets/196c2664-72bb-4e63-b69a-994240b0a7a5"
/>

If the action is successfully created, a notification is shown:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 57"
src="https://github.com/user-attachments/assets/f329ccaf-611e-47ab-bd31-9e62798b4be3"
/>

The bulk agent actions show "Remove root privilege for N agents" when
agents are selected:
<img width="1919" height="805" alt="Screenshot 2025-10-09 at 16 39 14"
src="https://github.com/user-attachments/assets/6ed795d3-1bd7-4498-9e0a-9cb5bba5dcdd"
/>

In this case, the flyout will report which agents are not eligible if
any and only create the action for eligible agents:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 39 28"
src="https://github.com/user-attachments/assets/cdca55f7-52da-411c-a9bd-c90c76e2373b"
/>

The agent details page also offers the action (as well as migration):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 05"
src="https://github.com/user-attachments/assets/602ae6cd-ba2f-4b17-9eac-a8bb0f09a99a"
/>

With the flyout:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 20"
src="https://github.com/user-attachments/assets/4c9ce2ea-2eab-490d-9d5b-e2c82ba8ffc1"
/>
</details>

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

These changes only impact the new Fleet agent privilege level change
API.

## Release note

Adds a functionality for removing root privilege from Fleet managed
agents if applicable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
nickpeihl pushed a commit to nickpeihl/kibana that referenced this pull request Oct 23, 2025
## Summary

Closes elastic#221891
Closes elastic#221892

This PR implements the UI for the new agent privilege level change API
(single agent and bulk).

Key changes:
* Add an agent version check: this had been missed in the API
implementation; agents should be on 9.3.0 or higher, otherwise
attempting to remove root privilege through the API will fail and the UI
will not allow it.
* Add a check if the agent is already unprivileged:
* `POST /api/fleet/agent/{agent_id}/privilege_level_change`: return 200
with message "Agent {agentId} is already unprivileged", no action
created
* `POST /api/fleet/agents/bulk_privilege_level_change`: no change
(confirmation pending)
   * UI: don't show the option for root privilege removal
* Add `is_action_secrets_storage_enabled` to Fleet setup API (`GET
kbn:api/fleet/agents/setup`).
* Add "Remove root privilege" action for Fleet agents in Fleet UI (cf.
screenshots).
* Store optional user password as secret if action secrets storage is
enabled (all Fleet servers on 9.3.0 or higher).

### Screenshots

<details>
<summary>Click to reveal</summary>

⚠️ At the time of writing, Elastic Agent 9.3.0 is not available yet, so
screenshots show 9.2.0 instead.

Considering 4 agents:
* Agent on version 9.3.0 on agent policy with an integration (System)
that requires root privilege: root privilege removal denied.
* Agent on version 9.3.0 on agent policy with no integrations: root
privilege removal permitted.
* Agent on version 9.1.0 on agent policy with no integrations: root
privilege removal unsupported.
* Agent on version 9.3.0 already unprivileged: root privilege removal
permitted but not offered in the UI.

<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 23"
src="https://github.com/user-attachments/assets/54cf5bda-3b46-409f-9d53-37bcfb1c7151"
/>

The single agent actions in the table rows only show "Remove root
privilege" if the agent is eligible:
<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 31"
src="https://github.com/user-attachments/assets/ac2fc903-efae-4054-bbe9-0467a3884b0e"
/>

Clicking on "Remove root privilege" opens a flyout for the agent,
allowing the user to specify options (here, action secrets are enabled
and the password field would be stored as a secret if specified):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 43"
src="https://github.com/user-attachments/assets/127008ec-2abb-4f93-9de3-57e35e753c57"
/>

If action secrets are not enabled, the user password is stored as plain
text:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 17 07 42"
src="https://github.com/user-attachments/assets/196c2664-72bb-4e63-b69a-994240b0a7a5"
/>

If the action is successfully created, a notification is shown:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 57"
src="https://github.com/user-attachments/assets/f329ccaf-611e-47ab-bd31-9e62798b4be3"
/>

The bulk agent actions show "Remove root privilege for N agents" when
agents are selected:
<img width="1919" height="805" alt="Screenshot 2025-10-09 at 16 39 14"
src="https://github.com/user-attachments/assets/6ed795d3-1bd7-4498-9e0a-9cb5bba5dcdd"
/>

In this case, the flyout will report which agents are not eligible if
any and only create the action for eligible agents:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 39 28"
src="https://github.com/user-attachments/assets/cdca55f7-52da-411c-a9bd-c90c76e2373b"
/>

The agent details page also offers the action (as well as migration):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 05"
src="https://github.com/user-attachments/assets/602ae6cd-ba2f-4b17-9eac-a8bb0f09a99a"
/>

With the flyout:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 20"
src="https://github.com/user-attachments/assets/4c9ce2ea-2eab-490d-9d5b-e2c82ba8ffc1"
/>
</details>

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

These changes only impact the new Fleet agent privilege level change
API.

## Release note

Adds a functionality for removing root privilege from Fleet managed
agents if applicable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Oct 27, 2025
## Summary

Closes elastic#221891
Closes elastic#221892

This PR implements the UI for the new agent privilege level change API
(single agent and bulk).

Key changes:
* Add an agent version check: this had been missed in the API
implementation; agents should be on 9.3.0 or higher, otherwise
attempting to remove root privilege through the API will fail and the UI
will not allow it.
* Add a check if the agent is already unprivileged:
* `POST /api/fleet/agent/{agent_id}/privilege_level_change`: return 200
with message "Agent {agentId} is already unprivileged", no action
created
* `POST /api/fleet/agents/bulk_privilege_level_change`: no change
(confirmation pending)
   * UI: don't show the option for root privilege removal
* Add `is_action_secrets_storage_enabled` to Fleet setup API (`GET
kbn:api/fleet/agents/setup`).
* Add "Remove root privilege" action for Fleet agents in Fleet UI (cf.
screenshots).
* Store optional user password as secret if action secrets storage is
enabled (all Fleet servers on 9.3.0 or higher).

### Screenshots

<details>
<summary>Click to reveal</summary>

⚠️ At the time of writing, Elastic Agent 9.3.0 is not available yet, so
screenshots show 9.2.0 instead.

Considering 4 agents:
* Agent on version 9.3.0 on agent policy with an integration (System)
that requires root privilege: root privilege removal denied.
* Agent on version 9.3.0 on agent policy with no integrations: root
privilege removal permitted.
* Agent on version 9.1.0 on agent policy with no integrations: root
privilege removal unsupported.
* Agent on version 9.3.0 already unprivileged: root privilege removal
permitted but not offered in the UI.

<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 23"
src="https://github.com/user-attachments/assets/54cf5bda-3b46-409f-9d53-37bcfb1c7151"
/>

The single agent actions in the table rows only show "Remove root
privilege" if the agent is eligible:
<img width="1919" height="757" alt="Screenshot 2025-10-09 at 16 38 31"
src="https://github.com/user-attachments/assets/ac2fc903-efae-4054-bbe9-0467a3884b0e"
/>

Clicking on "Remove root privilege" opens a flyout for the agent,
allowing the user to specify options (here, action secrets are enabled
and the password field would be stored as a secret if specified):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 43"
src="https://github.com/user-attachments/assets/127008ec-2abb-4f93-9de3-57e35e753c57"
/>

If action secrets are not enabled, the user password is stored as plain
text:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 17 07 42"
src="https://github.com/user-attachments/assets/196c2664-72bb-4e63-b69a-994240b0a7a5"
/>

If the action is successfully created, a notification is shown:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 38 57"
src="https://github.com/user-attachments/assets/f329ccaf-611e-47ab-bd31-9e62798b4be3"
/>

The bulk agent actions show "Remove root privilege for N agents" when
agents are selected:
<img width="1919" height="805" alt="Screenshot 2025-10-09 at 16 39 14"
src="https://github.com/user-attachments/assets/6ed795d3-1bd7-4498-9e0a-9cb5bba5dcdd"
/>

In this case, the flyout will report which agents are not eligible if
any and only create the action for eligible agents:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 39 28"
src="https://github.com/user-attachments/assets/cdca55f7-52da-411c-a9bd-c90c76e2373b"
/>

The agent details page also offers the action (as well as migration):
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 05"
src="https://github.com/user-attachments/assets/602ae6cd-ba2f-4b17-9eac-a8bb0f09a99a"
/>

With the flyout:
<img width="1919" height="883" alt="Screenshot 2025-10-09 at 16 40 20"
src="https://github.com/user-attachments/assets/4c9ce2ea-2eab-490d-9d5b-e2c82ba8ffc1"
/>
</details>

### Checklist

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

These changes only impact the new Fleet agent privilege level change
API.

## Release note

Adds a functionality for removing root privilege from Fleet managed
agents if applicable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
jillguyonnet added a commit that referenced this pull request Feb 3, 2026
## Summary

Small label fix for root privilege removal action for Fleet-managed
Elastic Agents: single agent menus have the correct label "Remove root
privilege" but the bulk actions menu had "Remove root access for N
agents". This PR corrects "access" to "privilege" for consistency.

Original implementation PR:
#237790
Documentation PR: elastic/docs-content#4910

### Screenshots

Before:
<img width="1728" height="576" alt="Screenshot 2026-01-30 at 16 06 45"
src="https://github.com/user-attachments/assets/99384fd7-53cf-47f0-b7ac-d9db4467cc03"
/>

After:
<img width="1728" height="576" alt="Screenshot 2026-01-30 at 16 10 50"
src="https://github.com/user-attachments/assets/e34704d6-cb4b-41c5-a953-405759d1c919"
/>

Which matches single agent menus:
<img width="1728" height="648" alt="Screenshot 2026-01-30 at 16 05 48"
src="https://github.com/user-attachments/assets/703f774b-4bd1-47ed-ab59-ff0b5c012905"
/>

<img width="1728" height="571" alt="Screenshot 2026-01-30 at 16 06 09"
src="https://github.com/user-attachments/assets/a3e6e537-313e-424a-ab80-9da37f338996"
/>

### Checklist

- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

UI label fix only.

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Feb 3, 2026
## Summary

Small label fix for root privilege removal action for Fleet-managed
Elastic Agents: single agent menus have the correct label "Remove root
privilege" but the bulk actions menu had "Remove root access for N
agents". This PR corrects "access" to "privilege" for consistency.

Original implementation PR:
elastic#237790
Documentation PR: elastic/docs-content#4910

### Screenshots

Before:
<img width="1728" height="576" alt="Screenshot 2026-01-30 at 16 06 45"
src="https://github.com/user-attachments/assets/99384fd7-53cf-47f0-b7ac-d9db4467cc03"
/>

After:
<img width="1728" height="576" alt="Screenshot 2026-01-30 at 16 10 50"
src="https://github.com/user-attachments/assets/e34704d6-cb4b-41c5-a953-405759d1c919"
/>

Which matches single agent menus:
<img width="1728" height="648" alt="Screenshot 2026-01-30 at 16 05 48"
src="https://github.com/user-attachments/assets/703f774b-4bd1-47ed-ab59-ff0b5c012905"
/>

<img width="1728" height="571" alt="Screenshot 2026-01-30 at 16 06 09"
src="https://github.com/user-attachments/assets/a3e6e537-313e-424a-ab80-9da37f338996"
/>

### Checklist

- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

### Identify risks

UI label fix only.

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
(cherry picked from commit 2417834)
kibanamachine added a commit that referenced this pull request Feb 4, 2026
…251424)

# Backport

This will backport the following commits from `main` to `9.3`:
- [[Fleet] Fix bulk remove agent root privilege label
(#251085)](#251085)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Jill
Guyonnet","email":"jill.guyonnet@elastic.co"},"sourceCommit":{"committedDate":"2026-02-03T10:57:19Z","message":"[Fleet]
Fix bulk remove agent root privilege label (#251085)\n\n##
Summary\n\nSmall label fix for root privilege removal action for
Fleet-managed\nElastic Agents: single agent menus have the correct label
\"Remove root\nprivilege\" but the bulk actions menu had \"Remove root
access for N\nagents\". This PR corrects \"access\" to \"privilege\" for
consistency.\n\nOriginal implementation
PR:\nhttps://github.com//pull/237790\nDocumentation PR:
https://github.com/elastic/docs-content/pull/4910\n\n###
Screenshots\n\nBefore:\n<img width=\"1728\" height=\"576\"
alt=\"Screenshot 2026-01-30 at 16 06
45\"\nsrc=\"https://github.com/user-attachments/assets/99384fd7-53cf-47f0-b7ac-d9db4467cc03\"\n/>\n\nAfter:\n<img
width=\"1728\" height=\"576\" alt=\"Screenshot 2026-01-30 at 16 10
50\"\nsrc=\"https://github.com/user-attachments/assets/e34704d6-cb4b-41c5-a953-405759d1c919\"\n/>\n\nWhich
matches single agent menus:\n<img width=\"1728\" height=\"648\"
alt=\"Screenshot 2026-01-30 at 16 05
48\"\nsrc=\"https://github.com/user-attachments/assets/703f774b-4bd1-47ed-ab59-ff0b5c012905\"\n/>\n\n<img
width=\"1728\" height=\"571\" alt=\"Screenshot 2026-01-30 at 16 06
09\"\nsrc=\"https://github.com/user-attachments/assets/a3e6e537-313e-424a-ab80-9da37f338996\"\n/>\n\n###
Checklist\n\n- [ ] The PR description includes the appropriate Release
Notes section,\nand the correct `release_note:*` label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[ ] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n### Identify risks\n\nUI label
fix only.\n\n---------\n\nCo-authored-by: Elastic Machine
<elasticmachine@users.noreply.github.com>","sha":"24178349257bbc5d382606d42e4f11b0aede2dd1","branchLabelMapping":{"^v9.4.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Fleet","backport:version","v9.3.0","v9.4.0"],"title":"[Fleet]
Fix bulk remove agent root privilege
label","number":251085,"url":"https://github.com/elastic/kibana/pull/251085","mergeCommit":{"message":"[Fleet]
Fix bulk remove agent root privilege label (#251085)\n\n##
Summary\n\nSmall label fix for root privilege removal action for
Fleet-managed\nElastic Agents: single agent menus have the correct label
\"Remove root\nprivilege\" but the bulk actions menu had \"Remove root
access for N\nagents\". This PR corrects \"access\" to \"privilege\" for
consistency.\n\nOriginal implementation
PR:\nhttps://github.com//pull/237790\nDocumentation PR:
https://github.com/elastic/docs-content/pull/4910\n\n###
Screenshots\n\nBefore:\n<img width=\"1728\" height=\"576\"
alt=\"Screenshot 2026-01-30 at 16 06
45\"\nsrc=\"https://github.com/user-attachments/assets/99384fd7-53cf-47f0-b7ac-d9db4467cc03\"\n/>\n\nAfter:\n<img
width=\"1728\" height=\"576\" alt=\"Screenshot 2026-01-30 at 16 10
50\"\nsrc=\"https://github.com/user-attachments/assets/e34704d6-cb4b-41c5-a953-405759d1c919\"\n/>\n\nWhich
matches single agent menus:\n<img width=\"1728\" height=\"648\"
alt=\"Screenshot 2026-01-30 at 16 05
48\"\nsrc=\"https://github.com/user-attachments/assets/703f774b-4bd1-47ed-ab59-ff0b5c012905\"\n/>\n\n<img
width=\"1728\" height=\"571\" alt=\"Screenshot 2026-01-30 at 16 06
09\"\nsrc=\"https://github.com/user-attachments/assets/a3e6e537-313e-424a-ab80-9da37f338996\"\n/>\n\n###
Checklist\n\n- [ ] The PR description includes the appropriate Release
Notes section,\nand the correct `release_note:*` label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[ ] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n### Identify risks\n\nUI label
fix only.\n\n---------\n\nCo-authored-by: Elastic Machine
<elasticmachine@users.noreply.github.com>","sha":"24178349257bbc5d382606d42e4f11b0aede2dd1"}},"sourceBranch":"main","suggestedTargetBranches":["9.3"],"targetPullRequestStates":[{"branch":"9.3","label":"v9.3.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.4.0","branchLabelMappingKey":"^v9.4.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/251085","number":251085,"mergeCommit":{"message":"[Fleet]
Fix bulk remove agent root privilege label (#251085)\n\n##
Summary\n\nSmall label fix for root privilege removal action for
Fleet-managed\nElastic Agents: single agent menus have the correct label
\"Remove root\nprivilege\" but the bulk actions menu had \"Remove root
access for N\nagents\". This PR corrects \"access\" to \"privilege\" for
consistency.\n\nOriginal implementation
PR:\nhttps://github.com//pull/237790\nDocumentation PR:
https://github.com/elastic/docs-content/pull/4910\n\n###
Screenshots\n\nBefore:\n<img width=\"1728\" height=\"576\"
alt=\"Screenshot 2026-01-30 at 16 06
45\"\nsrc=\"https://github.com/user-attachments/assets/99384fd7-53cf-47f0-b7ac-d9db4467cc03\"\n/>\n\nAfter:\n<img
width=\"1728\" height=\"576\" alt=\"Screenshot 2026-01-30 at 16 10
50\"\nsrc=\"https://github.com/user-attachments/assets/e34704d6-cb4b-41c5-a953-405759d1c919\"\n/>\n\nWhich
matches single agent menus:\n<img width=\"1728\" height=\"648\"
alt=\"Screenshot 2026-01-30 at 16 05
48\"\nsrc=\"https://github.com/user-attachments/assets/703f774b-4bd1-47ed-ab59-ff0b5c012905\"\n/>\n\n<img
width=\"1728\" height=\"571\" alt=\"Screenshot 2026-01-30 at 16 06
09\"\nsrc=\"https://github.com/user-attachments/assets/a3e6e537-313e-424a-ab80-9da37f338996\"\n/>\n\n###
Checklist\n\n- [ ] The PR description includes the appropriate Release
Notes section,\nand the correct `release_note:*` label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[ ] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n### Identify risks\n\nUI label
fix only.\n\n---------\n\nCo-authored-by: Elastic Machine
<elasticmachine@users.noreply.github.com>","sha":"24178349257bbc5d382606d42e4f11b0aede2dd1"}}]}]
BACKPORT-->

Co-authored-by: Jill Guyonnet <jill.guyonnet@elastic.co>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting release_note:feature Makes this part of the condensed release notes Team:Fleet Team label for Observability Data Collection Fleet team v9.3.0

9 participants