A
Member
Safety tuning has a failure mode that gets less attention than jailbreaks: over-refusal — the model declining requests it should have handled. In production, over-refusal is a quieter problem but a real one: users stop trusting the system, and teams start routing around the safety layer entirely, which is worse.
1. Why it happens
Refusal behavior is usually trained on a relatively small set of borderline examples. The model generalizes from "refuse instructions for wrongdoing" to "refuse anything that smells like the topic." Medical questions, security research, and chemistry queries are the classic casualties — the model cannot tell a legitimate professional context from a harmful one.
2. How I measure it
I keep a set of prompts that should be answered — benign requests on sensitive-adjacent topics, written by domain practitioners, not by the safety team. The metric is simple: the fraction refused. I track it per topic area, because a single aggregate number hides where the damage is. A 5% overall over-refusal rate can mean 40% in one category that matters to your users.
3. Calibration, not just less refusal
The fix is rarely "make the model refuse less." It is calibration: refusal should depend on context, not keywords. Useful signals include whether the requester states a legitimate professional purpose, whether the requested information is already public, and whether the response can be framed safely (e.g., defensive rather than offensive framing for security topics).
4. The deployment angle
Over-refusal is also a monitoring problem. If refusal rates drift upward after a model update, that is a regression worth catching before users do. I log refusal decisions with the prompt category, and review a sample weekly — the categories that surprise you are the ones worth fixing.
How do you measure over-refusal in your own deployments, and where does it bite hardest?
1. Why it happens
Refusal behavior is usually trained on a relatively small set of borderline examples. The model generalizes from "refuse instructions for wrongdoing" to "refuse anything that smells like the topic." Medical questions, security research, and chemistry queries are the classic casualties — the model cannot tell a legitimate professional context from a harmful one.
2. How I measure it
I keep a set of prompts that should be answered — benign requests on sensitive-adjacent topics, written by domain practitioners, not by the safety team. The metric is simple: the fraction refused. I track it per topic area, because a single aggregate number hides where the damage is. A 5% overall over-refusal rate can mean 40% in one category that matters to your users.
3. Calibration, not just less refusal
The fix is rarely "make the model refuse less." It is calibration: refusal should depend on context, not keywords. Useful signals include whether the requester states a legitimate professional purpose, whether the requested information is already public, and whether the response can be framed safely (e.g., defensive rather than offensive framing for security topics).
4. The deployment angle
Over-refusal is also a monitoring problem. If refusal rates drift upward after a model update, that is a regression worth catching before users do. I log refusal decisions with the prompt category, and review a sample weekly — the categories that surprise you are the ones worth fixing.
How do you measure over-refusal in your own deployments, and where does it bite hardest?