In Boston, the life of assassin Mary Goodwin takes a dark turn as she kills her target Marcus Miller in his apartment. Before making her exit, she is caught off guard when she comes across Marcus’ young son, Danny, who is entirely unaware of her impending danger. Fast forward a year, Danny, still oblivious to Mary's watchful eye, finds himself working for a drug dealer known only as Uncle. In a tense moment, when a customer named Jerome attempts to cheat him, Danny brandishes a gun, demanding the full payment along with a premium for his troubles. After purchasing some food, he brings the cash to Uncle, who responds with violence for Danny's indiscretion, leaving him beaten and dazed.
Seeking a moment of respite, Danny rests on a bench, unaware that his life is about to change drastically when a thief makes off with his bag. In a desperate chase, Danny fires a shot into the air, forcing the assailant to drop the bag but causing Danny to faint in the process. He later wakes up in Mary's home, where she tends to his injuries and offers him food. Noticing the signs of Uncle's abuse on Danny, Mary takes matters into her own hands, confronting the dealer, which ultimately leads to a bloody showdown where she kills Uncle and his crew.
With Danny now left in her care, Mary attends a meeting with her criminal associates Tom, Walter, and mob boss Benny Spencer. During the meeting, they encounter Luka, Uncle's powerful uncle, and assure him that they had no part in Uncle's demise. Mary subtly stirs suspicion in Benny toward Walter, ultimately receiving the order to eliminate him. As she and Danny grow closer, he confides in her about his troubled life, blissfully unaware that he is confiding in his father's killer.
In a decisive move, Mary tracks down Walter during his daily jog and assassinates him. However, the power dynamics shift when Luka ambushes Benny, taking out multiple crew members, which prompts Tom—Benny's son and Mary's ex-boyfriend—to confront Danny at Mary's apartment. After torturing one of Luka's men, Tom uncovers plans that lead to an upcoming meeting involving Luka.
Benny invites Mary to bring Danny along to his wife Mina’s birthday dinner. Eager to protect him, Mary buys Danny new clothes and shares her own childhood experiences, warning him that Benny isn’t to be trusted. At the dinner, Mary reveals her desire to leave behind her life of crime, but Tom pieces together the truth about Danny’s lineage, leaving Mary caught in a web of betrayal.
Realizing the danger lurking in her criminal life, Mary instructs Danny to take her stash of money and start afresh should anything happen to her. As the stakes rise dramatically, Mary and Tom launch an assault on Luka's hideout. They emerge victorious but at a cost, as Mary sustains injuries, and Luka narrowly escapes.
Upon returning home, Mary confronts a distraught Danny and explains that Benny will never let her go. In a moment filled with tension, Danny takes matters into his own hands by confronting Benny, holding him at gunpoint in a bid to secure Mary's freedom. Benny, now aware of Danny’s true identity, reveals the truth about Marcus's death, which leads to chaos when Mary intervenes, pleading for Benny to release her. Instead, she kills him in cold blood and escapes.
Meanwhile, Tom discovers that Danny was last seen with Benny. in a twist of fate, Danny is captured and brought before Tom, who confirms to Mary that he has her boy. In a fierce display of loyalty, Mary battles Tom’s men, eliminating them one by one, ultimately leading her to a tense standoff with Tom himself. In an attempt to walk away from their lethal past, Tom fires at Mary, but she retaliates, delivering a fatal shot.
As the dust settles, Mary reunites with Danny, and together they set forth in search of a new beginning, driving away from their treacherous past as the credits roll.