*CUT TO THE CHASE*
NOTE: This spoiler was submitted by Jeremy
The film starts with expert assassin Mary (Taraji P. Henson) getting dressed up. She goes to the home of her target, a bookie named Marcus Miller. Mary shoots Marcus dead and then hears noise coming from a nearby room. She finds a young boy, Danny (Jahi Di'Allo Winston), playing video games. Realizing he is Marcus's son, Mary leaves the apartment filled with guilt.
One year later, Danny is on his own, working for a criminal named Uncle (Xander Berkeley), with Mary keeping a close eye on him from a distance. Danny delivers drugs to a man, Jerome (Owen Burke). After getting paid, Danny notices Jerome shorted him on money. Danny aims his gun at Jerome and demands more money until Jerome tells him there's money in the fridge, and that he can take what is owed to him. Danny takes the whole stash and walks out. He stops to get food on the way home. He returns the money to Uncle, who notices some money is missing. After Danny says he got food, Uncle smacks Danny and threatens to cut off his hand next time he takes from him.
Danny goes outside to take a nap on a bench when someone swipes his bag. He runs after them and gets them to drop the bag when he takes out his gun and fires it. Danny starts to feel dizzy, and he faints. Moments later, he is found and taken in by Mary.
Mary takes Danny to her apartment where she makes him some food. She warns him not to go into her room (which he does). Later, she goes to Uncle's place to return anything that Danny may have that belongs to him. Mary demands that Uncle let Danny go, but when his goons threaten her, Mary kills them before shooting Uncle in the head.
Mary later goes to meet with her fellow assassins, led by Benny (Danny Glover). Uncle's criminal family thinks that someone from Benny's group killed Uncle to start a war. They are later visited by Uncle's brother Luka (Rade Serbedzija). Benny assures Luka that if anyone from his team had killed Uncle, they will be dealt with immediately.
The team suspects that one of their guys, Walter (Neal McDonough), might be Uncle's killer. Benny instructs Mary to follow Walter since he goes for a run every day at 3:00. Mary tries to find Walter while she takes Danny out to get hot dogs. Mary misses Walter as he goes out but spends the afternoon with Danny overlooking the city by the water. He tells Mary how his mother left him and his dad when he was 7, and how his dad was killed. Danny went to stay with his grandmother, but she passed away too, and then someone brought him to Uncle.
The next day, Mary goes for a run to follow Walter, maintaining her distance so he won't notice her. After following him under a bridge, Mary shoots Walter dead.
Benny's son Tom (Billy Brown), who is also Mary's ex-boyfriend, comes to Mary's apartment. He finds Danny and menacingly tells him to let Mary know he wants to speak with her.
When Mary gets home, Danny tells her about Tom showing up. She later takes Danny to Benny's home for the birthday of his wife, Mina (Margaret Avery). During the dinner, Danny mentions he's from Jamaica Plain. Tom later finds Mary in the kitchen and brings up how Marcus was the target from Jamaica Plain, so he pieces together that Danny was his son, and thinks that he could pin his father's murder on Benny and his crew. Mary assures Tom that's not the case. Benny later invites Mary to slow dance, where she says she wants to leave this life behind. When Mary and Danny leave, Tom tells Benny about Danny.
Mary later meets up with Tom as they storm a hideout for Luka's guys. They kill everyone inside but they do not find Luka.
Danny takes one of Mary's guns from her room and goes to find Benny. He takes out the gun and tells Benny to let Mary go. Benny then tells Danny that Mary is the one who killed his father since he owed them a lot of money, and she is only taking care of him out of guilt. Danny gives Benny the gun, just as Mary arrives after learning where he went. Danny leaves, and Mary shoots Benny dead moments later.
Mary tries to run after Danny, just as Tom is informed of Benny's death. Jerome, who also works under Benny, tells Tom that it may have been Danny who killed Benny since he saw the kid going in alone and running out scared.
Mary finds Danny by his spot over the water. She expresses great remorse over what she did and says not a day goes by that she doesn't regret killing his dad, but she did not take him in just because she felt guilty. Danny appears to forgive her.
Mary drives Danny away, but he leaves the car and is taken by Tom and his goons. Tom soon figures that Mary really killed Benny. He sends her a message to inform her that they have Danny. Mary heads over to the warehouse where they're keeping him, and she proceeds to kill every one of Benny and Tom's guys. Mary finds Danny and frees him just as Tom finds them. Danny runs out, leaving Mary and Tom to fight. Mary succeeds and finishes Tom with a bullet to the head.
Mary reunites with Danny outside, and they drive off to another location.