Finding signal on Twitter is more difficult than it used to be. We curate the best tweets on topics like AI, startups, and product development every weekday so you can focus on what matters.
Most of what scrolls past you on X is a humble-brag. Look what I shipped, look what I closed, look how it is all up and to the right. This is not that. This is a story of failure: a literal gold-rush where I spent six weeks and nearly a thousand Codex audits chasing money that was never there, built a private CLI specifically so I could keep all the winnings for myself, and walked away with zero dollars. Ask me anything.
It started with this tweet. A guy told his agent to go make him five dollars, and it did. It found a small open-source security bounty, opened a real pull request, worked with the maintainer, and got paid $16.88. Sam Altman quote-tweeted it with one word, “interesting,” and it did two million views. I read it and did not think “neat.” I thought “I can industrialize this.” So I copied his playbook and went prospecting.
I did not build one tool. I built a fleet. With Printing Press (@ppressdev), my tool that turns any API into a real working CLI, I printed a client for each platform. The centerpiece was Bug Bounty GOAT, a cross-source hunter that ranked open bounties across HackerOne, Huntr, and YesWeHack, joined them by target repo, pulled GitHub stars and disclosure history, and scored each one by “winnability” with a seven-factor formula. Read that back: I built a tool whose entire job was to compute how winnable a bounty was, and it has, to this day, won nothing. I kept it private, off the public library, because if this was going to print money I wanted to keep all of it.
Then I wrapped the fleet in a skill that reached six platforms, with 24 Codex audit scaffolds, real exploit tooling, Docker fixtures to stand up each plugin locally, and a proof-of-concept verifier, and gave it an eight-hour overnight mode I could point at the internet while I slept. Every layer existed to patch a problem the last one created. The scaffolds existed because the audits were noisy. The verifier existed because the audits hallucinated. I was not building toward money; I was decorating a dead premise, and each new layer made the machine look more serious and perform exactly as well.
It ran 84 hours across fifteen nights and dispatched 983 audits. Then I did the part the tweet made look easy: I submitted. Over about two weeks I sent Patchstack a steady stream of reports, Dokan, Duplicator, SecuPress, Majestic Support, a dozen more. Every single one bounced: rejected, out of scope, below the payable floor, or marked as a duplicate of something someone faster had already filed. Final tally: zero dollars. The tools are genuinely good and the CLI works great; that was never the problem. The idea was. Maybe I should submit Bug Bounty GOAT to the Printing Press library now, since it is clearly not going to bring home all the money.
Lesson: copy the mechanism, not the headline. Building the tool felt like progress because the tool was real and good, but a clean binary is not the same as a working business. The tweet's real lesson was “an agent can do one careful, verified piece of real work.” The lesson I acted on was “an agent is a money printer.” Only one of those was ever on the screen.
The First Bug It Filed Was on systemd, and I Couldn't Take It Back.
Early on I was probing GitHub's security-advisory endpoint to learn its schema. Three requests returned HTTP 500 with empty bodies, so I assumed they were silent failures and added a field. The fourth returned 201 Created. That 201 meant a real security advisory, titled “Test:” with a placeholder body, now sat in systemd's security triage queue under my name. The reporter cannot retract these. The best I could do was rename it to “[PLEASE CLOSE]” and write the maintainers an apology. That is GHSA-7f39-8627-88fw. It is still there, and my gold-rush cost me that smudge before I had earned a cent.
Lesson: reputation with serious projects is a non-renewable resource, and a robot spends it without knowing it is spending anything. If a call returns 201 where you expected an error, stop immediately and find out what you just created.
Then OpenAI's Safety Guard Started Killing the Audits.
When I pointed the machine at the highest-value targets, the serious infrastructure like systemd and ntpd-rs, the audits started dying mid-run. The model flagged the security-review task itself as a possible cyber risk and refused, suggesting I enroll in a Trusted Access for Cyber program. I had careful defensive framing in every scaffold. It did not matter. Two of three tier-one runs got killed before writing a single recommendation. So the high-value path was walled off by policy, and the only platform where the economics could even work was WordPress plugins on Patchstack. I had built a six-platform machine and the board had quietly narrowed to one.
The Nights It “Worked” Were Worse Than the Nights It Crashed.
Here is the real data from fifteen overnight reports between May 23 and June 6: 983 audits dispatched, 113 came back “succeeded,” 98 finding drafts produced. Most nights the report read “no drafts produced” or “errors dominated.” The good nights, the ones that ran the full eight hours and dispatched 200 or 300 audits, did not make money either. They just spent more compute to reach the same place with a longer log: a 30-kilobyte report explaining, in great structured detail, that it had found nothing worth a maintainer's time.
Lesson: a pipeline that reports its own health in green while shipping nothing is the most expensive kind of broken, because it feels like it is working. Measure output that leaves the building.
What I Actually Submitted.
“It did not work” is easy to wave away, so let me be specific. The machine did produce findings, and I did send them in. A real sample:
Dokan 5.0.3, a broken access control bug. Rejected: “Static source-code analysis only. We do not accept unverified reports.”
WP Recipe Maker, an unauthenticated REST call that deleted user metadata. Rejected: out of scope, access-control that only affects an admin notice.
A slide-CAPTCHA bypass in a captcha plugin. Rejected: CAPTCHA bypasses are explicitly excluded.
LifterLMS, a subscriber-level IDOR on lesson progress. Rejected: subscriber-or-higher, minor modification, below the bar.
A contact-form plugin leaking draft submissions between visitors. Rejected: leaking private or draft content is not accepted.
SecuPress, an “unauthenticated deactivation token in the HTTP response.” Except the token was never in the response. The model misread the source and invented it.
Duplicator, Majestic Support, and a dozen more followed the same arc: received, then rejected or marked duplicate. Here is the inbox.
That SecuPress one is the real tell. My winnability ranker did not just submit unpayable bugs. It submitted a bug that was not there.
The Rejection That Diagnosed the Whole Project.
One rejection said the quiet part out loud. It opened, like all of them, with a cheerful “Report rejected! Hey,” and then handed me the diagnosis in a single line.
Static source-code analysis only. We do not accept unverified reports.
That is not a rejection of one report. It is a rejection of the premise. Static source-code analysis is the entire description of what a language model does when you point it at a plugin. It reads the source. It reasons about the source. It never runs anything. The whole tower I built, the six platforms and the verifier and the eight-hour nights, was an elaborate machine for doing static source-code analysis at scale, and the platform's one-line floor was the exact thing it could not clear: we do not accept unverified reports.
Lesson: if a model read the code and never ran it, you have a hypothesis, not a finding. When the rejection letter describes your method better than your own pitch did, the method was the problem.
The Math, and Why I Wrote This Down.
Codex billed me $0.00 for most of the overnight runs because they came out of my plan's quota, which is exactly the feature that let this go on for six weeks. If each audit had cost real money I would have stopped on night two. Cheap tokens did not make the idea good; they just removed the pain signal that would have killed it early. Tally it up: 84 hours, 983 audits, dozens of submissions, one self-inflicted advisory on systemd, a full inbox of rejections, $0.00.
I build for friction I have actually felt. This time I built for a tweet. The inspiration was a single $16.88 payout, and the correct response to a $16.88 proof of concept is a $16.88 experiment, not a six-week cathedral. Chris ran the experiment. I built the factory. He has $16.88 and I have a nightly report that says zero.
There is exactly one part of this that unambiguously worked, and it is the part I will leave you with. Printing Press turned a dumb idea into a clean fleet of working CLIs, an afternoon of effort each. The tools were never the bottleneck; the premise was. If you have an API and a workflow you actually have friction with, that is the engine I would point you at: Printing Press, @ppressdev. And Bug Bounty GOAT, the private one I built to keep all the money? It made me nothing, but it is a genuinely good CLI. If enough of you actually want it, I will put it in the public library. Maybe it is worth more to you than it ever was to me.
Sometimes you throw a thousand Codex tasks at a wall and the wall wins. AMA.
›
Grok Bot: What People Are Actually Using It For (/last30days of X, Reddit, and YouTube)