diff --git a/amend/commands.h b/amend/commands.h
index 38931c0..6c97e55 100644
--- a/amend/commands.h
+++ b/amend/commands.h
@@ -14,31 +14,18 @@
  * limitations under the License.
  */
 
+#include <stdbool.h>
+
 #ifndef AMEND_COMMANDS_H_
 #define AMEND_COMMANDS_H_
 
-#include "permissions.h"
-
-/* Invoke or dry-run a command.  If "permissions" is non-NULL,
- * the hook should fill it out with the list of files and operations that
- * it would need to complete its operation.  If "permissions" is NULL,
- * the hook should do the actual work specified by its arguments.
- *
- * When a command is called with non-NULL "permissions", some arguments
- * may be NULL.  A NULL argument indicates that the argument is actually
- * the output of another function, so is not known at permissions time.
- * The permissions of leaf-node functions (those that have only literal
- * strings as arguments) will get appended to the permissions of the
- * functions that call them.  However, to be completely safe, functions
- * that receive a NULL argument should request the broadest-possible
- * permissions for the range of the input argument.
+/* Invoke a command.
  *
  * When a boolean command is called, "argc" is the boolean value and
  * "argv" is NULL.
  */
 typedef int (*CommandHook)(const char *name, void *cookie,
-                                int argc, const char *argv[],
-                                PermissionRequestList *permissions);
+                           int argc, const char *argv[]);
 
 int commandInit(void);
 void commandCleanup(void);
@@ -66,19 +53,13 @@
 int callCommand(Command *cmd, int argc, const char *argv[]);
 int callBooleanCommand(Command *cmd, bool arg);
 
-int getCommandPermissions(Command *cmd, int argc, const char *argv[],
-        PermissionRequestList *permissions);
-int getBooleanCommandPermissions(Command *cmd, bool arg,
-        PermissionRequestList *permissions);
-
 /*
  * Function management
  */
 
 typedef int (*FunctionHook)(const char *name, void *cookie,
                                 int argc, const char *argv[],
-                                char **result, size_t *resultLen,
-                                PermissionRequestList *permissions);
+                                char **result, size_t *resultLen);
 
 struct Function;
 typedef struct Function Function;
@@ -90,7 +71,4 @@
 int callFunction(Function *fn, int argc, const char *argv[],
         char **result, size_t *resultLen);
 
-int getFunctionPermissions(Function *fn, int argc, const char *argv[],
-        PermissionRequestList *permissions);
-
 #endif  // AMEND_COMMANDS_H_
