Index: ChapterX.Application/Comment/Commands/AddRequest.cs
===================================================================
--- ChapterX.Application/Comment/Commands/AddRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.Application/Comment/Commands/AddRequest.cs	(revision 99c1e45f4ac45a164229bc6f60f3b05bc26df047)
@@ -1,6 +1,11 @@
 using MediatR;
+using System.ComponentModel.DataAnnotations;
 
 namespace ChapterX.Application.Comment.Commands
 {
-    public record AddRequest(string Content, int UserId, int StoryId) : IRequest<AddResponse>;
+    public record AddRequest(
+        [Required][MaxLength(2000)] string Content,
+        int UserId,
+        int StoryId
+    ) : IRequest<AddResponse>;
 }
Index: ChapterX.Application/Comment/Commands/DeleteHandler.cs
===================================================================
--- ChapterX.Application/Comment/Commands/DeleteHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.Application/Comment/Commands/DeleteHandler.cs	(revision 99c1e45f4ac45a164229bc6f60f3b05bc26df047)
@@ -22,4 +22,7 @@
                 return new DeleteResponse(false);
 
+            if (comment.UserId != request.CallerId)
+                throw new UnauthorizedAccessException("You do not own this comment.");
+
             await _commentRepository.DeleteAsync(comment, cancellationToken);
 
Index: ChapterX.Application/Comment/Commands/DeleteRequest.cs
===================================================================
--- ChapterX.Application/Comment/Commands/DeleteRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.Application/Comment/Commands/DeleteRequest.cs	(revision 99c1e45f4ac45a164229bc6f60f3b05bc26df047)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Comment.Commands
 {
-    public record DeleteRequest(int Id) : IRequest<DeleteResponse>;
+    public record DeleteRequest(int Id, int CallerId) : IRequest<DeleteResponse>;
 }
Index: ChapterX.Application/Comment/Commands/UpdateHandler.cs
===================================================================
--- ChapterX.Application/Comment/Commands/UpdateHandler.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.Application/Comment/Commands/UpdateHandler.cs	(revision 99c1e45f4ac45a164229bc6f60f3b05bc26df047)
@@ -22,4 +22,7 @@
                 return new UpdateResponse(false);
 
+            if (comment.UserId != request.CallerId)
+                throw new UnauthorizedAccessException("You do not own this comment.");
+
             comment.Content = request.Content;
             comment.UpdatedAt = DateTime.UtcNow;
Index: ChapterX.Application/Comment/Commands/UpdateRequest.cs
===================================================================
--- ChapterX.Application/Comment/Commands/UpdateRequest.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.Application/Comment/Commands/UpdateRequest.cs	(revision 99c1e45f4ac45a164229bc6f60f3b05bc26df047)
@@ -3,4 +3,4 @@
 namespace ChapterX.Application.Comment.Commands
 {
-    public record UpdateRequest(int Id, string Content) : IRequest<UpdateResponse>;
+    public record UpdateRequest(int Id, string Content, int CallerId = 0) : IRequest<UpdateResponse>;
 }
