diff --git a/devTools/types/FC/RA.d.ts b/devTools/types/FC/RA.d.ts
index 8c7e433207dc6a5254eca195be14ce94dcad8fec..d4070eacddc4720a6d9f29a4b532270ca67ce01f 100644
--- a/devTools/types/FC/RA.d.ts
+++ b/devTools/types/FC/RA.d.ts
@@ -218,6 +218,8 @@ declare namespace FC {
 			choosesOwnClothes: 0 | 1;
 			pronoun: number;
 			posePrompt: string;
+			expressionPositivePrompt: string;
+			expressionNegativePrompt: string;
 			positivePrompt: string;
 			negativePrompt: string;
 			overridePrompts: boolean;
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index dd3fcec25fe7610011213c5dc024aeff1f3c435a..fe073d4400b225877a12ec9dd377f027489e38e4 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -3318,6 +3318,22 @@ globalThis.DefaultRules = function(slave) {
 			}
 		}
 
+		// custom expression positive prompt
+		if (rule.expressionPositivePrompt != null && rule.expressionPositivePrompt !== '') {
+			if (slave.custom.aiPrompts.expressionPositive !== rule.expressionPositivePrompt) {
+				slave.custom.aiPrompts.expressionPositive = rule.expressionPositivePrompt;
+				message(`${slave.slaveName} has had ${his} positive expression prompt set.`, sourceRecord.expressionPositivePromptPrompt);
+			}
+		}
+
+		// custom expression negative prompt
+		if (rule.expressionNegativePrompt != null && rule.expressionNegativePrompt !== '') {
+			if (slave.custom.aiPrompts.expressionNegative !== rule.expressionNegativePrompt) {
+				slave.custom.aiPrompts.expressionNegative = rule.expressionNegativePrompt;
+				message(`${slave.slaveName} has had ${his} negative expression prompt set.`, sourceRecord.expressionNegativePromptPrompt);
+			}
+		}
+
 		// custom positive prompts
 		if (rule.positivePrompt != null && rule.positivePrompt !== '') {
 			assignPrompts("positive");
diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js
index 99b90cde54d071330861c3cdf0307fbf5aaab602..30a93a68ced1ae54ffdf2950855a80bfe34fec80 100644
--- a/src/js/rulesAssistant.js
+++ b/src/js/rulesAssistant.js
@@ -301,6 +301,8 @@ App.RA.newRule = function() {
 			labelTagsClear: null,
 			pronoun: null,
 			posePrompt: null,
+			expressionPositivePrompt: null,
+			expressionNegativePrompt: null,
 			positivePrompt: null,
 			negativePrompt: null,
 			overridePrompts: null,
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index f000b6149fb35a2c9dc6c28e2d2df6122cc8aa83..9f0f3b993b7aadd56a3d547df8714a319bf20c74 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -1560,6 +1560,8 @@ App.RA.options = (function() {
 			}
 			if (V.imageChoice === 6) { // If using AI generated images
 				this.appendChild(new OverridePosePrompt());
+				this.appendChild(new OverrideExpressionPositivePrompt());
+				this.appendChild(new OverrideExpressionNegativePrompt());
 				this.appendChild(new OverridePromptSwitch());
 				this.appendChild(new AddCustomPosPrompt());
 				this.appendChild(new AddCustomNegPrompt());
@@ -4236,6 +4238,22 @@ App.RA.options = (function() {
 		}
 	}
 
+	class OverrideExpressionPositivePrompt extends StringEditor {
+		constructor() {
+			super("Override positive expression prompt", [], true, false);
+			this.setValue(current_rule.set.expressionPositivePrompt);
+			this.onchange = (value) => current_rule.set.expressionPositivePrompt = value;
+		}
+	}
+
+	class OverrideExpressionNegativePrompt extends StringEditor {
+		constructor() {
+			super("Override negative expression prompt", [], true, false);
+			this.setValue(current_rule.set.expressionNegativePrompt);
+			this.onchange = (value) => current_rule.set.expressionNegativePrompt = value;
+		}
+	}
+
 	class AddCustomPosPrompt extends StringEditor {
 		constructor() {
 			super("Add custom positive prompt(s) to slave", [], true, false);