This file is generated. Do not edit by hand.
Regenerate with UPDATE_ACTION_REFERENCE=1 cargo test -p sysknife-daemon --test action_reference_doc; a plain cargo test fails if it drifts from the catalogue.
Every row is derived from the live code: the command from each action's ActionSpec mechanism, the risk from its risk_level, the distro from sysknife-core::action_family, and the description from the brain's KNOWN_ACTIONS list. Distro is All (cross-distro), Ubuntu (Debian-family only), or Fedora (atomic-host only). Rb = requires reboot; Ro = automatic rollback available.
full rpm-ostree deployment snapshot: layered packages, pinned/staged deployments, booted/pending OSTree refs — Fedora/atomic only; on Ubuntu use GetHostState
CollectDiagnostics
journalctl -b -n 500 --no-pager
Low
All
–
–
recent system journal log (last 500 lines) for error diagnosis and troubleshooting
GetDeploymentHistory
rpm-ostree status --json
Low
Fedora
–
–
rpm-ostree deployment history: past and current OSTree commits with timestamps
ListDeployments
rpm-ostree status --json
Low
Fedora
–
–
list all currently staged, pending, and booted deployments
UpdateSystem
sudo rpm-ostree upgrade
High
Fedora
✓
✓
download and stage the latest OSTree update (does not reboot)
PinDeployment
sudo ostree admin pin 0
High
Fedora
–
–
pin a deployment so it is not GC'd — param: index (u32, deployment index from ListDeployments)
UnpinDeployment
sudo ostree admin pin --unpin 0
High
Fedora
–
–
unpin a previously pinned deployment — param: index (u32)
RebaseSystem
sudo rpm-ostree rebase fedora/41/x86_64/silverblue
High
Fedora
✓
✓
switch to a different OSTree ref/remote — param: target_ref (string, e.g. fedora/40/x86_64/silverblue)
CleanupDeployments
sudo rpm-ostree cleanup --rollback --pending
High
Fedora
–
–
remove old staged deployments to free disk space
RebootSystem
sudo systemctl reboot
High
All
✓
–
reboot the machine into the current or staged deployment
RollbackDeployment
sudo rpm-ostree rollback
High
Fedora
✓
–
roll back to the previous booted deployment
GetKernelArguments
rpm-ostree kargs
Low
Fedora
–
–
list current kernel command-line arguments (kargs)
SetKernelArguments
sudo rpm-ostree kargs
High
Fedora
✓
✓
add/remove kernel command-line args — params: add (string[]), remove (string[]) — either may be []; both lists are screened: no weakening arg may be added, and no protective one (lockdown=, module.sig_enforce=1, pti=on, mitigations=, selinux=1, slab_nomerge, …) removed
schedule a recurring command as a systemd timer — params: name* (unit-safe id), command* (executable line), schedule* (systemd OnCalendar, e.g. "*-*-* 02:00:00" or "daily")
GetServiceResourceLimits
systemctl show nginx.service --property=MemoryMax,MemoryHigh,CPUQuotaPerSecUSec,TasksMax
Low
All
–
–
show a service's cgroup limits (MemoryMax/CPUQuota/TasksMax) via systemctl show — param: unit*; read-only
cap a service's resources via systemctl set-property (applies live + persists) — params: unit*, plus at least one of memory_max (e.g. '500M' or 'infinity'), memory_high, cpu_quota (e.g. '50%'), tasks_max (integer or 'infinity'); Medium risk; undo with systemctl revert
read filtered systemd journal entries as JSON (journalctl) — all params optional: unit (e.g. 'ssh.service'), priority (0-7 or name like 'err', or a range '0..3'), boot (bool, current boot only), kernel (bool, kernel messages only), since/until (e.g. '2026-07-22 10:00:00', 'yesterday', '-1h'), grep (regex on MESSAGE), lines (default 100, max 10000); read-only
VacuumJournal
journalctl --vacuum-size=500M
High
All
–
–
reclaim journal disk space — supply exactly one of size_mb (cap total journal size) or retain_days (delete entries older than N days)
snapshot a logical volume before risky changes (lvcreate -s) — params: vg*, origin* (LV to snapshot), snapshot* (new name), size* (copy-on-write reserve, e.g. '5G'); Medium risk
set AND persist a kernel parameter (runtime + /etc/sysctl.d drop-in) — params: key* (dotted, e.g. 'vm.swappiness'), value* (number or space-separated list); High risk
mount a device and persist it to /etc/fstab with nofail — params: device* (/dev/.., UUID=.., LABEL=.., //host/share, or host:/export), mountpoint* (absolute; not a system dir), fstype* (ext4/xfs/btrfs/vfat/nfs/cifs/…), options (csv, optional); High risk
disable a swap file, remove it, and drop its /etc/fstab entry — param: file* (must already be a swap file per /proc/swaps or /etc/fstab, and not a symlink); High risk
forward all logs to a remote collector via rsyslog (validated with rsyslogd -N1) — params: host*, port* (1-65535), protocol* (tcp|udp); High risk — logs leave the host
RemoveRemoteSyslog
sudo /usr/lib/sysknife/log-edit --op rm-forward
High
All
–
–
stop remote syslog forwarding (remove the rsyslog drop-in) — no params; High risk
set password-quality rules via pwquality — params: at least one of minlen (1-128), dcredit/ucredit/lcredit/ocredit (-64..64); High risk — needs libpam-pwquality enabled in the PAM stack to take effect
configure account lockout via faillock — params: at least one of deny (1-1000), unlock_time/fail_interval (seconds, 0-604800); High risk — needs pam_faillock enabled in the PAM stack to take effect
grant a scoped sudo rule (validated with visudo before install) — params: name* (^[a-z0-9][a-z0-9_-]*$), user*, commands* ('ALL' or comma-separated ABSOLUTE paths), runas (default root, or 'ALL'), nopasswd (bool); High risk — this configures privilege escalation
connect to a Wi-Fi network — params: ssid*, password (optional for open networks)
SetDnsServers
sudo resolvectl dns wlp1s0 1.1.1.1 8.8.8.8
High
All
–
–
set DNS servers for an interface — params: interface* (e.g. wlp1s0), servers* (string[])
ConfigureFirewall
sudo sh -c "firewall-cmd --permanent --zone='public' --add-service='ssh' && firewall-cmd --reload"
High
All
–
–
add/remove a service in a firewalld zone — params: zone*, service*, enabled* (bool)
GetFirewallState
firewall-cmd --list-all
Low
All
–
–
show current firewalld zones, open services, and port rules — no params
GetNetworkStatus
ip -brief addr
Low
All
–
–
show LIVE network state: interfaces, IP addresses, and connection state — no params; this is runtime status, NOT the saved configuration; on Ubuntu the saved config is NetplanGetConfig
GetListeningPorts
ss -tulpnH
Low
All
–
–
show listening TCP/UDP sockets and the process bound to each (ss -tulpn) — no params; read-only; use for "what is listening on port X?"
harden sshd by setting an allowlisted option via a validated drop-in — params: option* (one of PermitRootLogin, PasswordAuthentication, PubkeyAuthentication, X11Forwarding, PermitEmptyPasswords), value* (per-option: yes/no, or prohibit-password/forced-commands-only for PermitRootLogin)
what this host is: OS release, kernel, architecture, virtualization, machine identity (hostnamectl) — Ubuntu/Debian counterpart to GetSystemState, which reports deployments an apt host does not have
show status of all loaded AppArmor profiles (aa-status) — no params; Ubuntu only; read-only
AppArmorEnforce
sudo aa-enforce /etc/apparmor.d/usr.bin.firefox
High
Ubuntu
–
–
put an AppArmor profile into enforce mode (aa-enforce) — param: profile_path* (e.g. /etc/apparmor.d/usr.bin.firefox); Ubuntu only; High risk
AppArmorComplain
sudo aa-complain /etc/apparmor.d/usr.bin.firefox
High
Ubuntu
–
–
put an AppArmor profile into complain/learning mode (aa-complain) — param: profile_path*; Ubuntu only; High risk (disables MAC enforcement for the profile)
write a fail2ban jail override (/etc/fail2ban/jail.d/) — params: name*, plus at least one of enabled (bool), maxretry (1-100), bantime/findtime (seconds 0-2592000); Ubuntu only; High risk; needs fail2ban installed
pin a package to a version/release via /etc/apt/preferences.d — params: name*, package* (glob), pin* (e.g. 'version 1.24.*' or 'release a=noble-security'), priority* (int -1..1000); Ubuntu only; Medium risk
enable the ufw firewall — no params; Ubuntu only; High risk
UfwDisable
sudo ufw disable
High
Ubuntu
–
–
disable the ufw firewall — no params; Ubuntu only; High risk
UfwAllow
sudo ufw allow 22
High
Ubuntu
–
–
allow inbound traffic on a port or service — param: port_or_service* (e.g. 22, 22/tcp, OpenSSH); Ubuntu only; High risk
UfwDeny
sudo ufw deny 23
High
Ubuntu
–
–
deny inbound traffic on a port or service — param: port_or_service*; Ubuntu only; High risk
UfwReset
sudo ufw --force reset
High
Ubuntu
–
–
reset ufw to defaults, removing all rules — no params; Ubuntu only; High risk; irreversible
UfwStatus
sudo ufw status verbose
Low
Ubuntu
–
–
show current ufw status and rules — no params; Ubuntu only; read-only
UfwDeleteRule
sudo ufw --force delete 1
High
Ubuntu
–
–
delete a ufw rule by number — param: rule_number* (positive integer from 'ufw status numbered'); Ubuntu only; High risk
UfwLimit
sudo ufw limit 22
High
Ubuntu
–
–
add rate-limiting rule on a port/service (>6 connections/30s blocked) — param: target* (e.g. '22' or 'ssh'); Ubuntu only; High risk; use for SSH brute-force mitigation
read the SAVED network configuration: the netplan YAML in /etc/netplan/ — no params; Ubuntu only; read-only; on Ubuntu this is what "the network config" means, as opposed to GetNetworkStatus which reports live interface state
NetplanApply
sudo netplan apply
High
Ubuntu
–
–
apply netplan network configuration immediately — no params; Ubuntu only; High risk; can disconnect SSH
NetplanSet
sudo netplan set ethernets.eth0.dhcp4=true
High
Ubuntu
–
–
set a single netplan key to a value — params: key* (e.g. 'ethernets.eth0.dhcp4'), value*; Ubuntu only; High risk; run NetplanApply to activate
NetplanGenerate
sudo netplan generate
Medium
Ubuntu
–
–
regenerate netplan backend config without applying — no params; Ubuntu only; Medium risk; dry-run before NetplanApply
modify GRUB kernel arguments and run update-grub — params: append (list), delete (list), bare tokens only (no '='); both lists are screened for boot-security downgrades; Ubuntu only; High risk; requires reboot
upgrade to the next Ubuntu release (do-release-upgrade) — no params; Ubuntu only; High risk; takes 20–45 min; requires reboot; only for explicit distribution upgrade requests
list Multipass VMs and their state — no params; Ubuntu only; read-only
189 actions have an ActionSpec and are tabled above. The full catalogue (KNOWN_ACTION_NAMES) also includes ListJobHistory, which the dispatcher handles before the executor, for 190 total.