diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index 91039d1a0696ced0ec3a4efe2f34caa3ed62a4e4..286a68e1f96b73d41b6537f8fd5535834a7b0139 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -254,9 +254,16 @@ sieve_tool_init_finish(struct sieve_tool *tool, bool init_mailstore,
 		storage_service_flags |=
 			MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES;
 
+	const char *const code_override_fields[] = {
+		(tool->homedir == NULL ? NULL :
+		 t_strconcat("mail_home=", tool->homedir, NULL)),
+		NULL
+	};
+
 	i_zero(&service_input);
 	service_input.service = tool->name;
 	service_input.username = username;
+	service_input.code_override_fields = code_override_fields;
 
 	tool->storage_service = mail_storage_service_init(
 		master_service, storage_service_flags);