Set in Virginia's Piedmont region, the story opens with a prologue in which an unnamed narrator flees barefoot through the woods near Hale House, a centuries-old estate outside Crozet. Poisoned after consuming tea and cookies, the narrator collapses in a creek bed, where a hooded figure approaches and smothers the narrator with a rag.
The narrative shifts to a Friday evening in October 2026. Maria Durant, a 34-year-old hospital nurse and cousin to Raine Hale, confronts her husband, Gabe Durant, an unreliable landscaper with a history of broken promises and an 18-month prison sentence for assault. Maria has planted an AirTag in Gabe's truck and discovered he is having an affair with Amy Stocker, a real estate agent they both knew in high school. She confronts him about draining their savings and the affair. Mid-argument, she begins sweating, her vision blurs, and her chest seizes. She collapses in the kitchen, striking her head on the counter. Gabe calls 911 and performs CPR until paramedics arrive.
Raine Hale, the sole beneficiary of the Hale House estate, worth hundreds of millions of dollars in Virginia wine country, receives an emergency call from the hospital. She has just returned to the crumbling family home after years away, on medical leave from her public defender job after her client Pete Miller nearly strangled her three weeks earlier. She is also divorcing her husband, Ken Watson, a criminal defense attorney.
At the hospital, Raine encounters Judson Blackwood, a Virginia State Police agent and her high school boyfriend, who informs her that Maria had cardiac arrest and that toxicology screens have been ordered. Raine explains that the estate is held in trust, with Molly, Gabe and Maria's five-year-old daughter, designated as Raine's heir. Maria has recently filed a lawsuit claiming half the estate.
Flashbacks reveal the tangled history binding these characters. In high school, Raine hired Amy, a foster kid she befriended at lunch, to care for her mother, Eloise Hale, who had dementia following a stroke. Amy gradually began copying Raine's appearance, borrowing her clothes and jewelry. Maria warned Raine that Amy was stealing and obsessive, but Raine tolerated the behavior because she desperately needed help caring for Eloise. The narrative also reveals that Raine attempted suicide as a teenager after her father's death, leading to a gap year in Montana.
Gabe disappears after visiting Maria at the hospital, hiding at a local motel. Raine tracks him down, but Judson intercepts them and arrests Gabe. Raine uses the Hale family's influence to secure his release. Gabe admits to flirting with Amy but insists he and Maria were reconciling.
Toxicology results confirm toxic levels of hydrogen cyanide in Maria's blood and traces on both wineglasses from the dinner. Ken texts Raine the finding before Judson receives official notification, demonstrating Ken's intrusive network of contacts. Maria's doctor discloses that she has an undiagnosed faulty heart valve that made her especially vulnerable to the poison.
Maria wakes from her coma, initially mistaking Raine for Amy. She expresses regret over the lawsuit, calling it Gabe's idea, and asks that Molly be placed with Raine rather than with Edith Durant, Gabe's mother, who lives rent-free on Hale property. Raine formally becomes Gabe's attorney after his arrest for poisoning Maria. In jail, Gabe admits to a five-month sexual relationship with Amy and reveals they also had an affair during senior year of high school. He claims Maria was also seeing someone and denies knowledge of cyanide pills found in his truck.
Ken arrives in Crozet uninvited, warning Raine that Pete has posted bail, and pushes for reconciliation while refusing to sign divorce papers. Unsettling events multiply at Hale House: A fruit basket ordered under Gabe's name appears inside the locked house while he is in court, a package containing Raine's childhood stuffed dog, missing for 23 years, arrives with a cryptic note, a contractor discovers recent fire damage in the attic, and a light in Raine's deceased mother's bedroom turns on and off repeatedly.
Maria dies when her damaged heart fails. Before dying, she texts Raine urging her to save Molly, keep the child away from Edith's house, and let Gabe face justice. Gabe's charges are upgraded to first-degree murder. Raine obtains temporary custody of Molly, but Gabe picks the girl up from school, removes his ankle monitor, and flees.
Judson traces Amy's cell phone to the Hale property and finds her body face down in the same creek bed where Raine's mother was found dead 17 years earlier. With Ken's help, Raine tracks Gabe to a remote cabin, where they find him dead with no visible trauma. Molly is discovered at a nearby motel, drugged with Benadryl but alive, and Raine takes custody.
The medical examiner confirms cyanide killed all three victims. Maria's hair and nails show chronic low-dose exposure, while Amy and Gabe each received single large doses. Fibers in Amy's nostrils indicate she was smothered while unconscious, and hunting camera footage captures a hooded female figure following Amy through the woods the night she died.
As Raine adjusts to life with Molly, she discovers a hidden space in her mother's old bedroom closet containing a scrapbook of photographs of Raine spanning 17 years, proving Amy had been obsessively tracking her. An interview with Amy's foster sister, Vivian Collins, reveals that Amy believed Raine's father was her biological father and desperately wanted to belong to the Hale family. In the attic, a trunk holds the skeletal remains of a dog poisoned with cyanide 15 to 20 years earlier, suggesting someone had been testing the poison since Eloise's death. Judson orders Eloise's body exhumed, and tests confirm she, too, was poisoned with cyanide.
Pete breaks into Hale House one night and attacks Raine while Molly sleeps, pinning her down and choking her. Ken bursts in, beats Pete unconscious, and drags him outside. Ken then reveals his true nature, confessing that he married Raine for the estate, orchestrated Pete's attacks, slept with both Amy and Maria, and manipulated Maria into filing the lawsuit. He explains that Maria poisoned Amy and planned to poison Gabe, intending to survive a self-administered dose and claim the fortune, but her undiagnosed heart condition made the plan fatal. Raine fights back, firing her gun and smashing a wine bottle against Ken's head. She grabs Molly and escapes by car as Judson arrives with police. Ken is arrested.
In the aftermath, Maria and Gabe are buried together in the Hale family cemetery. Raine commits to renovating Hale House, selling 50 acres to fund the work, and rekindles her relationship with Judson. Ken gains bail and signs the divorce papers but remains a lurking threat.
In an epilogue set in January 2027, Edith visits Ken's apartment and poisons his wine. She reveals her participation in the killings, expressing sorrow over Gabe's death but declaring he would have continued to cause trouble. She plants cash and a fake suicide note to frame Ken's death as a suicide. As Ken's vision fades, he sees Raine standing in the doorway with Edith. Raine declares that Ken is finished, revealing that she and Edith have conspired to eliminate the final threat to Molly's safety and the Hale legacy.