They are the shared passwords of the machine world. They don't expire. They can't be scoped. They leave no audit trail. We stopped trusting passwords for humans years ago. It is time to stop trusting them for machines.
Yes. Repeatedly. At scale.
git push with a secret in the repo, it has already failed.
This is not a tooling problem you can patch with secret scanners. API keys are architecturally broken:
Not sure which fits? Use our interactive decision tree.
The biggest cloud providers actively discourage their own API keys:
When the providers who issue API keys tell you not to use them, it is time to listen.
We also used to telnet into production. We used to FTP deploy by dragging files into a folder. We used to email spreadsheets of shared passwords. The industry moved on from every one of those, and nobody misses them.
API keys had their moment. That moment was 2008. We now have OAuth 2.0,
OIDC, workload identity, mTLS, and a dozen standards that don't require
you to copy-paste a secret into a .env file and pray.
Decision Tree · Hall of Shame · GitHub
By Pedro Vezzá
AIA Primarily AI-generated, New Content, Stylistic Edits, Content Edits, Human Initiated, Reviewed, Claude v1.0