diff --git a/include/class.staff.php b/include/class.staff.php
index dff80ec42e711099f0744c15c74fd9ecf451ffa8..5c094e869f8a14640a5cd5227b09172ae8cf254f 100644
--- a/include/class.staff.php
+++ b/include/class.staff.php
@@ -1378,6 +1378,17 @@ extends AbstractForm {
         list($clean['username'],) = preg_split('/[^\w.-]/', $clean['email'], 2);
         if (Staff::lookup($clean['username']))
             $clean['username'] = mb_strtolower($clean['firstname']);
+        $clean['perms'] = array(
+            User::PERM_CREATE,
+            User::PERM_EDIT,
+            User::PERM_DELETE,
+            User::PERM_MANAGE,
+            User::PERM_DIRECTORY,
+            Organization::PERM_CREATE,
+            Organization::PERM_EDIT,
+            Organization::PERM_DELETE,
+            FAQ::PERM_MANAGE,
+        );
         return $clean;
     }
 }
diff --git a/include/staff/staff.inc.php b/include/staff/staff.inc.php
index 6b46bc48a24d7ac234a2930f85ae49bbcc2936e7..87e63b62ac1c7a7675d8589547e551e9513e80bd 100644
--- a/include/staff/staff.inc.php
+++ b/include/staff/staff.inc.php
@@ -4,10 +4,23 @@ if(!defined('OSTADMININC') || !$thisstaff || !$thisstaff->isAdmin()) die('Access
 $info = $qs = array();
 
 if ($_REQUEST['a']=='add'){
-    if (!$staff)
+    if (!$staff) {
         $staff = Staff::create(array(
             'isactive' => true,
         ));
+        // Set some default permissions
+        $staff->updatePerms(array(
+            User::PERM_CREATE,
+            User::PERM_EDIT,
+            User::PERM_DELETE,
+            User::PERM_MANAGE,
+            User::PERM_DIRECTORY,
+            Organization::PERM_CREATE,
+            Organization::PERM_EDIT,
+            Organization::PERM_DELETE,
+            FAQ::PERM_MANAGE,
+        ));
+    }
     $title=__('Add New Agent');
     $action='create';
     $submit_text=__('Create');