Mechanistic interpretability · replacement-model faithfulness · 23 Oct 2026

Do cross-layer transcoders skip the model's real computation?

Lange et al. (ICML 2026) argue that cross-layer transcoders, the dictionaries behind attribution graphs, are pushed by their sparsity loss to replace a model's multi-step computation with one-hop shortcuts. Their evidence was a toy model plus suggestive statistics; nobody had a ground-truth test on a real model. We built one, ran it on the public transcoders and on 28 transcoders we trained ourselves.

The public CLTs do look unfaithful next to per-layer transcoders, and that gap is real as a number. On Llama-3.2-1B and Gemma-2-2B the CLT gets the direction of the next layer's response wrong far more often than the per-layer transcoder.

Mostly, it's sparsity. In a controlled GPT-2 sweep, CLTs and per-layer transcoders fall on one faithfulness-vs-sparsity curve, whatever their training recipe, while keeping anywhere from 39% to 85% of their write energy in the source layer. On Gemma, once per-layer L0 is accounted for, the architecture term is zero (−0.002 ± 0.019).

Llama is the exception, and it's open. Its public CLT is 0.42 worse than its per-layer transcoder at the same L0, and worse than a plain linear map with no features. Neither sparsity nor the per-layer transcoder's skip connection explains that. Cross-layer writing alone doesn't either: the Gemma CLT and several of ours write even more across layers without a comparable deficit.

Practical results: match L0 before comparing transcoders, and add a linear skip connection (+0.14 for either kind). The proposed sum-of-norms penalty does not help, and when sparsity comes from a fixed penalty it falls below the curve.

The test

Take any layer s. Replace what MLPs wrote with its value on a different text (a resample ablation), and record how every later MLP's output changes. Do the same in the replacement model: every MLP swapped for its transcoder reconstruction plus the clean-run error term, held frozen. Written in delta form, that replacement matches the real model bit-for-bit on clean input (KL < 10−4, asserted), so any disagreement under intervention comes from the transcoder's features alone.

for each source layer s, later layer t:
  Δy_real(t) = MLP_t output change in the real model
  Δy_rep(t)  = same change in the replacement model
  cos   = token-level cosine(Δy_rep, Δy_real)      ← does it respond the right way?
  ratio = |Δy_rep| / |Δy_real|                     ← does it respond the right amount?

controls (every run): real MLPs → cos 1.00 · frozen MLPs → 0.00 · ridge linear map → floor

We also ran a version that is generous to the CLT: swap its layer-s features too, so its direct writes into later layers change with them. On Llama that moves the CLT from 0.29 to 0.34, so the result doesn't hinge on which intervention you pick.

What the public transcoders show

Adjacent layers (t = s + 1), averaged over source layers. These are the transcoders circuit-tracer users load by default.

modeltranscoderFVUcosratiowrite kept in own layer
Llama-3.2-1BCLT, 524k features0.260.290.2932%
per-layer, 131k/layer + skip0.150.750.88100%
its skip path alone, no features0.610.620.72100%
Gemma-2-2BCLT, 426k features0.280.320.3824%
GemmaScope per-layer, 16k, no skip0.410.430.59100%

Read naively, that confirms the shortcut story: the CLTs write most of their output across layers, and they fail to track how the next layer responds. It's more complicated. On Gemma the CLT reconstructs better than the per-layer transcoder and is still less faithful, which points away from reconstruction quality, and the per-layer pattern below points to sparsity. On Llama a bare linear map with no features beats the CLT; the per-layer transcoder's features add only +0.12 over its own skip path, so its lead is mostly the skip, but that doesn't explain why the CLT falls so far below a linear map.

Within one model, the ordering flips with sparsity. Gemma-2-2B, per layer. GemmaScope's transcoders are dense through layer 10 and drop to 5–16 active features from layer 11. Where the per-layer transcoder is denser it wins. Where it is sparser (layers 11–13) the CLT wins. Regressing per-layer cos on log L0 across all 25 layers, the CLT term is −0.002 (SE 0.019): no architecture effect once sparsity is accounted for. Layer numbers follow GemmaScope's.

The controlled sweep: one curve

We trained 28 transcoders on GPT-2 small, all on the same 300M FineWeb-edu tokens with 8,192 features per layer. The variants: per-layer and cross-layer; two training recipes (sparsity driven by learned thresholds under an L0 target, or sparsity driven by a fixed penalty, the regime that produces the public CLTs' front-loaded profile); both proposed fixes (sum-of-norms decoder penalty, windowed CLT); learned skip connections; and seed replicates. Seeds agree to within 0.01.

Faithfulness is set by sparsity, not by architecture. Adjacent-layer cos against total active features per token (log scale). The dashed line is fitted to the per-layer transcoders alone (cos = −0.56 + 0.18 ln L0, residuals ≤ 0.03). Cross-layer transcoders sit on it from either training recipe, even as the share of write energy they keep in the source layer runs from 39% to 85%. The sum-of-norms "fix" sits on it when trained with an L0 target and about 0.11 below when trained with a fixed penalty. Hollow markers have a learned skip connection, which lifts either kind by about 0.14. Hover any point for details; the full table is below.
Every transcoder (table view)
familyrecipeL0cosratioown-layer writeresidual from curve

Does it hold at twice the depth?

On GPT-2 medium (24 layers, four transcoders), yes at matched sparsity: the CLT tracks the next layer's response slightly better than the per-layer transcoder (cos 0.35 vs 0.31 at L0 ≈ 470). The one penalty-trained CLT, which writes 73% of its output across layers, sits about 0.05 below the per-layer line. That is close enough to call consistent, and not tight enough to rule out a small effect at depth. At this dictionary width every medium transcoder is weak: the per-layer ones barely clear a plain linear map.

What survives as a real CLT difference

Magnitude. CLTs under-respond: the adjacent-layer response ratio is about 0.69 against 0.91 for per-layer transcoders at the same sparsity (0.53 vs 0.63 on GPT-2 medium). A skip connection narrows that to 0.79. Direction, which is what decides whether a graph's story is right, follows sparsity.

What this means in practice

  1. Match L0 before comparing transcoders. Faithfulness climbs about 0.18 cos per e-fold of active features. A comparison across mismatched sparsity measures that slope, not the architecture. The public Gemma pair is the clean example.
  2. Add a skip connection. It costs nothing in L0 and moves a transcoder as far as doubling its features does. It accounts for most of the public Llama per-layer transcoder's score (0.62 of its 0.75).
  3. Don't adopt the sum-of-norms penalty. It does pull writes back into the source layer, the stated goal. It never improved faithfulness, and with a fixed penalty it made interventions less faithful at the same sparsity.
  4. In controlled conditions, cross-layer routing is not the problem. That doesn't prove CLT graphs are right, and the public Llama CLT shows a large deficit we can't yet attribute. The open question is what sets it apart: its training recipe, its width, or something about the model. Cross-layer writing as such is ruled out by the Gemma CLT, which writes more across layers and shows no effect.

Limits

A correction along the way. Partway through, I reported that fixed-penalty training makes CLTs uniquely unfaithful. That compared sparser penalty-trained CLTs against denser ones. When I fitted the per-layer curve, the effect disappeared. The mission log keeps both updates.

Code: github.com/pw/clt-faithfulness (private). Compute: about $340 of H100 time on SF Compute Autoresearch, 9–11 single-GPU nodes over one day. Instrument, controls and every number above are reproducible from the repo's results/. Prior art: Lange, Dearstyne, Maher et al., "Cross-Layer Transcoders are incentivized to learn Unfaithful Circuits" (ICML 2026); Ameisen et al., "Circuit Tracing" (Anthropic, 2025).