diff --git a/src/managesieve/cmd-putscript.c b/src/managesieve/cmd-putscript.c
index 1cfe138f350ebe66645b880cde4dea84c5d64239..af4dcb099642e80d1234fca3e101c1b0203612f2 100644
--- a/src/managesieve/cmd-putscript.c
+++ b/src/managesieve/cmd-putscript.c
@@ -156,8 +156,13 @@ static bool cmd_putscript_finish_parsing(struct client_command_context *cmd)
 	/* <script literal> */
 	ret = managesieve_parser_read_args(ctx->save_parser, 0, 0, &args);
 	if (ret == -1 || client->output->closed) {
-		if (ctx->storage != NULL)
-			client_send_command_error(cmd, NULL);
+		if (ctx->storage != NULL) {
+			const char *msg;
+			bool fatal ATTR_UNUSED;
+
+			msg = managesieve_parser_get_error(ctx->save_parser, &fatal);
+			client_send_command_error(cmd, msg);
+		}
 		cmd_putscript_finish(ctx);
 		return TRUE;
 	}