Back to the Lab

The Lab · AI Tools

Claude Fable 5.1 Refuses Less: What Actually Changed

Fable 5.1 cuts wrong refusals 85 percent in biology, 60 percent in cyber. Plus the refusal that returns HTTP 200 and an empty string.

RAXXO Studios 8 min read
TLDR This entry in one minute

Each line jumps to its section

  • Fable 5.1 refuses benign elementary biology and medical questions 85 percent less often than Fable 5
  • Cybersecurity false positives are down 60 percent, and identifying vulnerabilities is now allowed while exploit generation is not
  • A refusal arrives as HTTP 200 with stop_reason refusal, so code that reads content gets an empty string and no error
  • New API accounts can no longer edit Claude's prior turns in a conversation, which breaks a common steering pattern

Most of the Fable 5.1 coverage is about benchmarks. The change that will actually alter your day is the one about refusals.

Anthropic published two numbers on 1 September 2026 that are unusually specific for safety claims, and one API change that is going to break somebody's tooling quietly.

The two numbers

Benign biology and medical questions: Fable 5.1 refuses 85 percent less often than Fable 5 did.

Cybersecurity: 60 percent fewer false positives.

Both of those are about the false positive rate, not about loosening what the model will actually do for a bad actor. That distinction matters, and it is the reason these numbers are interesting rather than alarming. A refusal on "explain how mRNA vaccines work" is not safety, it is a broken product, and it trains users to stop asking a whole category of question.

Anyone who used Fable 5 for anything touching biology, chemistry or medicine will recognise the problem. The model was cautious to the point of uselessness on schoolbook material, and the workaround was routing to a different model, which is a strange thing to have to do with the most capable model in the lineup.

What is allowed now, and what is not

The cybersecurity boundary moved somewhere specific rather than just loosening.

Allowed: identifying software vulnerabilities. That is defensive work, and it is the bulk of what security teams actually do.

Still restricted: penetration testing, exploit generation, and binary-based vulnerability scanning.

Read that boundary carefully if you build security tooling, because it splits work that feels like one job. Pointing the model at your own source and asking "where is this unsafe" is on the allowed side. Asking it to produce a working proof of concept for the bug it just found is not.

That is a defensible line and it is also an awkward one, because the second half is how you prove the first half was right. Expect to keep a human in that loop.

For agentic misuse specifically, Anthropic reports that Mythos 5.1 refused malicious agentic coding and computer use requests at a rate comparable to Mythos 5, Sonnet 5 and Opus 5. So the hard boundaries did not move. The over-triggering did.

That comparison is the part worth trusting, because it is the falsifiable half of the claim. Saying "we refuse less" on its own is marketing. Saying "we refuse less on benign requests while refusing malicious ones at the same rate as three named models" is a testable statement, and it is the shape a safety claim has to take before it means anything. Anthropic also states a limitation alongside it: their automated behavioural audit has less visibility into very long-context work and multi-agent settings, and less coverage of impossible tasks than they would like. Long autonomous runs are exactly where the audit is thinnest, so treat the refusal profile as well measured for single turns and less so for an agent running unattended for an hour.

The failure mode nobody handles until it bites

Here is the part that belongs in your code rather than in a policy discussion.

When Fable declines, you do not get an exception. You get HTTP 200, a normal-looking response object, `stop_reason` set to `refusal`, and a category in `stop_details` such as `cyber` or `bio`.

If your code does the obvious thing and reaches for the first content block, you get an empty string. No error, no log line, no alert. A user sees a blank response and you find out from a support message three days later.

Two lines fix it. Check `stop_reason` before reading `content`, and enable the server-side fallback so a refused request routes to another model automatically rather than dying. Anthropic ships that as a request parameter, so it is configuration rather than a retry loop you maintain.

Guard `stop_details` before reading it, too. It is populated only when the stop reason is a refusal and is null for every other outcome, so an unguarded read is its own crash.

This is the same shape as the silent failures I keep writing about: the system is working exactly as designed and reporting success while the user sees nothing. I covered a rendering version of it in Shipping a Three.js Game to the iOS App Store, where the GPU process died without firing an event and the HUD stayed cheerfully alive over a black screen.

The change that will break existing tooling

Buried in the release: new API accounts can no longer manually edit Claude's prior context in a multi-turn conversation while preserving the transcript.

That is an anti-distillation measure, aimed at people harvesting outputs to train competing models. But it also removes a technique plenty of legitimate applications use. Rewriting an earlier assistant turn to steer a conversation, trimming a bad response out of history and continuing as though it never happened, injecting a corrected answer so later turns build on it: all of that is the same mechanism.

If you built any of it, test on a fresh account before assuming it still works. Existing accounts are not described as affected, which means the failure will show up when someone provisions a new key rather than when you deploy. That is the worst possible time to find out.

The honest workaround is to stop editing history and start using the supported channels instead. Mid-conversation system messages exist for exactly this: append a system role message to the messages array to steer the model, without touching what it previously said and without invalidating your cached prefix.

Why a false positive costs more than it looks

It is tempting to treat a wrong refusal as a small annoyance. It is not, and the reason is that users do not retry.

When a tool refuses something reasonable, people rarely rephrase and try again. They conclude the tool cannot do that category of thing and they stop asking. One bad refusal on a medical question does not cost you one answer, it costs you every medical question that person would have asked for the rest of the year. You never see those in your logs, because they were never sent.

That is what makes the 85 percent figure worth more than it first appears. The visible cost of over-refusal was a support ticket. The invisible cost was a silently shrinking set of things your users believed the product was for.

There is a second-order version for anyone building on top. If you added routing to send biology-adjacent prompts to a different model because Fable 5 kept declining, that routing is now dead weight. It costs you a cache namespace, it splits your traffic across two models for no benefit, and it will quietly go on doing that until someone re-examines it. Releases like this one are the moment to delete a workaround, not to keep it because it is not hurting anything.

Go and find the mitigation you added six months ago. There is usually one.

What this means for choosing a model

The refusal profile is now a real selection criterion, not a footnote.

If your product touches medicine, biology, chemistry, or defensive security, Fable 5.1 just became usable where Fable 5 was not, and that may matter more to you than any benchmark in the launch post. An 85 percent reduction in wrongly refused questions is the difference between a feature that works and one your users route around.

If your product touches none of those, this release changes nothing for you on the safety axis, and the decision comes back to price and agentic performance.

Either way, build the refusal path before you need it. It costs two lines now and an incident later.

Bottom Line

Anthropic tightened the aim rather than lowering the bar. Hard boundaries held, measured against three other models, while wrongly triggered refusals dropped by 85 percent in biology and 60 percent in cybersecurity.

That is the right direction, and it is worth saying that a model refusing schoolbook biology was never protecting anyone. It was just teaching people that the tool is unreliable, which is its own kind of harm.

Two things to do this week. Add a `stop_reason` check and a fallback to any code path that calls Fable, because a refusal is a 200 and will not announce itself. And if you edit conversation history to steer the model, test that on a new API account now rather than discovering it when you rotate keys.

The benchmark side of this release is in Claude Fable 5.1 Benchmarks, and the rest of the coverage sits in the Lab Overview.

Get the next entry by mail
One mail when a new entry lands. No spam. Unsubscribe anytime.
RAXXO Studios

Written by

RAXXO Studios

One designer in Berlin, close to twenty years in. I build tools with AI, use them daily, and write down what happened.

Share this entry

X LinkedIn
All entries