A Bug Bounty Costs Less Than Getting Hacked
Don't Kill Your Bug Bounty Program Over AI Slop
Two teams shut their bug bounty programs in the past two weeks. Zcash Community Grants closed its vulnerability bounty program, and a researcher went public after THORChain told it the bounty was permanently retired. Both blamed the same thing, a rising flood of AI-generated reports clogging the queue. I used to run triage for programs like these. I understand the impulse. It is still the wrong call.
A bounty earns its place when the noise is loudest. It is the one easy, paid, legal way for a researcher who found your bug to bring it straight to you. Close it and every bug is still there. You have removed the path the honest finder would have walked.
Look at the economics. A researcher who finds a critical flaw has a choice. Report it for a reward, or do something far worse with it. The bounty is what makes the first choice the rational one. Earlier this year a researcher reported a critical Polkadot XCM flaw through the bug bounty program. The flaw let any account run calls as root on the relay chain and drain the sovereign accounts behind other chains. It was caught and patched before anyone used it. That is the trade.
So run one. The question is who runs it. Six years of DeFi loss data shows the templated attacks closing off one by one, while the losses that remain come from unique flaws buried in a single protocol’s logic. Those bugs are specific to your code, and finding them takes more skilled eyes than you will ever put on staff. That is the argument against self-hosting. An external platform gives you a pool of researchers you could never assemble yourself, and a triage layer between you and the raw queue. Run it in-house and every report lands on the same engineers already shipping the code. A program on Immunefi, HackerOne, or Bugcrowd gives you the reach and takes the first pass off your desk. The fee is cheap against the cost of going without.
The reason both teams gave is real. The slop is real. Anyone running triage this year has watched the AI-generated noise climb, and clearing it costs hours. But the fix is to size it down. Agree a triage tier with your provider. Run your own filtering on your side, close to theirs, and keep a human expert on top of whatever the AI flags. You handle the part that gets through. The platform eats the rest. Giving up the whole signal to dodge a slice of the noise is a bad trade for anyone holding funds.
And the tooling will not cover for you. Yes, you can run the same AI scanners the platforms run. That tooling is the floor now, the part everyone already has. It catches the known patterns and the easy findings. It will not catch the flaw that is specific to your protocol, the one an attacker turns into a drain. That bug needs a human who knows your codebase and knows where to point the tooling. The model is a force multiplier for an expert who already understands the system.
So look again at what the two teams did. They cut the cheapest line in the stack and kept the most expensive one, the hack. The bounty was the thing that turns a stranger’s afternoon into a quiet patch, long before it becomes a post-mortem. Nobody owes you a free bug. The whole point of a program is that you stop needing them to. My bet is that one of the teams that just went dark pays for it inside a year, in a drain or in a quieter program rebuilt after the fact. If the noise is the problem, fix the triage. Do not pull the one alarm wired to the sound you most need to hear.
— Adrian
P.S. A serious bounty costs a fraction of what it protects, and you pay only when someone hands you a real, proven bug. Skip that bill and you pay a worse one later. After the hack you are on crypto Twitter offering the attacker 10% of stolen user funds to send the rest back. It doesn’t work all the time, and plenty of protocols never recover from a hole that size. So set the rewards real high now and write clear rules around them. Pay a researcher to prevent the loss, or pay the attacker a 10% cut once it lands and lose everything else. Either way, you pay.

