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.
Action Command Risk Distro Rb Ro Description
GetSystemStaterpm-ostree status --jsonLow All – – full rpm-ostree deployment snapshot: layered packages, pinned/staged deployments, booted/pending OSTree refs
CollectDiagnosticsjournalctl -b -n 500 --no-pagerLow All – – recent system journal log (last 500 lines) for error diagnosis and troubleshooting
GetDeploymentHistoryrpm-ostree status --jsonLow Fedora – – rpm-ostree deployment history: past and current OSTree commits with timestamps
ListDeploymentsrpm-ostree status --jsonLow Fedora – – list all currently staged, pending, and booted deployments
UpdateSystemsudo rpm-ostree upgradeHigh All ✓ ✓ download and stage the latest OSTree update (does not reboot)
PinDeploymentsudo ostree admin pin 0High Fedora – – pin a deployment so it is not GC'd — param: index (u32, deployment index from ListDeployments)
UnpinDeploymentsudo ostree admin pin --unpin 0High Fedora – – unpin a previously pinned deployment — param: index (u32)
RebaseSystemsudo rpm-ostree rebase fedora/41/x86_64/silverblueHigh Fedora ✓ ✓ switch to a different OSTree ref/remote — param: target_ref (string, e.g. fedora/40/x86_64/silverblue)
CleanupDeploymentssudo rpm-ostree cleanup --rollback --pendingHigh Fedora – – remove old staged deployments to free disk space
RebootSystemsudo systemctl rebootHigh All ✓ – reboot the machine into the current or staged deployment
RollbackDeploymentsudo rpm-ostree rollbackHigh Fedora ✓ – roll back to the previous booted deployment
GetKernelArgumentsrpm-ostree kargsLow Fedora – – list current kernel command-line arguments (kargs)
SetKernelArgumentssudo rpm-ostree kargsHigh Fedora ✓ ✓ add/remove kernel command-line args — params: add (string[]), remove (string[]) — either may be []
Action Command Risk Distro Rb Ro Description
InstallPackagessudo rpm-ostree install --idempotent podmanHigh All ✓ ✓ layer multiple RPM packages — param: packages* (string[])
RemovePackagessudo rpm-ostree uninstall podmanHigh All ✓ ✓ remove layered RPM packages — param: packages* (string[])
GetLayeredPackagesrpm-ostree status --jsonLow Fedora – – list RPM packages layered on top of the base OS image — no params
AddLayeredPackagesudo rpm-ostree install --idempotent podmanHigh Fedora ✓ ✓ layer a single RPM package (requires reboot) — param: package* (string)
RemoveLayeredPackagesudo rpm-ostree uninstall podmanHigh Fedora ✓ ✓ remove a single layered RPM package (requires reboot) — param: package* (string)
ReplaceLayeredPackagesudo rpm-ostree install neovim --uninstall vimHigh Fedora ✓ ✓ replace one layered package with another — params: old* (string), new* (string)
ResetLayeredPackageOverridesudo rpm-ostree override reset --allHigh Fedora ✓ ✓ reset all rpm-ostree override changes — no params
RemoveBasePackagesudo rpm-ostree override remove geditHigh Fedora ✓ ✓ exclude a base OS package from the deployment — param: package* (string)
GetPendingUpdatesrpm-ostree upgrade --checkLow All – – check for a staged update and show its diff — no params
Action Command Risk Distro Rb Ro Description
GetDiskUsagedf -h --output=source,fstype,size,used,avail,pcent,target --exclude-type=composefs --exclude-type=tmpfs --exclude-type=devtmpfs --exclude-type=efivarfsLow All – – show disk space usage for all mounted filesystems (df -h) — no params
Action Command Risk Distro Rb Ro Description
InstallFlatpaksudo runuser -u testuser -- flatpak install --user -y flathub app-idMedium All – – install a Flatpak app — params: username* (Linux user), app_id* (e.g. org.mozilla.firefox), remote* (e.g. flathub)
RemoveFlatpaksudo runuser -u testuser -- flatpak uninstall --user -y app-idMedium All – – uninstall a Flatpak app — params: username*, app_id*
SearchFlatpakAppsflatpak search search-termLow All – – search Flatpak remotes for apps — param: term* (query string) — no username needed
ListFlatpakRemotessudo runuser -u testuser -- flatpak remotes --user --columns=name,urlLow All – – list configured Flatpak remotes — param: username*
ListInstalledFlatpakssudo runuser -u testuser -- flatpak list --user --app --columns=application,name,version,originLow All – – list installed Flatpak apps for a user — param: username*
AddFlatpakRemotesudo runuser -u testuser -- flatpak remote-add --user --if-not-exists remote https://example.invalidMedium All – – add a Flatpak remote — params: username*, remote* (name), url*
RemoveFlatpakRemotesudo runuser -u testuser -- flatpak remote-delete --user remoteMedium All – – remove a Flatpak remote — params: username*, remote* (name)
GetFlatpakAppInfosudo runuser -u testuser -- flatpak info --user app-idLow All – – show metadata for an installed Flatpak — params: username*, app_id*
UpdateFlatpaksudo runuser -u testuser -- flatpak update --user -y com.example.AppMedium All – – update Flatpak apps — params: username* (required); app_id (optional — omit to update all)
UbuntuInstallFlatpaksudo runuser -u testuser -- flatpak install --user -y flathub app-idMedium Ubuntu – – install a Flatpak app on Ubuntu — params: username*, app_id*, remote* (e.g. flathub); Ubuntu only; Medium risk
UbuntuRemoveFlatpaksudo runuser -u testuser -- flatpak uninstall --user -y app-idMedium Ubuntu – – remove a Flatpak app on Ubuntu — params: username*, app_id*; Ubuntu only; Medium risk
UbuntuUpdateFlatpaksudo runuser -u testuser -- flatpak update --user -y com.example.AppMedium Ubuntu – – update Flatpak app(s) on Ubuntu — param: username*; optional: app_id (omit for all); Ubuntu only; Medium risk
UbuntuListFlatpakssudo runuser -u testuser -- flatpak list --user --app --columns=application,name,version,originLow Ubuntu – – list installed Flatpak apps on Ubuntu — param: username*; Ubuntu only; read-only
Action Command Risk Distro Rb Ro Description
ListToolboxessudo runuser -l testuser -c XDG_RUNTIME_DIR=/run/user/$(id -u) toolbox listLow All – – list toolbox containers for a user — param: username*
CreateToolboxsudo runuser -l testuser -c XDG_RUNTIME_DIR=/run/user/$(id -u) toolbox create --container 'sysknife-dev' --release '41'Medium All – – create a toolbox container — params: username*, name*; optional: image, release
RemoveToolboxsudo runuser -l testuser -c XDG_RUNTIME_DIR=/run/user/$(id -u) toolbox rm 'sysknife-dev'Medium All – – remove a toolbox container — params: username*, name*
Action Command Risk Distro Rb Ro Description
ListServicessystemctl list-units --type=service --all --no-legend --no-pagerLow All – – list all systemd units and their active/enabled state — no params
StartServicesudo systemctl start NetworkManager.serviceMedium All – – start a systemd service — param: unit* (e.g. sshd.service)
StopServicesudo systemctl stop NetworkManager.serviceMedium All – – stop a systemd service — param: unit*
RestartServicesudo systemctl restart NetworkManager.serviceMedium All – – restart a systemd service — param: unit*
SetServiceEnabledsudo systemctl enable sshd.serviceMedium All – – enable or disable a service at boot — params: unit*, enabled* (bool)
MaskServicesudo systemctl mask cups.serviceHigh All – – mask a unit so it cannot start by any means — param: unit*
UnmaskServicesudo systemctl unmask cups.serviceMedium All – – unmask a previously masked unit — param: unit*
GetServiceLogsjournalctl -u NetworkManager.service -n 200 --no-pagerLow All – – fetch recent journald log lines for a service — param: unit*
GetServiceStatussystemctl status nginx.service --no-pagerLow All – – show detailed status of a service — param: unit*
ReloadServicesudo systemctl reload nginx.serviceMedium All – – reload a service config without restart (SIGHUP) — param: unit*
ListTimerssystemctl list-timers --all --no-legend --no-pagerLow All – – list all systemd timer units with next trigger time — no params
ReloadDaemonsudo systemctl daemon-reloadMedium All – – run systemctl daemon-reload to pick up changed unit files — no params
CreateScheduledJobsudo /usr/lib/sysknife/scheduled-job-edit --name sysknife-example --command /usr/bin/true --schedule *-*-* 02:00:00High All – – 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")
GetServiceResourceLimitssystemctl show nginx.service --property=MemoryMax,MemoryHigh,CPUQuotaPerSecUSec,TasksMaxLow All – – show a service's cgroup limits (MemoryMax/CPUQuota/TasksMax) via systemctl show — param: unit*; read-only
SetServiceResourceLimitssudo systemctl set-property nginx.service MemoryMax=500M CPUQuota=50%Medium All – – 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
Action Command Risk Distro Rb Ro Description
ListProcessesps aux --sort=-%memLow All – – list running processes with CPU and memory usage — no params
SignalProcesssudo kill -s TERM 1234High All – – send a signal to a process to stop it — params: pid* (integer > 1); signal (TERM|KILL|HUP|INT, default TERM)
Action Command Risk Distro Rb Ro Description
GetJournalLogjournalctl --output=json --no-pager --lines=100 --unit=ssh.service --priority=err --bootLow All – – 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
VacuumJournaljournalctl --vacuum-size=500MHigh All – – reclaim journal disk space — supply exactly one of size_mb (cap total journal size) or retain_days (delete entries older than N days)
Action Command Risk Distro Rb Ro Description
GetLvmReportlvs --reportformat json --units b -o lv_name,vg_name,lv_size,lv_attr,origin,data_percentLow All – – list logical volumes with VG, size, attributes, and usage as JSON (lvs) — no params; read-only
ExtendLogicalVolumesudo lvextend -L +10G -r ubuntu-vg/ubuntu-lvHigh 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
CreateLogicalVolumesudo lvcreate -L 20G -n data ubuntu-vgMedium All – – create a new logical volume in a volume group (lvcreate) — params: vg*, name*, size* (e.g. '20G'); Medium risk
CreateLvSnapshotsudo lvcreate -s -L 5G -n ubuntu-lv-snap ubuntu-vg/ubuntu-lvMedium All – – 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
Action Command Risk Distro Rb Ro Description
GetSysctlsysctl -- net.ipv4.ip_forwardLow All – – read a kernel parameter (sysctl) — param: key (optional, dotted e.g. 'net.ipv4.ip_forward'; omit to dump all); read-only
SetSysctlsudo /usr/lib/sysknife/sysctl-edit --key net.ipv4.ip_forward --value 1High All – – 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
Action Command Risk Distro Rb Ro Description
GetMountsfindmnt --jsonLow All – – list mounted filesystems as JSON (findmnt) — no params; read-only
AddMountsudo /usr/lib/sysknife/mount-edit --op mount --device /dev/sdb1 --mountpoint /mnt/data --fstype ext4 --options defaultsHigh All – – 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
RemoveMountsudo /usr/lib/sysknife/mount-edit --op unmount --mountpoint /mnt/dataHigh All – – unmount and drop the /etc/fstab entry for a mountpoint — param: mountpoint*; High risk
AddSwapsudo /usr/lib/sysknife/mount-edit --op addswap --file /swapfile --size-mb 2048High All – – create a swap file, enable it, and persist to /etc/fstab — params: file* (absolute path), size_mb* (integer MB); High risk
RemoveSwapsudo /usr/lib/sysknife/mount-edit --op rmswap --file /swapfileHigh All – – disable a swap file, remove it, and drop its /etc/fstab entry — param: file*; High risk
Action Command Risk Distro Rb Ro Description
GetLogrotateStatuslogrotate -d /etc/logrotate.confLow All – – dry-run logrotate to show what would rotate (logrotate -d) — param: config (optional path); read-only
ConfigureLogRotationsudo /usr/lib/sysknife/log-edit --op logrotate --name nginx --path /var/log/nginx/*.log --frequency daily --rotate 14 --compressMedium All – – write a logrotate drop-in (validated with logrotate -d) — params: name*, path* (log file/glob under /var/log), frequency* (daily|weekly|monthly), rotate* (count 0-1000), compress (bool); Medium risk
RemoveLogRotationsudo /usr/lib/sysknife/log-edit --op rm-logrotate --name nginxMedium All – – remove a SysKnife-managed logrotate drop-in — param: name*; Medium risk
ConfigureRemoteSyslogsudo /usr/lib/sysknife/log-edit --op rsyslog-forward --host logs.example.com --port 514 --protocol tcpHigh All – – 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
RemoveRemoteSyslogsudo /usr/lib/sysknife/log-edit --op rm-forwardHigh All – – stop remote syslog forwarding (remove the rsyslog drop-in) — no params; High risk
Action Command Risk Distro Rb Ro Description
GetPasswordAgingchage -l aliceLow All – – show a user's password-aging fields (chage -l) — param: user*; read-only
SetPasswordAgingsudo chage -M 90 aliceHigh 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
SetPasswordPolicysudo /usr/lib/sysknife/pam-edit --op pwquality --minlen 12High All – – 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
SetAccountLockoutsudo /usr/lib/sysknife/pam-edit --op faillock --deny 5High All – – 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
Action Command Risk Distro Rb Ro Description
GetAuditRulesauditctl -lLow All – – list loaded audit rules (auditctl -l) — no params; read-only; needs auditd installed
AddAuditRulesudo /usr/lib/sysknife/audit-edit --op add --path /etc/passwd --perms wa --key passwd-watchMedium 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
RemoveAuditRulesudo /usr/lib/sysknife/audit-edit --op remove --key passwd-watchHigh All – – remove a SysKnife-managed audit rule by key — param: key*; High risk
Action Command Risk Distro Rb Ro Description
GetCertificatescertbot certificatesLow All – – list certbot-managed certificates — no params; read-only; needs certbot installed
ObtainCertificatesudo certbot certonly --non-interactive --agree-tos --standalone -m admin@example.com -d example.comHigh All – – obtain a TLS certificate non-interactively (certbot certonly) — params: domains* (array) or domain* (string), email*, challenge (standalone|nginx|apache, default standalone); High risk; needs certbot + network
RenewCertificatessudo certbot renewMedium All – – renew due certbot certificates (certbot renew) — no params; Medium risk; needs certbot + network
Action Command Risk Distro Rb Ro Description
GetSudoGrants/usr/lib/sysknife/sudoers-edit --op listLow All – – list SysKnife-managed sudoers.d drop-ins — no params; read-only
GrantSudoAccesssudo /usr/lib/sysknife/sudoers-edit --op grant --name deploy-restart --user deploy --commands /usr/bin/systemctl --nopasswdHigh All – – 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
RevokeSudoAccesssudo /usr/lib/sysknife/sudoers-edit --op revoke --name deploy-restartHigh All – – remove a SysKnife-managed sudoers.d drop-in — param: name*; High risk
Action Command Risk Distro Rb Ro Description
ConfigureWifisudo nmcli device wifi connect CafeHotspotHigh All – – connect to a Wi-Fi network — params: ssid*, password (optional for open networks)
SetDnsServerssudo resolvectl dns wlp1s0 1.1.1.1 8.8.8.8High All – – set DNS servers for an interface — params: interface* (e.g. wlp1s0), servers* (string[])
ConfigureFirewallsudo sh -c firewall-cmd --permanent --zone='public' --add-service='ssh' && firewall-cmd --reloadHigh All – – add/remove a service in a firewalld zone — params: zone*, service*, enabled* (bool)
GetFirewallStatefirewall-cmd --list-allLow All – – show current firewalld zones, open services, and port rules — no params
GetNetworkStatusip -brief addrLow All – – show network interfaces, IP addresses, and connection state — no params
GetListeningPortsss -tulpnHLow 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?"
Action Command Risk Distro Rb Ro Description
ResolvectlStatusresolvectl statusLow All – – show DNS resolution status for all network interfaces (resolvectl status) — no params; cross-distro (any systemd-resolved host); read-only
ResolvectlSetDnssudo resolvectl dns eth0 1.1.1.1 8.8.8.8High All – – set DNS servers for a network interface — params: interface* (e.g. eth0), servers* (string[]); cross-distro; High risk
Action Command Risk Distro Rb Ro Description
GetDateTimetimedatectlLow All – – current date, time, timezone, and NTP status (timedatectl) — no params
SetHostnamesudo hostnamectl set-hostname sysknife-labMedium All – – change the system hostname — param: hostname* (string)
SetTimezonesudo timedatectl set-timezone America/Mexico_CityMedium All – – change the system timezone — param: timezone* (e.g. America/Chicago)
SetLocalesudo localectl set-locale en_US.UTF-8Medium All – – change the system locale — param: locale* (e.g. en_US.UTF-8)
SetNtpsudo timedatectl set-ntp trueMedium All – – enable or disable NTP sync — param: enabled* (bool)
Action Command Risk Distro Rb Ro Description
ListUsersgetent passwdLow All – – list all local user accounts — no params
ListGroupsgetent groupLow All – – list all local groups — no params
CreateUsersudo useradd --create-home --home-dir /home/alice --shell /bin/bash aliceHigh All – – create a local user account — param: username*; optional: shell, home
DeleteUsersudo userdel aliceHigh All – – delete a local user account — param: username*
AddUserToGroupsudo sh -c grep -q '^wheel:' /etc/group || getent group 'wheel' >> /etc/group; usermod --append --groups 'wheel' 'alice'High All – – add a user to a group — params: username*, group*
RemoveUserFromGroupsudo sh -c grep -q '^wheel:' /etc/group || getent group 'wheel' >> /etc/group; gpasswd --delete 'alice' 'wheel'High All – – remove a user from a group — params: username*, group*
CreateGroupsudo groupadd developersMedium All – – create a local group — param: group*; optional: system (bool → system GID range)
DeleteGroupsudo groupdel developersHigh All – – delete a local group — param: group*; irreversible
LockUserAccountsudo usermod --lock aliceHigh All – – disable password login for a user without deleting it — param: username*
UnlockUserAccountsudo usermod --unlock aliceHigh All – – re-enable password login for a locked user — param: username*
Action Command Risk Distro Rb Ro Description
GetAuthorizedKeyscat /home/alice/.ssh/authorized_keysLow All – – list SSH authorized_keys for a user — param: username*
AddAuthorizedKeysudo sh -c grep -Fxq 'ssh-ed25519 AAAA...' '/home/alice/.ssh/authorized_keys' 2>/dev/null || echo 'ssh-ed25519 AAAA...' >> '/home/alice/.ssh/authorized_keys'High All – – append an SSH public key to a user's authorized_keys — params: username*, public_key* (full key string)
RemoveAuthorizedKeysudo sh -c sed -i '\\|^ssh-ed25519 AAAA...$|d' '/home/alice/.ssh/authorized_keys'High All – – remove an SSH public key from a user's authorized_keys — params: username*, public_key* (full key string)
SetSshdOptionsudo /usr/lib/sysknife/sshd-option-edit --option PermitRootLogin --value prohibit-passwordHigh All – – 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)
Action Command Risk Distro Rb Ro Description
ListPackageRepositoriesscan /etc/yum.repos.d Low All – – list configured DNF/rpm-ostree repos and their enabled state — no params
AddPackageRepositorywrite /etc/yum.repos.d/repo-id.repo High All – – add a DNF repo — params: repo_id*, repo_url*
RemovePackageRepositorydelete /etc/yum.repos.d/repo-id.repo Medium All – – remove a DNF repo — param: repo_id*
EnablePackageRepositorypatch /etc/yum.repos.d/repo-id.repo Medium All – – enable a disabled DNF repo — param: repo_id*
DisablePackageRepositorypatch /etc/yum.repos.d/repo-id.repo Medium All – – disable a DNF repo without removing it — param: repo_id*
Action Command Risk Distro Rb Ro Description
GetMemoryInfofree -hLow All – – show RAM and swap usage (free -h) — no params
Action Command Risk Distro Rb Ro Description
ListContainerssudo runuser -l testuser -c podman ps --all --format jsonLow All – – list Podman containers for a user — param: username*
CreateContainersudo runuser -l testuser -c podman create --name 'sysknife-dev' 'registry.fedoraproject.org/fedora-toolbox:41'Medium All – – create a Podman container — params: username*, name*, image* (e.g. ubuntu:22.04)
StartContainersudo runuser -l testuser -c podman start 'sysknife-dev'Medium All – – start a Podman container — params: username*, name*
StopContainersudo runuser -l testuser -c podman stop 'sysknife-dev'Medium All – – stop a Podman container — params: username*, name*
RemoveContainersudo runuser -l testuser -c podman rm 'sysknife-dev'Medium All – – remove a stopped Podman container — params: username*, name*
GetContainerInfosudo runuser -l testuser -c podman inspect 'sysknife-dev'Low All – – inspect a Podman container — params: username*, name*
Action Command Risk Distro Rb Ro Description
CheckPendingRebootbash -c if test -f /var/run/reboot-required; then cat /var/run/reboot-required; cat /var/run/reboot-required-pkgs 2>/dev/null; else echo 'No reboot required.'; fiLow Ubuntu – – check whether a reboot is pending (/var/run/reboot-required) — no params; Ubuntu/Debian only; read-only
Action Command Risk Distro Rb Ro Description
AppArmorStatussudo aa-statusLow Ubuntu – – show status of all loaded AppArmor profiles (aa-status) — no params; Ubuntu only; read-only
AppArmorEnforcesudo aa-enforce /etc/apparmor.d/usr.bin.firefoxHigh 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
AppArmorComplainsudo aa-complain /etc/apparmor.d/usr.bin.firefoxHigh Ubuntu – – put an AppArmor profile into complain/learning mode (aa-complain) — param: profile_path*; Ubuntu only; High risk (disables MAC enforcement for the profile)
Action Command Risk Distro Rb Ro Description
CloudInitStatuscloud-init status --longLow Ubuntu – – show cloud-init provisioning status (cloud-init status --long) — no params; Ubuntu only; read-only
Action Command Risk Distro Rb Ro Description
Fail2banStatussudo fail2ban-client statusLow Ubuntu – – show fail2ban jail status — optional param: jail (omit for all jails); Ubuntu only; read-only
Fail2banBanIpsudo fail2ban-client set sshd banip 192.0.2.1High Ubuntu – – ban an IP address in a fail2ban jail — params: jail* (string), ip* (IPv4 or IPv6); Ubuntu only; High risk
Fail2banUnbanIpsudo fail2ban-client set sshd unbanip 192.0.2.1Medium Ubuntu – – unban an IP address from a fail2ban jail — params: jail*, ip*; Ubuntu only; Medium risk
ConfigureFail2banJailsudo /usr/lib/sysknife/fail2ban-jail-edit --name sshd --maxretry 3High Ubuntu – – 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
Action Command Risk Distro Rb Ro Description
AptUpdatesudo env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get updateLow Ubuntu – – refresh apt package index (apt-get update) — no params; Ubuntu only
AptUpgradesudo env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get dist-upgrade -yHigh Ubuntu – – upgrade all installed packages via dist-upgrade — no params; Ubuntu only; High risk
AptInstallsudo env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get install -y curlMedium Ubuntu – – install a package — param: package* (string, e.g. nginx); Ubuntu only
AptRemovesudo env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get remove -y curlMedium Ubuntu – – remove a package, keep config files — param: package*; Ubuntu only
AptPurgesudo env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get purge -y curlMedium Ubuntu – – remove a package AND its config files — param: package*; Ubuntu only
AptAutoremovesudo env DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get autoremove -yMedium Ubuntu – – remove automatically-installed packages no longer needed — no params; Ubuntu only
AptHoldsudo apt-mark hold curlMedium Ubuntu – – pin a package at its current version (apt-mark hold) — param: package*; Ubuntu only
AptUnholdsudo apt-mark unhold curlMedium Ubuntu – – unpin a package to allow upgrades (apt-mark unhold) — param: package*; Ubuntu only
AptSearchapt-cache search curlLow Ubuntu – – search apt repos for packages — param: term*; Ubuntu only; read-only
AptListInstalleddpkg -lLow Ubuntu – – list all installed packages (dpkg -l) — no params; Ubuntu only; read-only
AptShowapt-cache show curlLow Ubuntu – – show package details (version, deps, description) — param: package*; Ubuntu only; read-only
AptListUpgradablebash -c apt list --upgradable 2>/dev/nullLow Ubuntu – – list packages with available upgrades — no params; Ubuntu only; read-only. Use for 'are there pending updates?' or 'what updates are available?'
AptHistoryListbash -c grep -A 4 '^Start-Date' /var/log/apt/history.log | tail -n 80Low Ubuntu – – show recent apt transaction history — no params; Ubuntu only; read-only
ConfigureUnattendedUpgradessudo /usr/lib/sysknife/unattended-upgrades-edit --enableHigh Ubuntu – – enable or disable automatic security updates (unattended-upgrades) — param: enabled* (bool); Ubuntu only; High risk
Action Command Risk Distro Rb Ro Description
GetAptPinsapt-cache policyLow Ubuntu – – show apt pin priorities (apt-cache policy) — param: package (optional); Ubuntu only; read-only
SetAptPinsudo /usr/lib/sysknife/apt-pin-edit --op set --name hold-nginx --package nginx --pin version 1.24.* --priority 990Medium Ubuntu – – 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
RemoveAptPinsudo /usr/lib/sysknife/apt-pin-edit --op remove --name hold-nginxMedium Ubuntu – – remove a SysKnife-managed apt pin — param: name*; Ubuntu only; Medium risk
Action Command Risk Distro Rb Ro Description
AddPpasudo add-apt-repository -y ppa:deadsnakes/ppaHigh Ubuntu – – add a Launchpad PPA — param: name* in <user>/<ppa> format (e.g. 'deadsnakes/ppa'); Ubuntu only; requires software-properties-common
RemovePpasudo add-apt-repository -y --remove ppa:deadsnakes/ppaMedium Ubuntu – – remove a Launchpad PPA — param: name* in <user>/<ppa> format; Ubuntu only
Action Command Risk Distro Rb Ro Description
SnapInstallsudo sh -c snap install --channel=stable firefox && snap refresh --hold firefoxMedium Ubuntu – – install a snap (auto-holds to prevent auto-refresh) — params: name*; optional: channel (default stable), auto_update (bool, default false); Ubuntu only
SnapRemovesudo snap remove firefoxMedium Ubuntu – – remove a snap — param: name*; Ubuntu only
SnapRefreshsudo snap refresh firefoxMedium Ubuntu – – update a snap or all snaps — param: name (optional, omit for all); Ubuntu only
SnapHoldsudo snap refresh --hold firefoxMedium Ubuntu – – pin a snap at its current version (snap refresh --hold) — param: name*; Ubuntu only
SnapUnholdsudo snap refresh --unhold firefoxMedium Ubuntu – – allow a held snap to auto-refresh again — param: name*; Ubuntu only
SnapListsnap listLow Ubuntu – – list installed snaps — no params; Ubuntu only; read-only
SnapInfosnap info firefoxLow Ubuntu – – show snap details (version, channel, description) — param: name*; Ubuntu only; read-only
SnapRevertsudo snap revert firefoxMedium Ubuntu – – revert a snap to its previous revision — param: name*; Ubuntu only
SnapClassicInstallsudo snap install --classic codeMedium Ubuntu – – install a snap with classic confinement (full system access) — param: name*; Ubuntu only
Action Command Risk Distro Rb Ro Description
UfwEnablesudo ufw --force enableHigh Ubuntu – – enable the ufw firewall — no params; Ubuntu only; High risk
UfwDisablesudo ufw disableHigh Ubuntu – – disable the ufw firewall — no params; Ubuntu only; High risk
UfwAllowsudo ufw allow 22High Ubuntu – – allow inbound traffic on a port or service — param: port_or_service* (e.g. 22, 22/tcp, OpenSSH); Ubuntu only; High risk
UfwDenysudo ufw deny 23High Ubuntu – – deny inbound traffic on a port or service — param: port_or_service*; Ubuntu only; High risk
UfwResetsudo ufw --force resetHigh Ubuntu – – reset ufw to defaults, removing all rules — no params; Ubuntu only; High risk; irreversible
UfwStatussudo ufw status verboseLow Ubuntu – – show current ufw status and rules — no params; Ubuntu only; read-only
UfwDeleteRulesudo ufw --force delete 1High Ubuntu – – delete a ufw rule by number — param: rule_number* (positive integer from 'ufw status numbered'); Ubuntu only; High risk
UfwLimitsudo ufw limit 22High 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
Action Command Risk Distro Rb Ro Description
NetplanGetConfigfind /etc/netplan -maxdepth 1 -name *.yaml -print -exec cat {} +Low Ubuntu – – read current netplan YAML config from /etc/netplan/ — no params; Ubuntu only; read-only
NetplanApplysudo netplan applyHigh Ubuntu – – apply netplan network configuration immediately — no params; Ubuntu only; High risk; can disconnect SSH
NetplanSetsudo netplan set ethernets.eth0.dhcp4=trueHigh 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
NetplanGeneratesudo netplan generateMedium Ubuntu – – regenerate netplan backend config without applying — no params; Ubuntu only; Medium risk; dry-run before NetplanApply
Action Command Risk Distro Rb Ro Description
DistroboxListdistrobox listLow Ubuntu – – list distrobox containers — no params; Ubuntu only; read-only
DistroboxCreatedistrobox create --yes --name dev --image ubuntu:24.04Medium Ubuntu – – create a distrobox container — params: name*, image* (e.g. ubuntu:24.04, fedora:41); Ubuntu only
DistroboxRemovedistrobox rm --force devMedium Ubuntu – – remove a distrobox container — param: name*; Ubuntu only
Action Command Risk Distro Rb Ro Description
GrubGetKargsgrep -E ^GRUB_CMDLINE_LINUX /etc/default/grubLow Ubuntu – – read current GRUB_CMDLINE_LINUX from /etc/default/grub — no params; Ubuntu only; read-only
GrubSetKargssudo /usr/lib/sysknife/grub-kargs-edit --append quiet --delete splashHigh Ubuntu ✓ – modify GRUB kernel arguments and run update-grub — params: append (list), delete (list); Ubuntu only; High risk; requires reboot
Action Command Risk Distro Rb Ro Description
UbuntuReleaseUpgradesudo do-release-upgrade -f DistUpgradeViewNonInteractiveHigh Ubuntu ✓ – 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
Action Command Risk Distro Rb Ro Description
ProStatuspro status --allLow Ubuntu – – show Ubuntu Pro subscription status — no params; Ubuntu only; read-only
ProAttachsudo pro attach <REDACTED>High Ubuntu – – attach machine to an Ubuntu Pro subscription — param: token* (credential, never log); Ubuntu only; High risk
ProDetachsudo pro detach --assume-yesHigh Ubuntu – – detach from Ubuntu Pro subscription — no params; Ubuntu only; High risk
EnableProServicesudo pro enable esm-apps --assume-yesHigh 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
DisableProServicesudo pro disable esm-apps --assume-yesHigh Ubuntu – – disable one Ubuntu Pro service (pro disable <service>) — param: service* (same allowlist as EnableProService); Ubuntu only; High risk
Action Command Risk Distro Rb Ro Description
LivepatchStatussudo canonical-livepatch status --verboseLow Ubuntu – – show Canonical Livepatch kernel-patch status — no params; Ubuntu only; read-only; requires canonical-livepatch installed and Ubuntu Pro
Action Command Risk Distro Rb Ro Description
MultipassListmultipass listLow Ubuntu – – list Multipass VMs and their state — no params; Ubuntu only; read-only
188 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 189 total.