SidClaw is a governance layer for AI agents. The whole pitch fits in four words: fail closed by default. If a tool call can't be evaluated against a policy (missing config, an unknown decision value, an error mid-evaluation), the safe move is to stop, not to shrug and let it run.

That's easy to write on a landing page. It's a property you have to actually hold at every boundary in the code, and this week we sat down and checked whether we did. We didn't, in several places. Here's the honest list, because a fail-open bug in a fail-closed product is both the most embarrassing kind and the most instructive.

The worst one: hooks failing open on a missing config

Our hooks integration loads a policy config and evaluates each tool call against it. If the config file was missing, the old code fell through to allow.

Simplified, but this is the shape of it: