Mutations

Buoy gates every write through a confirmation modal. The defaults are deliberately strict: by default, you must type the object name before the Confirm button activates, and destructive actions render with a red header. You can dial that down per your taste in Settings.

This page covers the actions that change cluster state. Read-only behavior (logs, YAML viewing, scheduling explanations) is documented in detail-views.md. For plugin-authored actions, see plugins/actions.md.

Contents

Confirmation Modes

Set the mode under Settings, Mutation Confirmations.

ModeBehavior
Phrase (default)When a phrase is required (typically the object name), the Confirm button stays disabled until you type it verbatim. Otherwise Confirm is immediately enabled, but the modal still appears for review.
Yes / NoPhrase typing is suppressed. Confirm is immediately enabled. The modal still appears so you can review diffs, drain options, scale inputs, and so on.
No ConfirmationMutations fire immediately with no dialog. A modal only appears if there’s an error to show.

When an action is denied for lack of permission, Buoy shows a banner. With the “Impersonate on Auth Failure” toggle enabled, it offers to activate /as with a recent or new identity. The original action is not retried automatically; you re-run it under the new identity.

Single-Object Actions

Every detail view has an Actions menu (kebab, also reachable with m). The available actions depend on the kind. Each opens a confirmation modal; the phrase to type is the object’s name.

ActionApplies toEffect
Edit YAMLAnything with a YAML tabSwitches the YAML tab into edit mode. See Editing YAML.
DeleteAnythingDeletes the object. Objects with finalizers may take a while to actually disappear.
ScaleDeployment, StatefulSet, ReplicaSetSets the replica count. The dialog shows current and target.
RestartDeployment, StatefulSet, DaemonSetTriggers a rolling restart of the workload’s pods — the same effect as kubectl rollout restart.
EvictPodRequests a graceful eviction. If a PodDisruptionBudget would be violated, the eviction is refused and the error is shown.
Cordon, UncordonNodeMarks the node unschedulable (or schedulable again). The button label flips with the current state.
DrainNodeCordons the node, then evicts eligible pods. The dialog offers the usual options — ignore DaemonSet pods, delete emptyDir data, force standalone pods, override the grace period, and dry run. The result is a per-pod table of evicted, skipped, and failed entries.
Forward PortPod, Service, Deployment, StatefulSet, ReplicaSet, DaemonSetOpens the port-forward modal. Active forwards appear in the header chip and the /pf manager.
Submit, ResubmitWorkflow, WorkflowTemplate, ClusterWorkflowTemplate, CronWorkflowOpens the workflow submission modal. See integrations/argo-workflows.md.
Sync, Refresh, Hard Refresh, Terminate SyncArgoCD ApplicationSee integrations/argocd.md.
RefreshArgoCD ApplicationSetRe-evaluates the ApplicationSet’s generators. See integrations/argocd.md.
Restart, Pause, Resume, Promote, Promote Full, Abort, RetryArgo RolloutSee integrations/argo-rollouts.md.
Stop, Terminate, RetryArgo WorkflowSee integrations/argo-workflows.md.
Rollback, UninstallHelm releaseSee integrations/helm.md.

Plugins can contribute additional actions to the same menu; they appear under their plugin name.

Bulk Actions in Tables

Any list view supports multi-select. Enter select mode by clicking a row checkbox, pressing x on the cursor row, or pressing a to select every visible row. Shift-click toggles a contiguous range from the last clicked checkbox. The header checkbox toggles every row in the current sort and filter.

While a selection is active, a sticky bar appears above the table with an Actions dropdown and a clear button. Press m to open the menu from the keyboard. The available actions depend on the resolved kind.

ActionApplies toEffect
DeleteAny kindBulk delete. Errors surface per row in the result.
Edit LabelsAny kindSee Editing Labels and Annotations.
Edit AnnotationsAny kindSame syntax and semantics as label editing.
RestartDeployment, StatefulSet, DaemonSetBulk rollout restart.
Cordon, Uncordon, DrainNodeBulk node operations. Drain behaves the same as the single-object form for each node.
Open DashboardAny kind with a configured Prometheus dashboardOpens a dashboard scoped to the selection.

The confirm phrase for bulk actions is the verb plus the selection, for example DELETE 3 pods or RESTART 2 deployments. Errors are collected per row and shown inline; partial failures keep the modal open so you can retry or cancel.

Plugins can register bulk actions that obey the same selection model.

Editing Labels and Annotations

The Edit Labels and Edit Annotations dialogs accept kubectl-style syntax in a single text area. Each entry is space- or newline-separated. Blank lines and lines starting with # are ignored.

FormEffect
key=valueUpsert the key with the given value.
key-Delete the key.

Worked example:

team=platform
owner=alice
deprecated-
# Annotations follow the same rules.
example.com/last-touched=2026-05-26

Only the keys you list are touched: key=value adds or updates that key, key- removes it, and every other label or annotation is left alone.

Editing YAML

Open a detail view’s YAML tab. Click Edit, or press the Edit button in the tab strip. The editor switches to writable mode and tracks your draft.

When you click Apply, Buoy shows a confirmation modal with a diff between the original and your draft. The phrase to type is the object name. On confirm, your draft is applied to the cluster, taking ownership of the fields you changed even if another controller manages them.

Errors surface inline, labeled with the kind, namespace, and name. The modal stays open so you can fix and retry without losing your draft. Toggling Edit off discards the draft.

Apply YAML

The Apply YAML action takes a multi-document YAML blob and applies each document to the cluster. It’s reachable from the kebab menu on a list view (and from plugins or slash commands that call into it). The result is a table of per-document outcomes: kind, namespace, name, and whether it succeeded.

Audit Log

Every mutation listed on this page writes one row to a local SQLite audit log (audit.db next to prefs.json). The log captures the before/after object JSON, context, impersonation, params, status, and duration — so you can answer “what changed, when, and by whom” without leaving the app. Open it with /audit, or filter to one object via View Audit History in any detail page’s Actions menu. See audit/ for the full reference, including the Secret redaction policy and retention caps.

Impersonation

/as activates Kubernetes impersonation. Once active, every mutation runs as the impersonated user, and the whole app paints a red border so impersonated sessions are visually distinct.

/as alice
/as alice --groups platform,sre
/as alice --groups platform --uid 1234
/as              # clear
/as -            # clear

Sessions auto-expire after 10 minutes of idleness or 60 minutes from activation, whichever comes first. Keystrokes and mouse activity reset the idle timer. See contexts.md for details.


Edit this page on GitLab