Fight or Flight – Film Review
Published May 11, 2025

James Madigan’s Fight or Flight wants to soar—but it’s flying on borrowed wings. An action-comedy hybrid that traps its characters on a cross-Pacific flight teeming with assassins, espionage, and sardonic banter, the film sets itself up as a spiritual successor to the likes of Speed and Air Force One. But what it truly resembles—often to its detriment—is Bullet Train, a movie I strongly disliked. Fight or Flight mimics that film’s frenetic style, jokey tone, and overstuffed ensemble, without ever developing an identity of its own.
Josh Hartnett headlines as Lucas Reyes, a disgraced former secret service agent pulled out of hiding in Bangkok for a hail-mary mission aboard a San Francisco-bound commercial jet. His target? An elusive hacker known only as “the Ghost,” who may be hiding in plain sight. With a promise from his former flame and ex-partner Katherine Brunt (Katee Sackhoff) to clear his name, Lucas reluctantly straps in for a ride packed with deadly passengers and ulterior motives.
The film’s premise is undeniably juicy: a one-way flight that becomes a battleground for competing hitmen, covert agents, and one mystery hacker. But instead of ratcheting up tension or leaning into tight, claustrophobic suspense, Fight or Flight opts for quippy chaos. The direction, while competent, never quite figures out how to balance the action with emotional stakes. And like Bullet Train, it mistakes sheer volume—of noise, plot points, and eccentric killers—for substance.
The script by Brooks McLaren and D.J. Cotrona (the latter better known as an actor) is filled with sardonic lines and jokey back-and-forths that rarely land. Instead of tension or intrigue, we get exposition dumps and characters who seem more interested in sounding cool than being believable. The dialogue rarely digs beneath surface-level archetypes, leaving most of the cast with little to do beyond their single defining trait: Hartnett is weary, Chandran is earnest, Sackhoff is ruthless, and Zaror is… well, doing a weird interpretive dance before trying to kill people.
Speaking of which—Marko Zaror plays Cayenne, one of the film’s many disposable assassins. His entrance, featuring a deadly dance routine that wouldn’t feel out of place in a rejected John Wick spin-off, encapsulates the movie’s tonal problem. It wants to be self-aware and over-the-top, but never commits to either. Where Bullet Train doubled down on absurdity (again, to its great annoyance), Fight or Flight hesitates. The result is a film that’s too goofy to take seriously, but not funny enough to work as parody.
Josh Hartnett, despite the muddled material, gives the film its only emotional anchor. He lends Lucas Reyes a grounded sense of regret and conviction that occasionally cuts through the chaos. His chemistry with Charithra Chandran’s Isha, the enigmatic flight attendant with hidden motives, is modestly effective. Chandran brings just enough vulnerability and steel to her role to rise above the clunky exposition she’s saddled with. Their late-movie bond feels rushed, but the actors sell it as best they can.
The supporting cast is a mixed bag. Katee Sackhoff is sadly wasted in a role that could’ve been far more compelling had the film explored her morally gray motivations. Julian Kostov, as the scheming agent Hunter, feels like a plot device more than a character. And while the inclusion of a martial arts master named Lian and her group of students sounds great on paper, it amounts to another subplot that’s introduced, escalated, and discarded within minutes—adding to the bloat without enriching the story.
The action itself is intermittently entertaining. A handful of one-on-one fights and group melees in cramped airplane aisles show flashes of creativity. But too often, the sequences are undercut by awkward editing and overly glossy CGI. There’s also a laughably implausible hull breach mid-flight that turns what could’ve been a suspenseful set-piece into a cartoonish moment with no lasting impact.
What truly drags Fight or Flight down is its inability to trust the strength of its core story. Instead of focusing on Lucas’s redemption arc or Isha’s idealistic mission, it piles on world-building about corporate espionage, supercomputers, and secret government-run social media platforms—all of which feel cribbed from better movies. Every time the film begins to find some footing, it pivots to another subplot, another assassin, or another stylistic flourish that feels like someone watched Bullet Train and said, “Yeah, let’s do that too.”
But this movie isn’t Bullet Train, and that’s a good thing—because Bullet Train was exhausting, smug, and overdesigned to the point of incoherence. Unfortunately, Fight or Flight inherits too many of those same flaws without ever correcting them. The tone is inconsistent, the pacing erratic, and the script never slows down long enough to let any real emotion develop.
That’s not to say there’s nothing to enjoy here. Hartnett remains an underrated screen presence and reminds us that he can carry a film even when the material is beneath him. Charithra Chandran shows promise in her first major action role, and there’s the occasional stylish punch-up that injects a bit of life into the proceedings. But these are minor victories in a film that never figures out what kind of story it wants to tell.
In the end, Fight or Flight is a turbulent blend of overused tropes, underwritten characters, and a tone that veers wildly between goofy and grim. If it had trusted its core premise—a disgraced agent protecting a hacker aboard a plane—it might have soared. Instead, it tries too hard to be stylish, witty, and meaningful, and in doing so, never truly gets off the ground.