The prevailing account held that a single direction in activation space decides whether a language model refuses a request. Gradient-based analysis finds multiple independent directions — and shows that a standard test for independence doesn't actually establish it.
Tom Wollschläger, Jannes Elstner, Simon Geisler, Vincent Cohen-Addad, Stephan Günnemann, Johannes Gasteiger
ICML 2025 · PMLR vol. 267, 66945–66970

A 3D concept cone and its basis vectors. Every direction inside the cone mediates refusal, so the mechanism is a region of activation space rather than a single axis.
Figure 1, Wollschläger et al., arXiv:2502.17420 · CC BY 4.0
The problem
Safety alignment can be circumvented by adversarially crafted inputs, and the mechanisms behind those bypasses are poorly understood.
One influential line of work suggested the picture might be simple: a single refusal direction in the model's activation space, determining whether a request gets refused. If that were right, safety would be a one-dimensional object. Find the direction, defend it, done.
What they did
Earlier work located refusal directions by difference-in-means — averaging activations on harmful prompts, averaging on harmless ones, and taking the gap.
This paper takes a gradient-based approach to representation engineering instead, optimizing directly for directions that control refusal behaviour rather than reading them off a statistical contrast. The method finds directions the difference-in-means approach misses, which is what makes the central result possible.
What they found
Multiple independent refusal directions, and multi-dimensional concept cones. Not one direction but a structured region of activation space, with several distinct mechanisms driving refusal behaviour.
Orthogonality does not imply independence. Two directions can be mathematically orthogonal and still interfere with each other when you actually intervene on the model. The paper introduces representational independence as the stricter criterion: two directions count as independent only if ablating one leaves the other's representation intact — accounting for non-linear interactions, not just geometric ones.
Mechanistically independent directions exist. Applying that stricter test, the authors identify directions that are genuinely functionally separate, confirming that refusal is governed by more than one mechanism.
Built with NNsight
Gradient-based direction-finding is a harder engineering problem than activation extraction. It isn't enough to read values out of a forward pass — derivatives have to flow through an intervention, repeatedly, across many candidate directions. Most ad-hoc hooking code isn't built for that.
The paper's implementation notes are unambiguous on where that machinery came from: all of its algorithms and exploratory experiments are implemented using NNsight.
There's a second demand. The argument rests on the finding holding across model families; a refusal geometry that only appeared in one architecture wouldn't support the claim. The authors train refusal directions on models from the Gemma 2, Qwen 2.5, and Llama 3 families, and sweep size within Qwen 2.5 — from 1.5B to 14B parameters — to test whether larger models support higher-dimensional cones. NNsight expresses interventions against any PyTorch model through one API, so replicating an experiment on a different model doesn't mean rewriting the intervention code for a new forward pass.
Why it matters
The practical consequence is uncomfortable and useful in equal measure. Ablating a single refusal direction doesn't remove refusal — it removes one route to it. Any safety intervention that assumes it has found the mechanism is likely defending a narrower target than it thinks.
The methodology generalizes past refusal. Any behaviour suspected of having a linear representation can now be tested the same way, and the authors position the gradient-based approach as groundwork for further study of model internals.
Explore it
Projects in this series ran on the authors' own hardware. For work at scales where that isn't practical, NNsight connects to the National Deep Inference Fabric — the same code, with remote=True.