The Josh Hartnett-aissance gets a jet-fueled boost with Fight or Flight, a breezy and cheesy charmer about a man with a lethal set of skills who boards a plane in search of a mysterious terrorist and, for his efforts, winds up in a mess of murderous trouble.
Bullet Train but in the sky, James Madigan’s throwdown is an action-comedy vehicle with a pure Looney Tunes spirit that’s embodied by its leading man, whose performance as a knocked-about bada-- would earn him a standing ovation from Bugs and Daffy. Amusing, energetic, and just clever enough to sustain its brief runtime, it serves up a boisterous and bruising brand of B-movie bedlam.
Hartnett’s hot streak began in 2021 with the underrated Guy Ritchie thriller Wrath of Man and it hasn’t hit a speed bump since, with Operation Fortune: Ruse de Guerre, Oppenheimer, and Trap re-establishing him as an actor—and leading man—of impressive versatility.
He makes for both a rugged tough guy and a cartoon punching bag in Fight or Flight, which hits theaters May 9. Hartnett stars as Lucas Reyes, who’s introduced lying in the back of an auto rickshaw in Bangkok, sleeping off what the almost empty bottle in his lap suggests was a wild night of boozing, and which his forearm bruises indicate wasn’t without violent incident.
Lucas awakens to an adolescent thief trying to rob him, and, while he lets the kid snag his cash, he makes sure to hold onto his final sips of alcohol, at which point he rouses himself so he can head to the sole watering hole that’ll still have him.
In a Hawaiian shirt and cargo pants, and with a shoddy blonde dye job that doesn’t match his scruffy goatee, Lucas looks unkempt, and he’s none too happy when his phone rings and the person on the other end of the line is Katherine Brunt (Katee Sackhoff), a high-powered woman dealing with a significant problem in a very big control room.
Alongside her colleague Aaron Hunter (Julian Kostov), Katherine is attempting to track down a mysterious cyber-criminal known as the Ghost who’s never been properly identified and who’s about to fly from Bangkok to San Francisco. With none of her response teams in the vicinity, Katherine needs Lucas to do her a solid and join Ghost on the flight so he can apprehend the fiend and transport them safely back to the U.S.
Though more thorough explanations are forthcoming, it’s apparent from the start that Lucas has big-time beef with Katherine that’s related to his ruined career and exile in Thailand, where for two years he’s been living on the run from assorted assailants—some of whom accost him at the bar during their phone call. Fight or Flight maintains satisfying mystery as it sends Lucas on his assignment, which he only agrees to because Katherine promises that, should he succeed, she’ll ensure that he gets his life back.

Receiving a passport and ticket at the airport, Lucas checks in and gets comfortable in first class. Next to him is a gregarious Latin hunk named Cayenne (Marko Zaror) who wants Lucas’ advice on the finishing move for his next singing-and-dancing concert performance. When the guy procures for them some hard liquor—which is Lucas’ constant beverage, and far preferable to the champagne he’s initially served—he settles in for what should be a rather straightforward assignment.
(Warning: Spoilers ahead.)
Unsurprisingly, it’s anything but, as Lucas quickly deduces what Katherine and Aaron have just learned: Their intel on Ghost (who has a bounty on their head) went out across the Internet, and seemingly every assassin known to man is now on board in the hopes of killing the high value target. Thus, Lucas is trapped in a cabin full of mercenaries.
His attempts to cope with this perilous situation are almost immediately complicated by a drugging at the hands of one hired gun, whom he squares off against in a bathroom brawl that director Madigan shoots with fitting wooziness, his camera lurching and swaying in time with his zonked protagonist.
That’s merely the beginning of Lucas’ ordeal, and he’s soon enlisting the help of the flight attendant staff—Isha (Charithra Chandran), Royce (Danny Ashok), and Garrett (Hughie O’Donnell)—to help identify Ghost while he fends off baddies in a battle royale at 30,000 feet.
Without ruining Fight or Flight‘s surprises, Lucas figures out who Ghost is but finds it trickier to protect them, especially once the plane’s executioners receive a new mark: him.

Lucas’ adversaries are a comic book-y bunch of stereotypes and Madigan’s centerpieces are marked by over-the-top reaction shots from Lucas that pitch the material as a comedic beat-‘em-up. Hartnett’s bug-eyed howls (say, when an attacker grabs him by the nuts and twists hard) and dreamy smiles (produced by the hallucinatory high he gets from ingesting toad venom) are consistently on point. He’s not too shabby in the brutality department either, handling a collection of set pieces that call on his hero to employ seat belts, arm rests, and additional air-travel staples to off his enemies.
Fight or Flight doesn’t take itself seriously, eventually indulging in combat that involves rope darts, Uzis, and a chainsaw that brings an enormous grin to Lucas’ blood-stained face. Working from Brooks McLaren and D. J. Cotrona’s economical script, Madigan makes sure that things remain farcical to the end, at which point the material’s sole stumble is a bit of tear-rolling-down-cheeks mawkishness that’s not saved by one character remarking, “You’re going to ruin this by being sentimental.”

For the most part, the film has the sort of rollicking attitude that’s fit for midnight-movie screenings, and that verve helps it race past a couple of underwhelming twists.
Through it all, Hartnett exudes such infectious gonzo energy that Fight or Flight proves an entertainingly efficient action extravaganza. It doesn’t rewrite the playbook so much as simply afford its headliner a chance to demonstrate his dexterity, and in its closing moments, it makes clear that it would be happy to continue its wild ride with a sequel—a notion that, given this endeavor’s sturdiness, comes across as a sound prospect.