diff --git a/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala b/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala
index 45ed49a23dc..5cbb5bbdd8f 100644
--- a/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala
+++ b/amber/src/main/scala/org/apache/texera/web/resource/dashboard/user/workflow/WorkflowResource.scala
@@ -431,7 +431,14 @@ class WorkflowResource extends LazyLogging {
workflowDao.update(workflow)
} else {
if (!WorkflowAccessResource.hasReadAccess(workflow.getWid, user.getUid)) {
- // not owner and no access record --> new record
+ // Check if this workflow exists in the database
+ val workflowExistsInDb =
+ workflow.getWid != null && workflowDao.existsById(workflow.getWid)
+ if (workflowExistsInDb) {
+ // User trying to persist an existing workflow without access - reject
+ throw new ForbiddenException("No sufficient access privilege.")
+ }
+ // This is a new workflow being created (wid is null or doesn't exist in DB)
workflow.setWid(null)
insertWorkflow(workflow, user)
WorkflowVersionResource.insertVersion(workflow, insertingNewWorkflow = true)
diff --git a/frontend/src/app/dashboard/component/user/share-access/share-access.component.html b/frontend/src/app/dashboard/component/user/share-access/share-access.component.html
index f181ef839d5..717c1cbc188 100644
--- a/frontend/src/app/dashboard/component/user/share-access/share-access.component.html
+++ b/frontend/src/app/dashboard/component/user/share-access/share-access.component.html
@@ -154,7 +154,7 @@
{{ entry.privilege }} {{ entry.email }} ({{ entry.name }})