The Linux kernel "make clean" calls rm -f with no arguments, which apparently is not an error.
diff --git a/toys/posix/rm.c b/toys/posix/rm.c
index 59d5061..c9f741c 100644
--- a/toys/posix/rm.c
+++ b/toys/posix/rm.c
@@ -4,7 +4,7 @@
  *
  * See http://pubs.opengroup.org/onlinepubs/9699919799/utilities/rm.html
 
-USE_RM(NEWTOY(rm, "<1fiRr[-fi]", TOYFLAG_BIN))
+USE_RM(NEWTOY(rm, "fiRr[-fi]", TOYFLAG_BIN))
 
 config RM
   bool "rm"
@@ -76,6 +76,9 @@
 {
   char **s;
 
+  // Can't use <1 in optstring because zero arguments with -f isn't an error
+  if (!toys.optc && !(toys.optflags & FLAG_f)) error_exit("Needs 1 argument");
+
   for (s = toys.optargs; *s; s++) {
     if (!strcmp(*s, "/")) {
       error_msg("rm /. if you mean it");