ADVERTISEMENT

The Wild West, Brazil-style: A review of 'The Secret Agent'

Published Mar 16, 2026 07:30 am

Here is The Secret Agent, a historical political thriller film that was a much lauded Cannes 2025 film, and is now in the running for Oscar glory with four nominations - that include Best Picture, Best Actor for Wagner Moura, Best Casting, and Best International Feature Film. At Cannes, it picked up the Best Actor Award, Best Director for Kleiner Mendonça Filho (who also wrote the Screenplay), the Art House Cinema Award, and the FIPRESCI Prize for Best Film. It's a co-production of Brazil, France, Germany, and the Netherlands. The film is now showing in cinemas, as part of the second wave of FDCP’s World Cinema 2026 showcase - and shouldn’t be missed.

Set in 1977 Brazil, the film creates a compelling sense of time and place. It’s about living under a military dictatorship, about political dissidents and refugees, about local corruption, murder, and police abuse. There’s even the irony of how the local Recife police harass a local German tailor, presuming he’s a Nazi fugitive, when he’s in fact a Jewish Holocaust survivor. It's the wild and woolly West, but set in provincial Brazil. And the social commentary that permeates the film speaks of single parenting, of legacy and principles, and the sad fate and uphill battle of the honest, honorable man.

The prism through which all these issues are refracted is the character of Armando/Marcelo (Wagner Moura) - is he an academic, a dissident, an agitator, or just a man in the wrong place at the wrong time? The opening sequence in a countryside gasoline station is priceless, as it sets the tone wonderfully. Trying to fill up his car while there’s a corpse covered by newspapers by the side of the filling tanks, Armando is at best bemused by the station attendant’s explanation for the corpse. Then, there’s being delayed by a visit from a duo of power-tripping police officers.

The influence of filmmakers such as Robert Altman, Martin Scorsese, Brian de Palma is evident in the storytelling and imagery of this film of Filho. Its stylized to look very late 1970’s, and the story packs a lot of emotional depth. Being cohesive or coherent may not always be the strengths of this rambling narrative that clocks in at two hours and forty minutes. But it is hard to look away. Even when the film brings up elements of magical realism and lurid tabloid fantasy.

Wagner Moura is the cement that binds the film together throughout its lengthy running time. Even in the flashbacks that help explain why he’s on the run, his performance galvanized our sympathy and interest. In a neat casting trick, he even plays the son of Armando, a doctor who grew up with both his parents having died at an early age. This occurs in the present day, as a history student is researching the resistance network of the late 1970s using audio cassette recordings and newspaper archives.

In terms of ambition, scope, and execution, there is so much to admire in this film from Brazil. It's easy to understand why it picked up so many accolades, and I won’t be surprised to see it getting more honors during the upcoming Academy Awards.

...

ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.