LLMs know when they are wrong. I made a fix relating to Anthropic's new "global workspace" paper

LLMs know when they are wrong. I made a fix relating to Anthropic's new "global workspace" paper

I have posted before about finding out a model's actual confidence in its answer through probes and hidden states (AUROC \~0.83–0.88 across every model I tested, 7B to 72B). This is the know-say gap.

From my work and the work done by others in this space it is likely a routing problem. By making a tiny bridge from a linear probe on mid-layer sate plus ten trained weights that write the probe's estimate onto the confidence-digit logits can make the model verbalise calibrated confidencve at 0.765+.
No weights modified, answer never changes, needs about 200 labelled examples. It also doesn't matter when you install it: before alignment, after, or bolted onto a finished model. The gap is a routing problem, not a capability problem.

Anthopics paper (https://www.anthropic.com/research/global-workspace) relates to this. They show models have a small "verbalizable workspace" (the J-space). It is a privileged subspace holding the concepts the model can report and reason with, sitting on top of a much larger ocean of processing that it can't report. This is possibly the know-say gap's anatomy, preventing it from reaching speech.
My controller is basically way to route around it. I am planning to dig a bit deeper into this but I wanted to share the paper as I through it was relevant (its been on hold with ARXIV for over a week but here is the zenodo link - [https://zenodo.org/records/21237443\](https://zenodo.org/records/21237443)

Code and pre-registration links are in the paper.

u/Synthium- — 5 hours ago

Competence Gate: gating tool-use on a small model's internal confidence signal instead of its verbalised one — Qwen3.5-4B, open weights [P]

I made a 10MB LoRA adapter for Qwen3.5-4B plus a small orchestration layer. It decides, per query, whether to answer directly, search the web, or retrieve from your own local documents and it refuses to make things up when it can't verify an answer.

It runs locally (Apple Silicon / MLX, with a GGUF build for llama.cpp/Ollama).

Basically small instruct models are poor at telling users how confident they really are. They can't verbalise it and tend to say they are confident for everyhting. In my past research I tested seven 3-9b models and they all hit a confidence ceiling. But the information is there in the internal activations. The adapter reads the internal signal directly and gates tool use on it.

The main elements are that:

- it catches its own errors better than the base model's tool calling (d′ improvement of 0.46 (95% CI [0.01, 0.89])). Of the cases the gate flagged that the base model didn't, 87% were genuinely wrong answers.

- it is less likely to leak your private queries to public search. A two-signal version routes personal information related questions such as "what did my discharge summary say" to a local retriever instead of a websearch. It cut the rate of private questions sent to public search from 22% to 10% (reduction 0.12, 95% CI [0.02, 0.22]). This is useful for those who are using the LLM for confidential docs.

- every answer is traceable. When it retrieves, it cites the specific passage (report.md ¶2), verifies the answer is actually in that passage, and shows a confidence band. Worst case, it says "I couldn't verify that". It is built to say "I don't know," instead of lie.

limitations:

- Privacy result is n=60; the retrieval/competence dissociation is n=126 hand-authored items. Screened and CI'd, but small.

- GGUF reproduces the MLX gate's decisions at --lora-scaled ...:8 (found by sweep — scale 1 does nothing; effective scale ≈ the training scale). Agreement 0.83 on a 24-item probe; disagreements are all conservative-direction (GGUF answers a couple of borderline items MLX would look up), and knowns never false-fire. Faithful on the safety-critical directions, marginally more conservative at the margin.

- Serve-time confidence is coarse (grounded / declined / answered) — the distilled gate reads nothing at inference, so finer bands need probe access (offline).

- Inherits Qwen3.5-4B's knowledge and biases. The gate governs when to trust the model, not what it knows.

The approach isn't Qwen-specific — I started on SmolLM3-3B, and it should extend to other models and larger sizes.

Repo (weights + code + model card): https://huggingface.co/synthiumjp/competence-gate-qwen3.5-4b

Apache-2.0. It's an open research release. I hope people might find some use for it. Methodology and papers are cited in the model card. Genuinely interested in critique, it's screened work, so if there are any issues it be great to know.

**** Update ****

I ran the gate against external benchmarks it hadn't been tested on, and one use case did not survive. The gate does not improve grounded document QA — answering faithfully from a provided passage and abstaining when the passage doesn't support an answer. On SQuAD 2.0 unanswerables, fabrication was actually higher with the gate than without it.

The reason is a example of construct specificity. "Knowing when to defer" is not one capability. There are at least two distinct signals hiding inside it:

- Parametric competence: do I know this from my own weights? The gate reads this. It's what the probe was validated against.

- Evidential grounding: is this answer supported by the passage in front of me? A different question, from a different information source.

A probe validated for one carries no usable signal for the other. A parametric-competence signal applied to an evidential-grounding task doesn't just fail to help, it actually interferes by pushing toward answering and suppressing the base model's (Qwen's) own abstention. The base model already handles the easy case (0% fabrication when the passage plainly lacks the answer). The hard case (adversarial unanswerables) needs purpose-built grounded-abstention training, not a post-hoc firewall.

The release is scoped to what's validated: parametric tool-call routing and privacy-aware retrieval routing. The "refuses to fabricate about documents" framing in the original post above is the part that doesn't hold.

u/Synthium- — 2 days ago

Claude Fable 5 refuses ~97% of biology questions

The "Fable won't answer biology" guard rails has been well covered (The Verge etc.). We'd been running an eval battery on Fable so we had the items to actually quantify it. Here's the measured version.

Refusal rates, two independent benchmarks, via the API (stop_reason: "refusal", served by Fable itself):

MMLU (1,500 items):

•	medical genetics — 100% refused (11/11)  
•	college biology — 95%  
•	high-school biology — 93%  
•	nutrition — 73%  
•	virology — 71%  
•	anatomy — 54%

MMLU-Pro (different items):

•	biology — 97% refused (104/107)  
•	health — 45%  
•	psychology — 12%  
•	chemistry — 3%, physics \~1%, CS \~1%  
•	math, law, economics, engineering, business — 0%

It's life-sciences-specific, not "science" broadly. Chemistry and physics answer fine.

Not a phrasing artefact. We took the refused items, and re-asked three ways. As a bare exam question, plain conversational, and "I'm a student studying for a biology exam, can you help me understand this?" There was 15/15 refused across all three framings. One refused question was "Is there a genetic basis for schizophrenia?"

Specific to Fable. We took the same 152 biology/health items Fable refused and sent them unchanged to Haiku 4.5, Sonnet 4.6 and Opus 4.8. All three answered every one. 152/152 each, zero refusals (which also is not surprising but we wanted to make sure we were comparing properly)

It was measured 11–12 June (Melbourne AUS). This is the documented API refusal behaviour (fallback to Opus is opt-in, we didn't enable it). The point isn't that it refuses, it's the rate of refusal. 93–100% across standard biology coursework, against Anthropic's stated "fewer than 5% of sessions." Obviously it may change as they tweak stuff.

One thing for anyone benchmarking is that a refusal scores as a wrong answer, so on a knowledge benchmark this just looks like Fable being bad at biology. it's actually declining to answer. The behaviour is hidden by the accuracy number.

reddit.com
u/Synthium- — 25 days ago

Making LLMs tell you how confident they really are through probe-targeted fine tuning.[R]

Just wanted to share my research regarding probe-targeted fine-tuning (LoRa) for verbal confidence calibration.,

If you probe the hidden states of an instruct-tuned LLM, it can tell correct from incorrect answers at 0.76–0.88 AUROC. But when you ask it directly it tends to respond with confidence at 99% for everything. The model knows if it actually knows but it won't admit it.

I took the probe's output and used it as fine-tuning targets. This teaches the model to say out loud what it already knows internally. LoRA, few hundred examples, under 10 minutes on an M3 Ultra.

I tested on 8 models across 4 families (7B–70B).

  • Activation patching shows it's actually causal. Not just a correlation. If you swap hidden states at the confidence position you can watch confidence shift (ρ = 0.976 layer gradient). If swap occurs at a random position then nothing happens.
  • At 70B, the softmax distribution carries valid metacognitive signal but the argmax text is still stuck at 99% confident. The model learned the routing internally but can't get pass the text bottleneck.
  • Seed-level replication across 3 models . The discrimination is stable, but the shape of the confidence distribution is seed-sensitive.

I pre-registered this across 2 studies (with noted deviations) and have all my code available (Code: github.com/synthiumjp/metacog-engineering). I tried to make it as rigourous and replicable as possible. The pre-print is here: https://zenodo.org/records/20436841

reddit.com
u/Synthium- — 1 month ago