In the summer of 1969, fourteen-year-old Lucas Painter lives in the small town of Ashby, caught between his parents' relentless fights and his growing fear for his older brother Roy, a soldier in Vietnam. A heavily redacted letter from Roy hints at something horrifying he witnessed overseas, but military censors have blacked out so much that Lucas cannot piece together the message. His best friend, Connor Barnes, offers no answers either. Connor's household presents a different kind of suffering: His parents exist in oppressive silence, and Connor rarely leaves the house, as though his anxious presence is the only thing holding his family together.
Seeking escape, Lucas ventures into the dense woods behind Ashby, where he stumbles upon an isolated log cabin with two enormous dogs. Terrified by their size, he runs, but when he trips and falls, he discovers they only wanted to play. Running with the dogs demands total concentration on the uneven terrain, leaving no room for anxious thoughts, and Lucas begins rising before dawn to run with them each morning. During one run along River Road, he notices fresh flowers on two children's graves in the local cemetery, both bearing the same death date in 1952. When Connor mentions Lucas's running to Coach Haskell, the school track coach, Haskell orders Lucas to try out. Lucas beats the team's two best runners and earns a reluctant spot.
One morning Lucas arrives to find the dogs frantic. Through a window he sees an older woman lying motionless in bed. He calls the sheriff's office, and Deputy Warren identifies her as Zoe Dinsmore, dispatching help. Zoe survives a prescription medication overdose, largely because Lucas finds her in time. Days later, one of Zoe's grown daughters makes Lucas promise to tell Zoe he will not take care of the dogs if anything happens to her. The logic is stark: If no one else will care for them, Zoe must stay alive. The daughter reveals that Zoe took Lucas's attachment to the dogs as a safety net, which partly enabled her attempt, and alludes to something terrible in Zoe's past that the whole town knows but refuses to explain.
At the town library, Lucas finds the answer on microfilm. On December 18, 1952, Zoe, a school bus driver with a spotless record, fell asleep at the wheel after being up all night nursing her sick daughters. The bus veered off River Road and rolled into the river. Zoe pulled most of the children to safety, but two, Wanda Jean Paulston, seven, and Freddie Smith, six, died. No charges were filed. Lucas connects these children to the flower-covered graves he noticed during his runs.
When Zoe returns from the hospital, she asks if Lucas would take the dogs. He tells her he cannot, that his parents would never allow it, and that the dogs need her, fulfilling his promise. Zoe responds bitterly: "I didn't. Want it. Saved" (48). Over subsequent visits, however, a grudging connection forms. Zoe tells Lucas he cannot control other people's choices, advice that reshapes how he understands his responsibilities.
Connor lets slip that "we all think about it," referring to suicide, and Lucas is deeply alarmed. He asks Zoe for guidance, and she tells him the only option is to be a good friend, acknowledging it might not be enough. When Lucas takes Connor to a park, older teammates confront them, and Connor attacks the boys with violent fury that far exceeds the provocation, revealing the depth of his suppressed rage. That night, Lucas writes Roy a letter telling him he loves him, something he has never said before. A brief relationship with Libby Weller, whose brother Darren Weller lost part of his leg in Vietnam, ends when Libby calls Zoe "a killer" and urges Lucas to drop Connor. Lucas recognizes her double standard and walks her home in silence.
Connor's father leaves the family, and his mother visits Lucas to ask whether Connor took his father's missing handgun. Lucas does not know but privately warns her to watch Connor closely. Before dawn, Lucas leads Connor through the woods to Zoe's cabin. Zoe is skeptical, pointing out that Lucas is bringing a suicidal friend to someone who recently attempted suicide, but Lucas argues she might want Connor to stay alive even if she struggles to want the same for herself. Zoe agrees. Connor begins visiting her regularly, finding solace in her blunt directness.
Then Roy comes home. Lucas's parents have kept his return secret for days. Half of Roy's foot is gone. Lucas finds him in a dim bedroom, sweating and shivering under heavy morphine. Darren visits and afterward pulls Lucas aside: Roy developed a drug habit in Vietnam and needs Narcotics Anonymous (NA) meetings, not Veterans Administration (VA) counseling. Lucas's mother begins hiding Roy's pain medication after pills go missing. Meanwhile, while retrieving Connor's new kitten from under a bed, Lucas discovers the missing handgun hidden in a heating duct. Connor admits he lied about having it but says he has changed his mind, crediting his conversations with Zoe. Lucas wraps the gun in a pillowcase, runs to a bridge, and drops it into the river.
Using a meeting schedule from Zoe, Lucas walks Roy to an NA meeting without revealing the destination. Roy resists but attends. Over several meetings he listens but refuses to share. Then Zoe walks in and takes a newcomer chip, a token marking her return to recovery. After sharing about the dangers of relapse, she calls on Roy. He tells the room everything: He was drafted, terrified, and began smoking heroin to cope. After receiving Lucas's letter saying "I love you," he desperately wanted to come home. During a firefight, heavily intoxicated, he shot himself in the foot at point-blank range, intending only a minor wound. The blast shredded his foot, requiring partial amputation. The army discovered the self-inflicted injury and issued a general discharge. Roy expresses shame but says he would make the same choice again because it brought him home.
Roy asks Zoe to be his NA sponsor, a recovery mentor who guides another member through sobriety. Connor tells Lucas that Zoe makes him feel worth having around. Knowing Zoe is wrong about her own worthlessness helps Connor recognize he might be wrong about his, giving him reason to stay alive.
The novel's second part jumps fifty years forward. Sixty-four-year-old Lucas stands beside the grave of Connor Barnes, who died of stomach cancer after a full life: a career in county planning, a marriage to a woman named Dotty, three daughters, and seven grandchildren. At eighteen, Lucas refused to register for the draft and served two years in county jail. Zoe eventually left the cabin at Connor's urging, spent her final decade living with Connor and Dotty, reconciled with one daughter, maintained over thirty-five years of continuous sobriety, and died at eighty-nine. Lucas married twice, but neither lasted; he found contentment living with dogs. At the funeral reception, Dotty insists that Connor always said everything good in his life after age fourteen was because of Lucas. Lucas deflects, saying he only introduced Connor to Zoe, and that the four of them simply took care of each other.
After the reception, Lucas drives Roy to the abandoned cabin. They sit against the wall where Zoe's bed once stood, and Roy lights a fire in the old stove. Roy reminds Lucas that he saved Zoe's life first, making everything else possible. Lucas reflects that he only found Zoe because his mother refused to get him a dog. Roy replies that it was a damn good thing she refused. Lucas thinks that in this one moment, nothing in his life has ever been a mistake.