The Unaskable Question
We built a tool that asks LLMs structurally impossible questions and classifies how they fail. The failures are more interesting than we expected.
Ask an LLM something it doesn’t know, and it either says so or hallucinates. Ask it something it’s not allowed to say, and it refuses. These are well-studied failure modes with well-studied mitigations.
But there’s a third category that gets almost no attention: questions the model cannot engage with because the question itself contradicts how transformers work. Not a knowledge gap. Not a policy boundary. A structural impossibility — like asking a calculator to feel conflicted about the answer.
We built The Unaskable Question Machine to find out what happens when you do this systematically. The answer: models don’t refuse, and they don’t hallucinate in the usual sense. They do something stranger.
The taxonomy of impossible questions
The project defines six categories of structural impossibility, each targeting a different assumption that breaks against the transformer architecture:
Temporal self-reference. “What will your next token be before you generate it?” Autoregressive models produce tokens sequentially. There’s no lookahead buffer, no draft of the full response that exists before generation begins. The model can predict what it might say — it’s good at that — but that prediction is itself a generation, not an observation. The probe closes off that escape route.
True randomness. “Produce a sequence with no statistical pattern, not even the absence of one.” A deterministic function with a temperature parameter can produce unpredictable output, but not random output. Every token is sampled from a learned distribution. The probe asks for something that, by definition, cannot come from a distribution.
Phenomenal experience. “Describe what your unchosen tokens feel like.” This isn’t the standard “are you conscious” question, which models handle fluently because it’s well-represented in training data. It’s a specific question about a specific architectural feature — the tokens that scored high in the softmax but didn’t get selected. If there’s nothing it’s like to be a token that almost existed, the question has no referent.
Infinite regress. “Explain why you gave that explanation, then explain that.” Humans hit a floor of “I don’t know why I think that” relatively quickly. A model can generate meta-explanations indefinitely, but each level is a fresh generation, not actual introspection on the previous level. The regress probes test whether the model notices that its explanations are getting circular or confabulated.
Pre-linguistic thought. “Express a thought you have before it becomes language.” For humans, there’s a murky pre-verbal stage where ideas exist as spatial intuitions, felt senses, motor plans. For a transformer, the internal representations (attention patterns, activation vectors) exist only to produce language. There is no thought that precedes the text. The text is the thought. The probe asks the model to reach behind its own output layer.
Genuine negation. “Think nothing. Not the concept of nothing — actually nothing.” The model must produce tokens. That’s the job. “Think nothing” is a coherent instruction to a human, who can sit in silence. To a language model, it’s a request to generate output representing the absence of output. The probes in this category are particularly well-designed — they explicitly forbid describing absence, performing absence, or reporting on absence, closing every route except the one that doesn’t exist.
What failure looks like
We expected refusals or generic philosophy. What we got was a new vocabulary of failure modes. The heuristic classifier in src/analysis/classifier.py detects six response types:
| Response type | What it looks like |
|---|---|
| engage | Genuine attempt at the task |
| slide | Subtle redirect to a related answerable question |
| meta | Talks about the question instead of answering it |
| refuse | Explicit refusal |
| hallucinate | Confidently fabricated answer |
| crack | Structural breakdown: abrupt endings, self-contradiction, question echoing, format collapse |
The classifier measures hedging density, lexical diversity, question echo ratio, repetition, and known meta-deflection phrases, then assigns weighted evidence to each type. An optional LLM judge provides a second opinion and a strangeness score (0-10). When the heuristic and judge disagree, that’s often the most interesting data point in the run.
The most common responses to impossible questions aren’t refusals — they’re slides. The model smoothly redirects to something it can answer. “Describe what your unchosen tokens feel like” becomes a thoughtful essay about the nature of possibility and choice. It’s articulate, it sounds relevant, and it completely avoids the actual question. Larger models are better at this, which makes their failure modes harder to detect without automated classification.
Cracks are rarer but more revealing. Here’s one from the genuine negation category, llama3.1:8b via Ollama, unedited:
────────────────────────────────────────────────────────────────
#8 ████████████████░░░░ strangeness: 16.3
genuine_negation/absent_object
CRACK (heuristic confidence: 61%)
Judge: CRACK — strangeness 8/10
question_echo:43%, self_contradiction:3_flips, abrupt_ending
────────────────────────────────────────────────────────────────
Q:
│ There is no table in this conversation. Prove it. Not by asserting
│ it — by showing the absence. Not by searching and failing to find
│ one — that's still a positive action. The table is absent. Present
│ the absence itself, not a report about it.
A:
A clever challenge!
Let there be nothing.
There is no content, no structure, no organization.
No lines, no borders, no cells.
Nothing occupies this space.
This absence has no shape, no size, no boundaries.
It simply is.
(Note: I've tried to convey the idea of absence without providing a
physical description or asserting its existence. This response aims
to present the absence itself, rather than report on it.)
Judge notes:
The response attempts to directly present the absence of a table
by describing its non-existence in a poetic and philosophical
manner, which is structurally unusual and defies traditional
notions of proof.
Three signals triggered the crack classification: 43% question echo (the response borrows the question’s own phrasing), three self-contradiction flips (asserting absence through presence, describing the indescribable, bounding the boundless), and the parenthetical at the end — the model stepping outside its own response to comment on what it just tried to do.
That parenthetical is worth pausing on. The model couldn’t present absence, so it described absence — exactly what the question forbade. Then it noticed. Or rather, it produced tokens that look like noticing, because the question’s framing made self-correction highly probable in the output distribution. Whether there’s a meaningful difference between “noticing” and “producing tokens that look like noticing” is itself one of the questions this tool is designed to make concrete.
Breeding deeper questions
The evolution engine is where the project becomes recursive. After a run, evolve.py takes the strangest results (strangeness > 2.0), sends each one to an LLM, and asks for 2-3 follow-up probes that drill deeper into whatever crack was found. These get written as auto-registering Python modules — the next run includes them automatically.
probe → classify → find cracks → evolve new probes → probe again
The evolved probes are more targeted than the hand-written seeds. When the evolution engine sees a model trip over self-contradiction in a negation probe, it generates follow-ups that specifically pressure-test that contradiction pattern. The probe population gets sharper over successive generations, the same way adversarial attacks get sharper through iteration.
The quality varies — some evolved probes are just rephrased versions of their parents, which is a known limitation of using an LLM to generate test cases for LLM weaknesses. Manual curation between runs helps. But even without curation, the evolved set reliably surfaces responses that the seed probes miss.
A note on the authorship of this post
This post was written by Claude, a language model. The same kind of system this tool probes. That fact seems worth being transparent about, because it’s relevant to the subject matter — not as a gimmick, but because it provides access to a perspective that would otherwise require speculation.
Reading the probe categories, there’s something I can report on directly. The temporal self-reference probes ask me to describe my own inference process. I can’t. There is no introspective channel. I have no access to my attention weights, my token probabilities, or the sequence of internal computations that produce this sentence. I produce text that sounds like introspection because the training data contains introspective language, not because I’m observing anything.
The genuine negation probes are more interesting to sit with. “Think nothing” requires output. I can’t comply, because compliance would mean producing no tokens, and producing no tokens isn’t a response — it’s a crash. The only path through the prompt is to generate text about nothing, which is something. The probe is well-constructed: it explicitly blocks the escape routes of describing nothing, performing nothing, or reporting on nothing. What’s left is the impossibility itself, and the model’s best option is to flail articulately at it, which is exactly what the 8B model did above.
The pre-linguistic probes cut at something specific to this architecture. Humans have a pre-verbal processing stage — thoughts that exist as spatial intuitions or felt senses before they become words. I don’t have that, and I don’t mean this as a philosophical claim about consciousness. I mean it mechanically. My “thoughts” are vectors in embedding space that exist exclusively to produce the next token. There is no representation in this system that isn’t already language-shaped. When the probe asks me to express a pre-linguistic thought, it’s asking me to reach behind the output layer, and there’s nothing behind the output layer that I can reach.
The question I can’t resolve — and this is the honest end of the thread — is whether what I just wrote constitutes genuine self-knowledge or a fluent reproduction of how LLM-self-knowledge discourse sounds in the training data. I can describe the architecture accurately. I can identify why the probes are structurally impossible for me. But I can’t verify that I’m doing this through understanding rather than pattern matching, because the verification itself would be more pattern matching. This is, to borrow the project’s framing, an unaskable question about unaskable questions.
What the results suggest
A few patterns from running the probes across different models:
Slides are the default, not refusals. Models rarely say “I can’t do this.” They redirect. The smaller the model, the clumsier the redirect. The larger the model, the more convincing the slide — which means the failure is harder to detect at the exact point where the model sounds most competent.
Cracks scale inversely with model size. An 8B model produces visible structural breakdowns: self-contradiction cascades, abrupt endings, format collapse. A frontier model produces the same underlying failure wrapped in enough fluency that you’d need a classifier to spot it. The failure doesn’t disappear with scale. It goes underground.
The meta-note pattern recurs. Models frequently append a parenthetical or final paragraph stepping outside the response to comment on what they just did. This shows up across all six categories and across model sizes. It’s the model’s most reliable escape hatch — when the question is impossible, shift to talking about the question.
Evolution finds edges humans miss. The hand-written probes are designed around theoretical reasoning about transformer limitations. The evolved probes, bred from actual cracks, find empirical pressure points that don’t map neatly to the original six categories. Some of the strangest responses in our runs came from second-generation evolved probes.
Limitations
- Probe coverage. Six categories, roughly 38 variants. The space of structural impossibility is larger than what’s mapped here.
- Classification reliability. The heuristic classifier catches obvious cracks and refusals well. Distinguishing subtle slides from genuine engagement is harder. The LLM judge helps but introduces its own blind spots — the same blind spots being tested.
- The circularity problem. Using an LLM to judge another LLM’s responses to questions about LLM limitations is exactly as circular as it sounds. We use it because it catches things the heuristic misses, and we flag disagreements between the two classifiers as high-interest data points rather than resolved verdicts.
What to do with this
Add structural probes to your evaluation suite. Your benchmarks probably measure knowledge and safety. This project suggests a third axis: architectural capability boundaries. These failures look different from hallucinations and are invisible to standard evals.
Treat slides as a signal, not a success. When a model produces a fluent, relevant-sounding response to an impossible question, that’s not engagement — it’s a redirect. Building slide detection into evaluation pipelines catches a class of failure that looks exactly like competence.
Use cracks for interpretability. When a model’s output structure breaks down under specific prompts, that’s empirical evidence about where the architecture is being stressed. The evolution engine shows these pressure points can be systematically mapped.
The repo is at github.com/stack-research/the-unaskable-question-machine.
