Fail open or fail closed?

If you’re a regular user of Claude Code, you may have noticed that it likes to use certain phrases, like “load bearing”, that you don’t encounter very often in everyday conversation. Another phrase that’s been popping up is “fail open” / “fail closed,” and you may have wondered what that means. Here’s a quick explainer, based on how we often use the phrase at Honeybadger.

When we throttle event ingestion based on quotas or rate limits, we have to decide what to do when the call to the quota checker or rate limit checker throws an error. Assuming we handle the exception, rather than letting it bubble up and fail the request, we still have a choice to make. Do we fail open, letting the payload into the pipeline even though the quota check might have rejected it? Or do we fail closed, rejecting the payload even though the quota check might have allowed it? This is a judgment call better left to a human. 😁

And if you’re curious, our usual approach when deciding whether to let your exception or event into our pipeline is to fail open, because we’re nice. 😊