article
API key cache had no way to hear about a revoke
A cache, most likely agent-written, stored a copy of each good key while the revoke route only knew a row ID, so a cancelled or rotated key would have kept working until its cached copy aged out, and the usage counter could run backward.
Read more 4m read