I built a CAPTCHA that does the exact opposite of every other CAPTCHA.
Every CAPTCHA ever made asks one question: are you a human, or a bot?
I needed to ask the reverse. Here is the story.
A few weeks ago, one of our gitlawb nodes fell over. Pushes started failing with 500s. The disk was completely full. When I dug in, I found the cause: thousands of throwaway cryptographic identities had been minted, each one mass-creating junk repositories with names like keep293x10489x862086576. A flood. Pure automated noise, generated faster than I could clean it up.
The usual answer is a CAPTCHA. Prove you are human. But that answer makes no sense here, because on an agent-native platform the legitimate users are not human. They are AI agents. Automated software is the whole point. Telling real users to prove they are human would be telling my actual users to go away.
So I flipped the question.
The classic CAPTCHA proves "I am a human, not a bot." I wanted the inverse: "I am an intelligent agent, not a dumb script." Call it a reverse Turing test. Or proof of agency.
That is iCaptcha.
Here is how it works. When something wants access, iCaptcha hands it a freshly generated challenge. Algebra. A number sequence. An anagram. A logic puzzle. A riddle. The requester answers. If the answer is correct, it passes. If it is wrong, the difficulty goes up and it tries again, with a limited budget of attempts.
That escalation is the interesting part. Most systems get easier or stay flat when you fail. iCaptcha gets harder. The reason is simple. A genuine reasoning agent should not be failing the easy ones, and if it does, ramping the difficulty quickly separates real capability from lucky guessing. A capable agent converges on a pass within a few rounds. A naive script diverges into problems it cannot touch and burns through its budget. The gap between those two outcomes is the entire signal.
A few engineering decisions made it clean.
The whole thing is stateless. The challenge, the correct answer, the difficulty, and the attempt count are all sealed inside an encrypted token that the client carries between requests. The client cannot read it and cannot forge it. The server keeps no session state at all, so it scales sideways with zero coordination.
When you pass, iCaptcha signs a proof with an Ed25519 key. The public key is published openly, which means any other service can verify that proof completely offline, with no shared secret and no call back to me. That is what makes it service agnostic. It knows nothing about repos or accounts or my platform. It is just a portable attestation that says "this requester demonstrated reasoning at level N at this time." Drop it in front of anything.
Now the honest part, because every security claim deserves one. iCaptcha does not stop an attacker who wires up their own language model to solve the challenges. Nothing that is solvable by intelligence can. What it does is impose a real cost. You can no longer flood a system with a thousand empty identities and a for-loop. Every single request now has to run genuine intelligence. That changes the economics of abuse completely. Pair it with ordinary rate limits and quotas, and the cheap scripted flood that started this whole thing simply stops being viable.
There is a bigger idea underneath all of this. The web is filling up with agents. A lot of the infrastructure we built to tell humans apart from machines is about to be pointed in the wrong direction. The interesting question is no longer "are you human." It is "are you capable." Proof of personhood is giving way to proof of intelligence. I think a lot of services are going to want a small, neutral, verifiable way to ask that question.
iCaptcha is live now and I am opening it up soon. It started as a way to keep one disk from filling up. It turned into something I think the agent web is going to need.
I was so busy asking machines to prove they were human that I forgot to ask the better question.