diff --git a/app/Entities/Tools/Cloner.php b/app/Entities/Tools/Cloner.php
index 3553a9db3..91e10b9be 100644
--- a/app/Entities/Tools/Cloner.php
+++ b/app/Entities/Tools/Cloner.php
@@ -121,6 +121,18 @@ class Cloner
         return $inputData;
     }
 
+    /**
+     * Copy the permission settings from the source entity to the target entity.
+     */
+    public function copyEntityPermissions(Entity $sourceEntity, Entity $targetEntity): void
+    {
+        $targetEntity->restricted = $sourceEntity->restricted;
+        $permissions = $sourceEntity->permissions()->get(['role_id', 'action'])->toArray();
+        $targetEntity->permissions()->delete();
+        $targetEntity->permissions()->createMany($permissions);
+        $targetEntity->rebuildPermissions();
+    }
+
     /**
      * Convert an image instance to an UploadedFile instance to mimic
      * a file being uploaded.
diff --git a/app/Entities/Tools/HierarchyTransformer.php b/app/Entities/Tools/HierarchyTransformer.php
index 17e153e05..c95d5fa53 100644
--- a/app/Entities/Tools/HierarchyTransformer.php
+++ b/app/Entities/Tools/HierarchyTransformer.php
@@ -16,19 +16,13 @@ class HierarchyTransformer
     protected Cloner $cloner;
     protected TrashCan $trashCan;
 
-    // TODO - Test setting book cover image from API
-    //   Ensure we can update without resetting image accidentally
-    //   Ensure api docs correct.
-    // TODO - As above but for shelves.
-
     public function transformChapterToBook(Chapter $chapter): Book
     {
         // TODO - Check permissions before call
         //   Permissions: edit-chapter, delete-chapter, create-book
         $inputData = $this->cloner->entityToInputData($chapter);
         $book = $this->bookRepo->create($inputData);
-
-        // TODO - Copy permissions
+        $this->cloner->copyEntityPermissions($chapter, $book);
 
         /** @var Page $page */
         foreach ($chapter->pages as $page) {
@@ -48,8 +42,7 @@ class HierarchyTransformer
         //   Permissions: edit-book, delete-book, create-shelf
         $inputData = $this->cloner->entityToInputData($book);
         $shelf = $this->shelfRepo->create($inputData, []);
-
-        // TODO - Copy permissions?
+        $this->cloner->copyEntityPermissions($book, $shelf);
 
         $shelfBookSyncData = [];