So what happens here is that the <html> element is just special. It is the height of the viewport, because it has to be, and it defaults to overflow:auto;. and yet, it's height is not explicitly defined, it is granted by the browser. So the gradient doesn't know where to get it's height value, and goes insane.
body {
  background: linear-gradient(#e66465, #9198e5);
}
 
 
If we give the <html> element an explicit height, then all is fine. In fact not giving the <html> element a height of 100% tends to be the cause of many issues, that are all fixed by giving <html> a height. min-height: 100%; will work as well.
html {
  height: 100%;
}
body {
  background-image: linear-gradient(#e66465, #9198e5);
}
 
 
You could alternatively give the gradient itself a height of 100vh.
body {
  background-image: linear-gradient(#e66465, #9198e5);
  background-size: 100% 100vh;
}