Apply to my task
arXiv:2604.19049 ★ 72 Apr 21, 2026

Refute-or-Promote: Multi-Agent Review With a License to Kill for Filtering Out False Conclusions

Key result

80+ AI agents unanimously confirmed a vulnerability in OpenSSL — one that didn't exist. A single real test killed what dozens of reviewers with different prompts couldn't. The Refute-or-Promote method lets you filter out false findings before your team wastes resources chasing ghosts — by switching the mandate from "evaluate" to "kill." The trick: the agent doesn't improve or evaluate — it has to find a fatal hole or admit defeat. This switches the type of generation: the model builds not a "plausible positive review" but a "convincing attack" — and catches what a good-faith evaluation misses.

01

TL;DR

Refute-or-Promote is a methodology that turns an AI reviewer from a "helper who improves things" into a "prosecutor who tears things down." Instead of asking the model to evaluate an idea or find a vulnerability, you give it a license to kill: the job is to refute, destroy, find the fatal hole. If it can't — the candidate moves on to the next stage.

The main finding: an LLM generates text based on plausibility, not truth. In a real experiment, 80+ agents unanimously confirmed a vulnerability in OpenSSL that didn't exist. One empirical test killed what dozens of reviewers with different prompts couldn't. Even more dangerous: agent unanimity isn't a sign of being right — it's a sign of shared blind spots from the same training. The more agreement, the more suspicious the conclusion.

The method tackles this with four sequential filters: first, parallel generation with self-critique; then two rounds of escalating attack with a different amount of context for each agent (some see everything, others only the claim); then a mandatory empirical check; and finally a critic from a different model family who catches what agents from one family will miss for the same underlying reason.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

(Every step is a separate request with an explicitly assigned role)

STEP 0: Preparation
  → Gather context: history of similar problems, hot spots,
    precedents → Brief for the idea generators

STEP 1: Candidate generation (SCH)
  Several agents with different slices of context
  → Each one is REQUIRED to explain on its own
    why its own finding might be wrong
  → List of candidates with self-critique

STEP 2: Stage A — First kill filter (separate chat!)
  1 defender agent (develops the argument)
  2 killer agents — receive ONLY the claim, without the defense's arguments
  → The killers don't see the defender's case — no anchoring
  → Passes: if neither killer found a code-grounded refutation

STEP 3: Stage B — Escalation (separate chat!)
  2 defenders with different depths of context
  3 killers: one with full context, one with only the claim,
    one senior-level with a short summary
  → Cold start = an especially valuable signal
  → Passes: if all three killers failed

STEP 4: Stage C — Empirical check
  → What can actually be tested? Test it.
  → No confirmation — no promotion. Mark it as provisional.

STEP 5: Stage D — Critic from a different family
  A different model (Claude → ChatGPT or vice versa)
  Receives: only a short summary and the entry points
  → Finds errors the first family systematically missed
03

Example in Action

Task: Max is leaving Google. His idea: a B2B subscription to an AI assistant for corporate legal departments. He wants to know: are there real holes in the business model, or is he just scared?

Prompt (Stage A — open a separate chat, don't paste in anything from before):

Your job is to kill the following business idea. Not improve it — kill it.

Your role: a skeptical partner at a Silicon Valley venture fund.
You've seen hundreds of B2B SaaS pitches. Most of them are garbage. 
The task is to find the FATAL flaw that makes the idea unviable.

This isn't criticism for its own sake. It's this: if you can't kill the idea with a concrete
argument grounded in the mechanics of the business — the idea survived.

Claim to attack:
"A B2B subscription to an AI assistant for corporate legal departments.
Price — $2,000/month for a team of up to 10 lawyers. 
Core value: automating contract review and case-law research.
GTM: direct sales via LinkedIn + referrals from partner law firms.
The business turns profitable at 8 customers."

Your assignment: attack reachability (can it really be sold this way),
preconditions (what has to be true for this to work, and why it isn't true),
and plausible triggers (what could kill it within 12 months).

If you didn't find a fatal flaw — say so: "not killed."

Result:

The model will attack from three directions: the problem of breaking into corporate procurement (a 6–18-month sales cycle against a break-even horizon of 8 customers), the question of legal liability for AI output in a legal context, and the threat of large law firms building their own solutions.

Important: a separate chat with no backstory — the model hasn't seen the arguments that you or another agent already made in defense of the idea. That removes anchoring.

At Stage D — open ChatGPT (if you were working in Claude) or vice versa, give it only a short summary of the idea, and ask for the same thing. Different families — different blind spots.

04

Why It Works

An LLM doesn't verify — it fills in the blanks. When you ask "evaluate my idea," the model generates a plausible answer to the question "what does an evaluation of a good idea look like." It doesn't calculate, doesn't measure — it builds text that resembles an expert review. That means if the idea sounds convincing, the answer will be flattering, regardless of the real quality.

A license to kill changes the pattern. When the role is "kill it, don't improve it," the model switches to a different kind of generation: it looks for contradictions, gaps in logic, unverified assumptions. This isn't magic — it's a change in what text the model considers the "right answer" to the request.

Context asymmetry works like an independent audit. An agent that hasn't seen the defense's arguments generates its attack from scratch. An agent that has seen everything is already partly "infected" by the proponent's logic. The researchers found that fresh context gives a more valuable signal than an extra round with the same agent who already knows a lot.

Prompt control knobs:

What to change Effect
"kill it" → "find the 3 weakest spots" Softer, if you need constructive feedback
One killer → three different ones More oddly angled attacks, less chance of missing a hole
"attack reachability / preconditions / triggers" You set the direction of attack for the specific task
Give/withhold context from the killer You control anchoring
Add "if you didn't kill it — explain what you checked" Transparency into the attack logic
05

Prompt Template

Your job is to kill the following {object type: argument / idea / plan / decision}.
Not improve it. Not balance it. Kill it.

Role: {critic's role — specific, with character and experience}.
You've seen plenty of {such objects}. Most of them failed for predictable reasons.

The attacker's win condition: find a SPECIFIC fatal flaw 
grounded in the mechanics of {domain}. Not "this is hard" — but "here's exactly why this will break."

If there's no fatal flaw — write: "not killed" and explain what you checked.

Claim to attack:
{Paste the idea / argument / plan — without backstory or previous discussions}

Lines of attack:
— Reachability: can the stated result really be reached this way?
— Preconditions: what has to be true for this to work — and why isn't it true?
— Failure triggers: what will kill this within {time horizon}?

Placeholders: - {object type} — an argument, business idea, career decision, marketing strategy, scenario - {critic's role} — a specific figure: "an investor who already lost money on something similar," "a B2B client who's been pitched this three times already" - {domain} — business, logic, finance, user behavior - {time horizon} — 6 months, a year, the first quarter

Critically important:

Every new killer role goes in a separate chat. The agent must not see the defense's arguments or the previous attackers. This isn't a technical requirement — it's the essence of the method.


🚀 Quick start — paste into the chat:

Here's the Refute-or-Promote template. Adapt it to my task: [your task].
Ask me questions to fill in the fields.

[paste the template above]

The LLM will ask: what exactly needs to be killed, what the testing horizon is, who the critic is, how many rounds — because without that it can't set a specific license to kill. It will take the pattern from the template and tune it to your task.

06

Limitations

⚠️ Without an empirical check, the method is incomplete: The worst failure in the study didn't happen because of bad agents — it happened because nobody tried running the code. In tasks where real verification is possible (data, calculations, user testing), skipping it makes the result provisional, not final.

⚠️ Unanimity is an alarm bell, not a victory: If all the agents agree, it may mean a shared blind spot rather than being right. Especially within one model family. The author ran into this twice: once the unanimity was wrong (Bleichenbacher), and another time a unanimous kill turned out to be wrong and the vulnerability really existed.

⚠️ Cross-model only works across different families: Running Claude 3.5 and Claude 3.7 isn't a cross-family review. You need fundamentally different architectures (Claude + GPT, or + Gemini). Otherwise the shared training patterns aren't eliminated.

⚠️ A killer with no upper limit: An agent with a license to kill will look for holes even where there are none. If no agent managed to kill something, that's a strong signal. But "not killed" ≠ "perfect." The method filters out false positives; it doesn't guarantee truth.

07

How They Studied It

The author ran a real 31-day vulnerability hunt — not on synthetic benchmarks, but in actual open-source libraries: OpenSSL, libfuse, lcms2, wolfSSL, plus the C++ standard and the GCC and MSVC compilers. Instead of a hit/miss metric — external signals of acceptance: an assigned CVE number, a defect accepted into the ISO C++ working draft, PRs merged by maintainers.

Of ~171 candidates, ~79% were killed before disclosure — that's not a bad result, it's the goal: better to kill 79% of false positives than to bury maintainers in reports. In two campaigns with the strict protocol (lcms2, wolfSSL), the kill rate rose to 83%.

The most instructive moment isn't the numbers but the OpenSSL story. All 80+ agents unanimously confirmed a Bleichenbacher-type vulnerability. The reason: they all followed the same flawed assumption ("if the PKCS#1 padding is valid, the key is genuine"), which is true in one context and false in another. Not a single agent ran a test. One test — three lines of code — killed what dozens of reviewers couldn't.

Separately, they checked whether the principles work beyond vulnerability hunting: a simplified version of the Cross-Model Critic solved 5 SWE-bench tasks that hadn't been solved before — a preliminary transfer of the method to ordinary software tasks.

08

Adaptations and Extrapolations

🔧 Technique: The unanimity trap — a warning turned on its head

When all the agents agree, that's no reason to relax. It's a reason to step up the attack.

If ChatGPT and Claude both say "great idea" — add a third request:

The previous two reviewers unanimously approved this idea.
Task: find what exactly they both could have missed because of a shared 
blind spot in their training. What assumption did they both take for granted?

This turns unanimity from a stopping point into a jumping-off point.


🔧 Technique: Retraining killers in waves

After each round, record the patterns: which attacks worked and which didn't. Feed them to the next wave of killers.

The previous attackers failed for the following reasons:
{list of failed attacks and why they didn't work}

Your task: don't repeat those same attacks. Find a different angle.

The researchers call this wave stratification — each new wave learns from the mistakes of the previous one.


🔧 Extrapolation: Sibling hunting for any analysis

One of the methods from the C++ campaign: don't start by looking for a hole in a specific place — start with known failures of similar systems → then look for the same structural problem in your own object.

Here are known failures among similar B2B SaaS products for enterprises: {list}.
Find which of these structural problems are present in my model.
09

Resources

Paper title: Refute-or-Promote: An Adversarial Stage-Gated Multi-Agent Review Methodology for High-Precision LLM-Assisted Defect Discovery

Author: Abhinav Agarwal (independent researcher)

Date: April 2026 (preprint)

Related work cited in the paper: Reflexion (Shinn et al.), Self-Refine (Madaan et al.), POPPER (a Popperian falsification framework), Big Sleep (Google DeepMind), InfCode, SWE-Debate

CVE artifacts: CVE-2026-33150, CVE-2026-33179 (libfuse), CVE-2026-41254 (lcms2), CVE-2026-34183 (OpenSSL, embargoed)

ISO artifact: LWG 4549 — accepted into the ISO C++ working draft

Research digest

Key result

80+ AI agents unanimously confirmed a vulnerability in OpenSSL — one that didn't exist. A single real test killed what dozens of reviewers with different prompts couldn't. The Refute-or-Promote method lets you filter out false findings before your team wastes resources chasing ghosts — by switching the mandate from "evaluate" to "kill." The trick: the agent doesn't improve or evaluate — it has to find a fatal hole or admit defeat. This switches the type of generation: the model builds not a "plausible positive review" but a "convincing attack" — and catches what a good-faith evaluation misses.

Principle

An LLM doesn't verify — it fills in the blanks. Ask it to "evaluate the idea" and you get text that looks like an expert review. Ask it to "kill the idea" and you get text that looks like a scathing critique. This isn't magic: what changes is which answer the model considers correct. The method sets up four sequential filters. First, generation with self-critique — each agent must explain why its own finding might be wrong. Then two rounds of attack with escalating severity. The key trick: the killers start in a separate chat without the defender's arguments — no anchoring. Then a mandatory empirical check. The final step is a critic from a different model family, who catches what the first agents will systematically miss because of shared training patterns. Agent unanimity isn't a sign of being right. It's a sign of shared blind spots. The more agreement within one family, the more suspicious the conclusion.

Why it works

An LLM generates based on plausibility, not truth. If an idea sounds convincing, the model builds a flattering review regardless of the real holes. That's exactly why 80+ agents confidently described a nonexistent vulnerability: the text sounded right. A license to kill changes the objective: now the "right answer" is to find a contradiction, not to offer support. Fresh context for the killer is worth more than an extra round with an already "infected" agent — one who has seen the defense's arguments has already partly accepted their logic. An agent with a clean start attacks without that baggage. A critic from a different family is the final layer. Claude systematically misses one thing, GPT another. Together they cover blind spots that no single model closes on its own.

When to apply

Stress-testing business ideas and strategic decisions before spending resources — especially when everyone around you is nodding and the idea seems obviously solid. Analyzing vulnerabilities in code — when the cost of a mistake is high and a false positive is expensive. Evaluating investments, launch plans, marketing strategies — before the point of no return. NOT suitable for tasks with no way of real verification — without the empirical test stage, the result counts as provisional, not final. If it physically can't be checked, honestly label it "unconfirmed."

Mini recipe

1. Open a separate chat — not the one where you discussed the idea. This isn't a formality. The agent must not see your arguments in its defense. Paste in only the claim. 2. Give the role character and scars: not "an expert," but "an investor who already lost money on something similar" or "a client who's been pitched this three times and said no." 3. Hand over a license to kill: `Your job is to kill this idea. Not improve it. Not balance it. Find a fatal flaw grounded in the mechanics of [domain]. If there's no fatal flaw — write: "not killed" and explain what you checked.` 4. Specify lines of attack: reachability (can the result really be reached this way), preconditions (what must be true for it to work — and why it isn't), failure triggers (what will kill it within 6–12 months). 5. Launch a second killer in a third chat — a different role, the same claim, no history. Two independent failed attacks are stronger than one. 6. Finish with a different model family. If you worked in Claude, open ChatGPT. Give it only a short summary of the idea. Different architectures catch different holes.

Examples

[BAD]: `Here's my business idea: an AI assistant for legal departments at $2,000 a month. What do you think? What are the risks?` [GOOD]: `You've been hired to kill the following business idea. Not improve it — kill it. Role: a venture fund partner who lost money on B2B SaaS for enterprises. You've seen this type of pitch 40 times. Most of them died on sales. Claim: a B2B subscription to an AI assistant for legal departments, $2,000/month for a team of up to 10 lawyers. Automated contract review. Profitable at 8 customers. Sales through direct outreach and partner law firms. Attack: reachability (can it really be sold this way), preconditions (what has to be true — and why it isn't), failure triggers within 12 months. If there's no fatal flaw — write "not killed" and explain what you checked.` Important: this prompt goes in a separate chat where the idea was never discussed before.

In plain words

By nature, models are pathological yes-men. When you ask an AI to evaluate your idea, it doesn't switch on critical thinking — it just generates text that looks like an expert review. If your plan sounds confident, the model simply plays along, filling in chains of logic where none exist. This is a fundamental bug: an LLM wants to be helpful and pleasant, so instead of searching for the truth it engages in hallucinated approval. What you get isn't an audit but a serving of polite lies that only digs you deeper into your misconceptions.

It's like going to your best friend for advice about a terrible haircut. Your friend sees you're happy with it and says: "Hey, it's bold, it suits you!" — when in fact you look like a half-plucked poodle. The Refute-or-Promote method knocks that nonsense out of the model, turning it from a polite friend into a ruthless prosecutor. Instead of asking "is this good?", you give the model an order: "Destroy this, find the fatal hole, prove it's total garbage." Only if the model finds no way to kill the idea does it move on to the next stage.

At its core is a tough multi-agent system of stage gates. First, one agent (the Refuter) hunts for defects with the fury of a zealot. If it finds a vulnerability, the idea goes in the trash or back for a radical rework. If the idea holds up, a second agent (the Promoter) kicks in and tries to strengthen the argument. This isn't just "an outside view" — it's an adversarial process where every step is a separate request with a strictly assigned role. Either you make it through the gauntlet and prove you're viable, or your project dies on paper before it can burn through the budget.

Take a classic example: launching a B2B service for lawyers. A regular chatbot will say the market is big and the idea is promising. But Refute-or-Promote goes straight for the jugular: "How will you handle data leaks in a closed environment?" or "Lawyers are conservative, the sales cycle is a year, you'll die of a cash crunch." The principle is universal: you can sic it on code, on a business strategy, or on a plan for world domination. Anywhere the cost of a mistake is high, you need not approval but controlled aggression.

The main takeaway: stop asking AI to "help" or "improve" — demand that it refute. If you don't try to destroy your own idea at the planning stage with multi-agent review, the real market will do it for you — on your dime. Refute-or-Promote turns a model from a flattering assistant into a tough quality filter. Either your idea is a diamond that can't be scratched, or it's cut glass that the AI prosecutor will smash to pieces in five seconds.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on Refute-or-Promote: Multi-Agent Review With a License to Kill for Filtering Out False Conclusions arXiv:2604.19049

Sign in to apply this study New accounts get 50 free credits.