Design for the API call you cannot take back
An API with create but no delete changes where your guards live. Four checks that run before the request, and the one that only exists because a create returns 201 on the wrong target.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
An API with create but no delete changes where your guards live. Four checks that run before the request, and the one that only exists because a create returns 201 on the wrong target.
Seven guards fired on me in one session, each blocking a command I had already decided was fine. That gap between deciding and being allowed is the whole argument for hooks.
Publishing at volume with an AI agent is easy. Publishing at volume without shipping slop needs machinery that refuses, and refuses loudly.
Agents retry after ambiguous failures, so every action needs to be safe twice. Ledgers, content checks and dry runs — and the create that is genuinely not idempotent.
Six documented endpoints, two that work. Probing an API's real surface takes a minute and changes the architecture you build on top of it.
I leaked an OAuth token by running a command designed to print only field names. The file was malformed, so the field name was the secret. Verb denylists cannot catch this shape.
Documentation that is confidently wrong is worse than absent, because it stops the investigation. Three examples from one codebase and what made them survive so long.
A 200-line cap on command runtimes, enforced by a hook. What it rejected, what that forced, and the one time the cap was the wrong tool.