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
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 identifies the default supported catalogue: All, Ubuntu, or Fedora. It includes planner preferences, not just hard execution fences; see action compatibility. Rb = requires reboot; Ro = automatic rollback available.
Deployment (atomic host)
Action
Command
Risk
Distro
Rb
Ro
Description
GetSystemState
rpm-ostree status --json
Low
Fedora
–
–
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
Processes
Action
Command
Risk
Distro
Rb
Ro
Description
ListProcesses
ps aux --sort=-%mem
Low
All
–
–
list running processes with CPU and memory usage — no params
SignalProcess
sudo kill -s TERM 1234
High
All
–
–
send a signal to a process to stop it — params: pid* (integer > 1); signal (TERM|KILL|HUP|INT, default TERM)
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)
Storage — LVM
Action
Command
Risk
Distro
Rb
Ro
Description
GetLvmReport
lvs --reportformat json --units b -o lv_name,vg_name,lv_size,lv_attr,origin,data_percent
Low
All
–
–
list logical volumes with VG, size, attributes, and usage as JSON (lvs) — no params; read-only
ExtendLogicalVolume
sudo lvextend -L +10G -r ubuntu-vg/ubuntu-lv
High
All
–
–
grow a logical volume AND its filesystem in one step (lvextend -r) — params: vg*, lv*, size* (e.g. '+10G' to add, or '50G' absolute); High risk
CreateLogicalVolume
sudo lvcreate -L 20G -n data ubuntu-vg
Medium
All
–
–
create a new logical volume in a volume group (lvcreate) — params: vg*, name*, size* (e.g. '20G'); Medium risk
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
Kernel parameters — sysctl
Action
Command
Risk
Distro
Rb
Ro
Description
GetSysctl
sysctl -- net.ipv4.ip_forward
Low
All
–
–
read a kernel parameter (sysctl) — param: key (optional, dotted e.g. 'net.ipv4.ip_forward'; omit to dump all); read-only
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
Mounts & swap
Action
Command
Risk
Distro
Rb
Ro
Description
GetMounts
findmnt --json
Low
All
–
–
list mounted filesystems as JSON (findmnt) — no params; read-only
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
Log management
Action
Command
Risk
Distro
Rb
Ro
Description
GetLogrotateStatus
logrotate -d /etc/logrotate.conf
Low
All
–
–
dry-run logrotate to show what would rotate (logrotate -d) — param: config (optional path); read-only
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
PAM password policy
Action
Command
Risk
Distro
Rb
Ro
Description
GetPasswordAging
chage -l alice
Low
All
–
–
show a user's password-aging fields (chage -l) — param: user*; read-only
SetPasswordAging
sudo chage -M 90 alice
High
All
–
–
set a user's password aging (chage) — params: user*, plus at least one of max_days/min_days/warn_days (0-99999); 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
auditd
Action
Command
Risk
Distro
Rb
Ro
Description
GetAuditRules
auditctl -l
Low
All
–
–
list loaded audit rules (auditctl -l) — no params; read-only; needs auditd installed
AddAuditRule
sudo /usr/lib/sysknife/audit-edit --op add --path /etc/passwd --perms wa --key passwd-watch
Medium
All
–
–
add a persistent audit file-watch rule — params: path* (absolute file/dir), perms* (subset of r/w/x/a), key* (label); Medium risk; needs auditd installed
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
remove a SysKnife-managed sudoers.d drop-in — param: name*; High risk
Network
Action
Command
Risk
Distro
Rb
Ro
Description
ConfigureWifi
sudo nmcli device wifi connect CafeHotspot
High
All
–
–
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 /usr/lib/sysknife/action-steps firewall public ssh add-service
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?"
GetNftablesRuleset
sudo nft list ruleset
Low
All
–
–
read the current nftables ruleset — no params; read-only; rules do not by themselves prove that traffic is blocked
GetFirewallBackendState
/usr/lib/sysknife/firewall-state
Low
All
–
–
inspect nftables, ufw and firewalld observations — no params; read-only; use for general firewall status; unavailable or inactive frontends do not prove the host is unfiltered
resolvectl
Action
Command
Risk
Distro
Rb
Ro
Description
ResolvectlStatus
resolvectl status
Low
All
–
–
show DNS resolution status for all network interfaces (resolvectl status) — no params; cross-distro (any systemd-resolved host); read-only
ResolvectlSetDns
sudo resolvectl dns eth0 1.1.1.1 8.8.8.8
High
All
–
–
set DNS servers for a network interface — params: interface* (e.g. eth0), servers* (string[]); cross-distro; High risk
Identity / time / locale
Action
Command
Risk
Distro
Rb
Ro
Description
GetDateTime
timedatectl
Low
All
–
–
current date, time, timezone, and NTP status (timedatectl) — no params
SetHostname
sudo hostnamectl set-hostname sysknife-lab
Medium
All
–
–
change the system hostname — param: hostname* (string)
SetTimezone
sudo timedatectl set-timezone America/Mexico_City
Medium
All
–
–
change the system timezone — param: timezone* (e.g. America/Chicago)
SetLocale
sudo localectl set-locale en_US.UTF-8
Medium
All
–
–
change the system locale — param: locale* (e.g. en_US.UTF-8)
SetNtp
sudo timedatectl set-ntp true
Medium
All
–
–
enable or disable NTP sync — param: enabled* (bool)
Users & groups
Action
Command
Risk
Distro
Rb
Ro
Description
ListUsers
getent passwd
Low
All
–
–
list all local user accounts — no params
ListGroups
getent group
Low
All
–
–
list all local groups — no params
CreateUser
sudo useradd --create-home --home-dir /home/alice --shell /bin/bash alice
High
All
–
–
create a local user account — param: username*; optional: shell, home
DeleteUser
sudo userdel alice
High
All
–
–
delete a local user account — param: username*
AddUserToGroup
sudo /usr/lib/sysknife/action-steps group-add alice wheel
High
All
–
–
add a user to a group — params: username*, group*
RemoveUserFromGroup
sudo /usr/lib/sysknife/action-steps group-remove alice wheel
High
All
–
–
remove a user from a group — params: username*, group*
CreateGroup
sudo groupadd developers
Medium
All
–
–
create a local group — param: group*; optional: system (bool → system GID range)
DeleteGroup
sudo groupdel developers
High
All
–
–
delete a local group — param: group*; irreversible
LockUserAccount
sudo usermod --lock alice
High
All
–
–
disable password login for a user without deleting it — param: username*
UnlockUserAccount
sudo usermod --unlock alice
High
All
–
–
re-enable password login for a locked user — param: username*
SSH keys
Action
Command
Risk
Distro
Rb
Ro
Description
GetAuthorizedKeys
cat /home/alice/.ssh/authorized_keys
Low
All
–
–
list SSH authorized_keys for a user — param: username*
AddAuthorizedKey
sudo /usr/lib/sysknife/action-steps ssh-add alice "ssh-ed25519 AAAA..."
High
All
–
–
append an SSH public key to a user's authorized_keys — params: username*, public_key* (full key string)
RemoveAuthorizedKey
sudo /usr/lib/sysknife/action-steps ssh-remove alice "ssh-ed25519 AAAA..."
High
All
–
–
remove an SSH public key from a user's authorized_keys — params: username*, public_key* (full key string)
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)
Package repositories
Action
Command
Risk
Distro
Rb
Ro
Description
ListPackageRepositories
scan /etc/yum.repos.d
Low
Fedora
–
–
list configured DNF/rpm-ostree repos and their enabled state — no params
AddPackageRepository
write /etc/yum.repos.d/repo-id.repo
High
Fedora
–
–
add a DNF repo — params: repo_id*, repo_url*
RemovePackageRepository
delete /etc/yum.repos.d/repo-id.repo
Medium
Fedora
–
–
remove a DNF repo — param: repo_id*
EnablePackageRepository
patch /etc/yum.repos.d/repo-id.repo
Medium
Fedora
–
–
enable a disabled DNF repo — param: repo_id*
DisablePackageRepository
patch /etc/yum.repos.d/repo-id.repo
Medium
Fedora
–
–
disable a DNF repo without removing it — param: repo_id*
System info
Action
Command
Risk
Distro
Rb
Ro
Description
GetMemoryInfo
free -h
Low
All
–
–
show RAM and swap usage (free -h) — no params
GetHostState
hostnamectl status
Low
Ubuntu
–
–
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
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); 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); Medium risk
install a snap (auto-holds to prevent auto-refresh) — params: name*; optional: channel (default stable), auto_update (bool, default false)
SnapRemove
sudo snap remove firefox
Medium
Ubuntu
–
–
remove a snap — param: name*
SnapRefresh
sudo snap refresh firefox
Medium
Ubuntu
–
–
update a snap or all snaps — param: name (optional, omit for all)
SnapHold
sudo snap refresh --hold firefox
Medium
Ubuntu
–
–
pin a snap at its current version (snap refresh --hold) — param: name*
SnapUnhold
sudo snap refresh --unhold firefox
Medium
Ubuntu
–
–
allow a held snap to auto-refresh again — param: name*
SnapList
snap list
Low
Ubuntu
–
–
list installed snaps — no params; read-only
SnapInfo
snap info firefox
Low
Ubuntu
–
–
show snap details (version, channel, description) — param: name*; read-only
SnapRevert
sudo snap revert firefox
Medium
Ubuntu
–
–
revert a snap to its previous revision — param: name*
SnapClassicInstall
sudo snap install --classic code
Medium
Ubuntu
–
–
install a snap with classic confinement (full system access) — param: name*
ufw
Action
Command
Risk
Distro
Rb
Ro
Description
UfwEnable
sudo ufw --force enable
High
Ubuntu
–
–
enable the ufw firewall — no params; High risk
UfwDisable
sudo ufw disable
High
Ubuntu
–
–
disable the ufw firewall — no params; 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); High risk
UfwDeny
sudo ufw deny 23
High
Ubuntu
–
–
deny inbound traffic on a port or service — param: port_or_service*; High risk
UfwReset
sudo ufw --force reset
High
Ubuntu
–
–
reset ufw to defaults, removing all rules — no params; High risk; irreversible
UfwStatus
sudo ufw status verbose
Low
Ubuntu
–
–
show current ufw status and rules — optional param: numbered (boolean, default false); true runs ufw status numbered and exposes rule_number values for UfwDeleteRule, false keeps verbose status; read-only
UfwDeleteRule
sudo ufw --force delete 1
High
Ubuntu
–
–
delete a ufw rule by number — param: rule_number* (positive integer from query_ufw_rules or UfwStatus with numbered=true); never guess a rule number, and refresh after rule changes; 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'); High risk; use for SSH brute-force mitigation
read the SAVED network configuration: the netplan YAML in /etc/netplan/ — no params; 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; 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*; High risk; run NetplanApply to activate
NetplanGenerate
sudo netplan generate
Medium
Ubuntu
–
–
regenerate netplan backend config without applying — no params; Medium risk; dry-run before NetplanApply
distrobox
Action
Command
Risk
Distro
Rb
Ro
Description
DistroboxList
distrobox list
Low
Ubuntu
–
–
list distrobox containers — no params; read-only
DistroboxCreate
distrobox create --yes --name dev --image ubuntu:24.04
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; 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
Ubuntu Pro
Action
Command
Risk
Distro
Rb
Ro
Description
ProStatus
pro status --all
Low
Ubuntu
–
–
show Ubuntu Pro subscription status — no params; Ubuntu only; read-only
ProAttach
sudo pro attach <REDACTED>
High
Ubuntu
–
–
attach machine to an Ubuntu Pro subscription — param: token* (credential, never log); Ubuntu only; High risk
ProDetach
sudo pro detach --assume-yes
High
Ubuntu
–
–
detach from Ubuntu Pro subscription — no params; Ubuntu only; High risk
EnableProService
sudo pro enable esm-apps --assume-yes
High
Ubuntu
–
–
enable one Ubuntu Pro service (pro enable <service>) — param: service* (one of esm-apps, esm-infra, livepatch, usg, fips, fips-updates, cis, ros, ros-updates, cc-eal, realtime-kernel, landscape, anbox-cloud); Ubuntu only; High risk; needs an attached subscription
DisableProService
sudo pro disable esm-apps --assume-yes
High
Ubuntu
–
–
disable one Ubuntu Pro service (pro disable <service>) — param: service* (same allowlist as EnableProService); Ubuntu only; High risk
Livepatch
Action
Command
Risk
Distro
Rb
Ro
Description
LivepatchStatus
sudo canonical-livepatch status --verbose
Low
Ubuntu
–
–
show Canonical Livepatch kernel-patch status — no params; Ubuntu only; read-only; requires canonical-livepatch installed and Ubuntu Pro
Multipass
Action
Command
Risk
Distro
Rb
Ro
Description
MultipassList
multipass list
Low
Ubuntu
–
–
list Multipass VMs and their state — no params; read-only
191 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 192 total.