What the J-space is and why it matters
A plain explanation of Anthropic's Jacobian lens: a cheap per-layer readout that turns a model's internal state into words. What it is for, why researchers picked it up within weeks, how the mechanism works, and what two early audits say about its limits.

On 6 July 2026, Anthropic published "Verbalizable Representations Form a Global Workspace in Language Models," a paper with a simple ambition behind its title. Inside a language model, most computation is automatic machinery whose intermediate results never surface. The paper argues that a small, privileged set of internal representations behaves differently. The model can report on them, reason with them, and adjust them. The authors call this set the J-space, and the tool for reading it is the Jacobian lens, or J-lens. The problem it was built to solve is old and practical. A model's internal state is a stack of number vectors, and researchers keep needing a way to read those vectors in ordinary words. The J-lens gives every layer of the model exactly that kind of readout.
A readout anyone can fit
With a fitted lens, you can look at any layer in the middle of a computation and see, as tokens, what that layer is contributing to the final answer. That supports auditing, since you can check what a model is holding internally, and it supports intervention, since the same machinery lets you swap or edit what a layer carries. It is also cheap enough for a small lab or a hobbyist.
People evidently find it useful. Anthropic's own companion repo is a snapshot rather than a project. Its README states on line three, "Reference implementation. Not maintained and not accepting contributions." The maintained implementation grew instead inside TransformerLens, the open-source model-analysis library. Pull request #1507, by contributor @danielxmed, added lens loading, readout, native fitting and interventions on 20 July, fourteen days after the paper, and shipped in version 3.6.0 on 28 July. At least seven volunteer contributors then extended it across three releases through v3.7.2 on 15 August, including a J-space decomposition feature from a first-time contributor that maintainer Jonah Larson merged.
One matrix per layer
The mechanism has three steps. First, for each layer you precompute a single matrix, the expected Jacobian of the final hidden state with respect to that layer's activations, written J_l = E[∂h_final / ∂h_l]. In plain terms, the matrix answers a question averaged over ordinary text. If this layer's activation changed a little, how would the model's final state change? Second, you multiply a layer's activation by its matrix, which predicts that layer's influence on the final state. Third, you push the result through the unembedding, the model's own last step for turning vectors into token scores, and you get words. An older tool, the logit lens, decodes a layer as if the model had stopped computing there. The J-lens instead asks what the final output will say because of what this layer holds now.
Fitting is inexpensive. The README notes that the paper's lenses used 1000 sequences of 128 tokens, and that "~100 prompts is usable." What the lens picks out is the verbalizable workspace, which core contributors Wes Gurnee, Nicholas Sofroniew and Jack Lindsey describe as "a privileged set of internal representations, available for report, modulation, and flexible internal reasoning, atop a much larger volume of automatic processing."
What two early audits found
Early independent testing has begun to map where the readouts are reliable. A preregistered campaign by the pseudonymous researcher solarkyle, run from 7 to 19 July on Gemma-4-12B across 25,340 prompts and 13 public benchmarks, asked whether J-lens signals can detect model errors. In-domain, they can. A probe, meaning a small classifier trained on the internal signals, scored 0.789 against 0.731 for the model's own output confidence. But the advantage did not transfer across all task families, and the audit documented a subtle trap. On test slices where the correct answer never varies, an internal probe scores near-perfect (AUC around 1.0) by reading which answer the model is about to give, not by detecting error. A second audit, by GitHub user Ratnaditya-J, tested the public Qwen2.5-7B lens and reached a "surface_confounded" verdict, scoring 0.746 against 0.690 for a simple text-similarity baseline.
None of this contradicts the paper. Anthropic never proposed the J-lens as an error detector, never uses the word "hallucination", and hedged its monitoring claim directly: "We do not feel comfortable making the stronger claim that monitoring the J-space is sufficient for alignment monitoring… We regard the J-lens as a useful addition to the auditing toolkit… but not as a complete one."
If you want to try it
Install TransformerLens v3.7.3, the maintained implementation, which ships the demo notebook Jacobian_Lens_Demo.ipynb along with fitting documentation and tests that check community-fitted lenses against Anthropic's published artifacts. Reading and steering are ready to use today. For error monitoring, validate per task, and before trusting any high detection score, check whether the ground truth actually varies in your evaluation slice.
The desk verified the README disclaimer, the TransformerLens release dates on PyPI, the pull request records, and both audits' preregistration files. A reader can confirm the maintained tooling in five minutes by installing transformer-lens 3.7.3 and opening the bundled demo notebook.
Sources: Verbalizable Representations Form a Global Workspace in Language Models (Transformer Circuits), anthropics/jacobian-lens, TransformerLens, solarkyle/jspace, Ratnaditya-J/verbalizer-vs-cot, jspace-hallucination-campaign dataset, Welcome to the J-Space (Neuronpedia).
Source: Transformer Circuits / Anthropic