The plot is split into three “timelines”. The first two, “Rose” and “Joan”, intercut between each other throughout the bulk of the film, before a third timeline, “Kat”, is introduced and comprises the film’s climax.
In February, students at the prestigious Catholic Bramford Academy, a boarding school in upstate New York, are preparing to be picked up by their parents for a week-long break. Katherine “Kat” (Kiernan Shipka), a freshman, and Rose (Lucy Boynton), a senior student, are left behind. Rose suspects she may be pregnant so she lied to her parents about the vacation dates to bide time. Kat has a premonitory dream of her parents dying in a car crash, and is unable to get ahold of them. The girls are left alone in the academy overnight and Rose departs with her boyfriend to inform him of the pregnancy. Kat, meanwhile, receives a call. Hours later, Rose returns and finds Kat in the boiler room, repeatedly prostrating herself before the boiler. She presses for an explanation of the strange behavior, but Kat speaks cryptically and claims her parents are dead, disturbing Rose. After Rose leaves, Kat’s body starts convulsing and contorting in her bed.
The next morning, Rose and a sickly-looking Kat join the nuns for breakfast, where Kat behaves erratically, vomits, and curses at the nuns. After receiving an alarming phone call, the nuns order Rose to shovel the driveway for the abrupt return of the headmaster Gordon. Gordon arrives with a policeman; as they enter the nun’s cabin, a bloodstain is seen on the wall, and the men react with shock to something offscreen.
A young woman, Joan (Emma Roberts), arrives at a bus stop after escaping a mental institution. A friendly older man named Bill (James Remar) offers her a ride with him and his wife Linda (Lauren Holly) to Bramford, which is near the town where she claims to be headed. They stop at a motel and Joan showers, revealing a scar on her shoulder, and a flashback shows her being shot by a policeman. Bill tells Joan that he picked her up because she reminded him of his deceased daughter, revealed to be Rose – the next day will be the ninth anniversary of Rose’s death, on which her parents visit Bramford every year. Joan recognizes Rose and retreats to the bathroom, where she suppresses laughter. Joan is revealed to be a fake name; the real Joan was a woman she killed to steal her I.D.
During the days leading up to winter break, Kat is in contact with an entity depicted alternately as a horned shadow and a gravelly voice on the phone. This entity informs her of her parents’ impending death, and instructs her to kill everyone. After breakfast, the nuns receive a phone call informing them that Kat’s parents have died. After Rose is dismissed to shovel the driveway, Kat murders both nuns. She pursues Rose; shortly after Rose has her period, confirming she is not pregnant, Kat stabs her to death and beheads her. Gordon and the policeman find Kat prostrating in front of the boiler again, with the decapitated heads of her three victims next to her. She exclaims “Hail Satan!” before the policeman shoots her in the shoulder, revealing that “Joan” is Kat. Kat is detained in a mental hospital, where a priest performs an exorcism. The exorcism is seemingly successful, but Kat begs the demon not to leave her before it vanishes.
“Joan”, the Kat of nine years later, murders Bill and Linda when they pull over in Bramford. She beheads their corpses, and brings the heads to the boiler room of the academy, seemingly in an effort to summon the demon she lost years ago. However, she finds the boiler cold and unused. Now completely alone, she leaves the academy and breaks down crying in the middle of the road.