diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 6bd94b903ac29724052f982a3e0882c1194af21b..300f51478572d5795cdd06f7efda008e7cac3638 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -133,6 +133,22 @@ globalThis.DefaultRules = function(slave, options) {
 			delete rule.setAssignment;
 			return rule;
 		}
+
+		// RA uses "@prevAssignment" to indicate that the player wants the slave to return to their previous Assignment
+		// @ts-ignore - this comparison is intentional
+		if (rule.setAssignment === "@prevAssignment"){
+			// In these cases we can't auto re-assign the slave, either because we don't know which arcology the slave came from(AGENT jobs)
+			// or because the slave doesn't have a job to return to.
+			// We set the slaves assignment to REST since that is probably closer to what the player wanted
+			// rather than leaving the slave in their current assignment
+			if ([Job.AGENT, Job.AGENTPARTNER].includes(V.assignmentRecords[slave.ID]) || V.assignmentRecords[slave.ID] === undefined){
+				rule.setAssignment = Job.REST;
+			} else {
+				rule.setAssignment = V.assignmentRecords[slave.ID];
+			}
+		}
+
+
 		const job = App.Utils.jobForAssignment(rule.setAssignment);
 		if (job === undefined) {
 			r += `<span class="red">No job for assignment '${rule.setAssignment}'.</span>`;
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index da6cfcee12bef86d2063e2dce71c0f92dc2f5090..0d2ee04554941a723dfff840feb57e1c2fec37a1 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -4296,6 +4296,7 @@ App.RA.options = (function() {
 					items.push([f.manager.desc.position, f.manager.desc.assignment]);
 				}
 			}
+			items.push(["Previous Assignment", "@prevAssignment"]);
 
 			super("Automatically set assignment", items);
 			this.setValue(current_rule.set.setAssignment);