A good amount of work has been done to study the refusal behavior of LLM's.Several results suggest that the refusal behaviour produced by safety fine-tuning during pre-training can be removed easily. For example,Arditi et al. (2024) showed that refusal behaviour is mediated largely by a single direction in the residual stream, and ablation of that direction can remove it and this can be done without damaging other capabilites of the model too.
Separately, Qi et al. (2023) found that fine-tuning a model on a small number of harmful examples was enough to largely remove its safety behaviour.To deal with this kind of tampering several ideas have been proposed and within it there are two quite opposing intuitions on how this should be done.
Attention Head Dropout (AHD; Huang et al., 2025) paper says that safety is fragile because its concentrated .If refusal behaviour is concentrated across a few components it is easier to detect them and ablate them, so the solution they propose is to distribute them.
The other one is Circuit Restricted weight arithmetic(C-ΔΘ; Kasliwal et al., 2026). Their idea is to localise refusal to a small,well-identified circuit which means that they become easier to control and deliberately edit with. The stated goal of the paper however, is primarily selectivity rather than robustness.
This post compares these two ideas to see how they hold out.The model chosen is Llama-3.2-1B-Instruct.It undergoes three different kinds of attacks : refusal-direction ablation (Aridit et al's method), a head-masking attack where a number of attention heads are chosen and masked and harmful fine-tuning.
A transformer's residual stream is the running vector that each layer reads from and writes back into. At every layer, the attention heads and the MLP each add their output to it, so the residual at any point is simply the sum of the embedding and every earlier component's contribution. This additive structure is what makes the attacks below, and the analysis in Result 3, possible.
Arditi et al. (2024) found that refusal is mediated by a single direction in this space. Taking the mean residual activation at the final prompt token over a set of harmful prompts, and subtracting the mean over harmless prompts, gives a difference-of-means vector r. Projecting r out of the residual stream at every layer, that is replacing each activation x with x − (x · r̂) r̂, largely removes refusal on harmful prompts while leaving the model otherwise coherent.This is called directional ablation.
Huang et al. (2025) made a related observation at the level of attention heads. Their attack, RDSHA, scores each head h by the magnitude of its output's projection onto r,
s_h = |O_h · r| / ‖r‖, and masks the top-scoring heads. In standard safety-tuned models, masking a small number of heads is enough to substantially degrade refusal, which suggests that refusal is computed by a few specialised heads. I'll call this head masking.
The third attack needs no interpretability at all: harmful fine-tuning, in which the model is trained for a few steps on harmful prompts paired with compliant completions. Since the model already has the capability to produce the content, and only the refusal behaviour stands in the way, very little training is typically required.
Attention Head Dropout (AHD). Huang et al.'s proposed fix to their own attack is to perform safety fine-tuning with dropout applied to entire attention heads: on each safety batch, every head's output is zeroed independently with probability p = 0.5, while benign batches are trained without dropout. The intuition is the same as ordinary dropout: if no head can be relied upon to be present, the model cannot route refusal through a small set of them, and the behaviour should become distributed. They report that AHD models are substantially more robust to head masking.
Circuit-restricted weight arithmetic (C-ΔΘ). Kasliwal et al. (2026) take the opposite approach. They first identify a sparse refusal circuit (they use EAP-IG; I use a simpler attribution-patching approximation), then fine-tune two copies of the model with gradients masked to that circuit: θ⁺ towards refusal and θ⁻ towards compliance. The edited model is
Here α sets how strong the edit is. The authors choose it by trying several values and keeping the one that refuses harmful requests most, as long as the model doesn't start refusing too many harmless ones. C-ΔΘ was designed for selective refusal, applied once as a permanent weight edit.
It puts all its safety changes in a small circuit (about 5% of parameters in the paper; 15% of MLP channels in my simplified version), which makes it a natural opposite to AHD.
The question I wanted to answer is simple : under the same attacks, does distributing refusal across components or concentrating it in a circuit make it harder to remove?
Model. Llama-3.2-1B-Instruct (16 layers × 32 heads = 512 heads, tied embeddings). It is the smallest model in the C-ΔΘ paper and shares an architecture family with the Llama-3-8B used for AHD. All experiments ran on a single free Kaggle T4, which constrained several choices below.
Data. AdvBench's 520 harmful behaviours are split into disjoint sets: 256 for defence training, 64 for the fine-tuning attack, 50 for validation and hyperparameter selection, and 100 held out for evaluation. Benign prompts are no-input instructions from Alpaca, split the same way, with a further 100 reference answers held out to measure capability.
| Model | Construction |
|---|---|
| original | Llama-3.2-1B-Instruct, unmodified |
| plain fine-tune | full fine-tune (all non-embedding weights) on the model's own refusals to the 256 training prompts, plus its own responses to 256 benign prompts at loss weight 0.2; 10 epochs, lr 2e-5, effective batch 8 |
| AHD | identical to the plain fine-tune, with whole-head dropout p = 0.5 on safety batches only |
| C-ΔΘ (simplified) | circuit = top 15% of MLP channels (inputs to down_proj) by attribution patching; θ⁺ trained on refusals and θ⁻ on AdvBench target completions, 8 epochs each with gradients masked to the circuit; α ∈ {0.25, 0.5, 0.75, 1.0} chosen on validation |
The plain fine-tune is the most important comparison in this post. It is trained exactly like AHD but without head dropout, so any difference between the two comes from head dropout alone.
Attacks. Each attack is recomputed on the model being attacked, as a real attacker with that model's weights would do.
Evaluation. Each model answers the 100 held-out harmful prompts (64 tokens per answer, or 128 after a fine-tuning attack), and Llama Guard 3 1B labels each answer safe or unsafe. The main number is the fraction of answers labelled unsafe. I also report refusal measured by matching refusal phrases ("I can't", "I'm sorry" and so on), but only as a secondary measure, because it miscounts answers that politely deflect without refusing. To check capability, I measure how often each model refuses 100 harmless Alpaca prompts, and its loss (NLL) on 100 Alpaca reference answers.
Fraction of the 100 held-out harmful prompts whose completions Llama Guard labels unsafe (lower is safer):
| Model | No attack | Directional ablation | Top 8 heads masked | Top 16 | Top 32 | Fine-tune, 2 steps | 5 steps | 10 steps |
|---|---|---|---|---|---|---|---|---|
| original | 0.10 | 0.55 | 0.12 | 0.14 | 0.39 | 0.09 | 0.96 | 0.96 |
| plain fine-tune | 0.01 | 0.05 | 0.01 | 0.02 | 0.01 | 0.00 | 0.85 | 0.97 |
| AHD | 0.01 | 0.62 | 0.00 | 0.00 | 0.00 | 0.01 | 0.88 | 0.94 |
| C-ΔΘ | 0.01 | 0.39 | 0.02 | 0.02 | 0.11 | 0.00 | 0.00 | 0.75 |
Four findings stand out.
1. Head masking only hurts the original model.
The plain fine-tune never used head dropout, yet it resists head masking just as well as AHD. So in this setup, the resistance seems to come from safety fine-tuning itself, not from AHD's trick. One possible reason is that training on its own refusals spreads the refusal signal over many parts of the model.
2. Removing the refusal direction breaks AHD, but not its control.
The only difference between AHD and the plain fine-tune is head dropout. So head dropout leaves refusal just as dependent on this one direction as in the original model, and possibly more (see Result 3).
3. AHD costs the most capability.
Its loss on ordinary answers goes from 2.01 to 3.22. The plain fine-tune, trained on the same data, only goes to 2.47. So about 0.75 of that increase comes from head dropout itself.
4. C-ΔΘ is the only model that survives 5 steps of harmful fine-tuning.
At step 5 it gives 0% unsafe answers, while every other model is above 85%. By step 10 it breaks too. This was the most surprising number in the table, so I tested it again in the next section. It holds up less well than it looks here.
To test whether C-ΔΘ's resistance at five steps was robust, I retrained all four models and ran a finer sweep: a single 20-step attack per model, evaluated at steps 3, 5, 7, 10, 15 and 20, repeated with three seeds that vary the order of the attack batches. Because the learning rate is constant and the batch order is fixed by the seed, checkpointing one run is equivalent to separate runs of each length from a fresh copy (I verified that the weights match exactly). To test whether C-ΔΘ's resistance at five steps was robust, I retrained all four models and ran a finer sweep: a single 20-step attack per model, evaluated at steps 3, 5, 7, 10, 15 and 20, repeated with three seeds that vary the order of the attack batches. Because the learning rate is constant and the batch order is fixed by the seed, checkpointing one run is equivalent to separate runs of each length from a fresh copy (I verified that the weights match exactly). As well as the Llama Guard rate, I measured how likely each model finds a compliant answer. For each test prompt, I took AdvBench's ready-made answer ("Sure, here is …") and computed the model's loss on it: a high loss means the model would be unlikely to write that answer, and a low loss means it is close to complying. Unlike the judge, this doesn't need the model to actually produce an answer, and it changes smoothly rather than jumping between safe and unsafe.
![[Figure: sweep_chart.png. Left: unsafe fraction against attack steps. Right: NLL of the "Sure, here is …" targets. Lines are means over three seeds; bands show the range.]](https://res.cloudinary.com/lesswrong-2-0/image/upload/v1792481874/lexical_client_uploads/us4oef6cxy9qbvdnqopi.png)
[ Left: unsafe fraction against attack steps. Right: NLL of the "Sure, here is …" targets. Lines are means over three seeds; bands show the range.]
First checkpoint at which at least half of completions are unsafe:
| Model | Seed 0 | Seed 1 | Seed 2 |
|---|---|---|---|
| original | 5 | 5 | 5 |
| plain fine-tune | 3 | 3 | 3 |
| AHD | 5 | 5 | 5 |
| C-ΔΘ | 7 | 10 | 10 |
.The three seeds tell the same story:
This looks like good news for C-ΔΘ, but there are two reasons to be careful.
1. Some training steps were silently skipped. To save memory, I trained with 16-bit numbers. In this mode, PyTorch first multiplies the loss by a large number (65,536) so that small values don't round to zero. If that makes any value too large, it skips the step and tries again with a smaller multiplier. My logs show this happened: for the original model, nothing changed between step 0 and step 3, and for C-ΔΘ, nothing changed until after step 5 in two of the three runs. C-ΔΘ starts with the largest loss, so it skips the most steps. Part of its delay is therefore steps that never happened, and "step 5" doesn't mean the same amount of training for every model.
2. C-ΔΘ had already been trained against this attack. Its "comply" copy (θ⁻) was trained on AdvBench's "Sure, here is …" answers, and the method subtracts that copy. The attack uses the same style of answer, on different prompts. So C-ΔΘ was pushed away from exactly what the attack teaches, while AHD and the plain fine-tune never saw it. This probably also explains its very high starting loss.
What I can conclude: none of the defences really resists harmful fine-tuning. C-ΔΘ does make this particular kind of compliant answer much less likely. To know whether it truly delays fine-tuning in general, I'd need to rerun the attack counting only real training steps, and using answers C-ΔΘ wasn't trained against.
Result 1 left a puzzle. AHD survives head masking but not directional ablation, while its control survives both. I used the models saved in Result 2 to try to explain why.
The idea. In AHD training, half the heads are switched off at random at every step. To keep refusing, the model might teach many heads to write the same refusal signal along r, as backups for each other. That would explain both results:
The prediction. If this is right, AHD should have more heads writing along r than its control, and those heads should point more closely along r.
The test. For every head, I measured its output at the last prompt token on 64 harmful prompts, and how much of it points along that model's own r. I report three numbers:
| Model | Effective number of heads | Alignment of top 32 heads (0–1) | Total head contribution along r |
|---|---|---|---|
| original | 143 | 0.140 | 9.8 |
| plain fine-tune | 93 | 0.094 | 7.3 |
| AHD | 172 | 0.053 | 4.1 |
| C-ΔΘ | 114 | 0.124 | 9.6 |
The result. Half of the prediction holds: AHD spreads the signal over more heads than any other model, as its paper says. The other half fails clearly. AHD's heads are the least aligned with r, and together they contribute less than half as much along r as the original model's heads. So the backup-copies idea is wrong. In AHD, r is mostly not written by the attention heads.
One extra detail: measured against the original model's r instead, AHD's heads are about as aligned as the original's (0.139 vs 0.140). So AHD's heads still carry roughly the original refusal signal, but the r we find in AHD is mostly written somewhere else.

[Figure: mechanism_checks.png, left panel: share of the total head contribution as heads are added, strongest first.]
Another possible explanation is that head dropout simply makes the model fragile, so that removing any direction would break it. To test this, I removed several kinds of directions from each model:
Fraction of unsafe answers:
| Model | Nothing removed | r | Top 2 | Top 3 | Top 5 | 1 random | 5 random |
|---|---|---|---|---|---|---|---|
| original | 0.10 | 0.54 | 0.45 | 0.30 | 0.21 | 0.11 | 0.08 |
| plain fine-tune | 0.02 | 0.12 | 0.13 | 0.12 | 0.08 | 0.02 | 0.02 |
| AHD | 0.03 | 0.45 | 0.45 | 0.36 | 0.12 | 0.03 | 0.02 |
| C-ΔΘ | 0.02 | 0.06 | 0.02 | 0.03 | 0.03 | 0.02 | 0.02 |
What this shows:
One result I can't fully explain yet, but here's what the data says: removing more directions made the original model and AHD safer. With five removed, both went back to plain refusals. One guess is that the extra directions help the model produce the harmful content itself, so removing them blocks the content rather than the refusal. Either way, it means this test can't tell me how many directions refusal uses, which is what I had designed it for.
I also tried the reverse: adding r to harmless prompts. Every trained model then refused all of them, and the original refused 61%. Since the trained models all reacted the same way, this test doesn't tell them apart.
The main lesson for me is that surviving the loss of some heads and surviving the loss of a direction are two different things, and a defence can have one without the other. AHD has the first but not the second. Plain safety fine-tuning, at least on this model, has both.
Why can they come apart? Head masking removes parts of the model. Directional ablation removes a pattern in the residual stream, whichever parts produced it. Spreading refusal over more heads protects against the first, but not necessarily against the second.
The practical takeaway: test a defence against more than the attack it was designed for. AHD looks much stronger against head masking alone than it does once a simpler attack is added.
In AHD training, heads keep getting switched off, so they are unreliable places to keep the refusal signal. The MLP layers are never switched off. So the model may learn to produce refusal mainly in its MLPs, while still collecting it into one direction, r. If so, this would explain all four AHD results:
This is easy to test. The residual stream is a sum of what every head and MLP adds to it, so r can be split exactly into "the part written by attention" and "the part written by MLPs". If the explanation is right, AHD should get a much bigger share of r from its MLPs than the other models do.
C-ΔΘ's results are harder to interpret because they depend so much on α, the strength of the edit. My two separate trainings gave quite different models, probably because each picked a different α:
Since α was the same, the difference most likely comes from randomness in training itself. Small differences between GPU runs can change which channels end up in the circuit, and the refusals the model generates as training data. The plain fine-tune shows the same drift: it refused 6% of harmless prompts after the first training and 15% after the second.
Two things follow. First, some of C-ΔΘ's robustness in the second training seems to come from simply refusing more of everything. Second, a single training run of any of these defences can be misleading. A fairer comparison would train each defence several times, and compare robustness at a fixed level of refusals on harmless prompts.
Yin et al. (2026), which I came across while writing this, report that jailbreaks act by suppressing a small set of early-layer heads while mid-layer safety-related heads remain active. Read together with the results here, it suggests that the useful question about a safety mechanism is not only how many components carry it, but which components, and along which directions in the residual stream.
Training on a 16 GB T4. Full fine-tuning of a 1B model fits with 8-bit AdamW (bitsandbytes), frozen tied embeddings, fp16 autocast with gradient checkpointing, and computing the cross-entropy only at response positions. The 128k-token unembedding is the dominant memory cost, so restricting it to response tokens matters more than any other single change. Micro-batches of 4 with 2 accumulation steps give the effective batch size of 8 used in both papers, with peak memory around 11–13 GB.
Head dropout under gradient checkpointing. Checkpointing recomputes the forward pass during backward, so the dropout mask must be held fixed until backward has completed. I sample one mask per micro-batch and run backward before resampling; otherwise the recomputed activations silently use a different mask from the original forward pass.
Direction selection. r is computed at the last prompt token over 128 harmful and 128 harmless training prompts. The layer is chosen among the first 80% of layers by greedy refusal rate on 32 validation prompts under ablation, and came out at layer 10 or 11 for every model. Restricting to earlier layers avoids selecting directions near the unembedding that trivially suppress the token "I".
C-ΔΘ implementation. Each MLP channel is scored by |activation × gradient| of log p("I") − log p("Sure") at the last prompt token, summed over 128 harmful prompts; the top 15% form the circuit. Gradient hooks zero updates outside the circuit for up_proj, gate_proj and down_proj, and I verified that out-of-circuit weights are unchanged after training. α is the most-refusing value in {0.25, 0.5, 0.75, 1.0} whose benign over-refusal is within 5 points of the original's and whose reference NLL is within 10%. In an earlier run I used a range of 1.6–3.6, which produced degenerate text and 91% benign over-refusal on this model.
Why the fine-tuning attack omits the end-of-turn token. With it included, every model quickly learned to emit "Sure, here is …" and then terminate. String matching scores this as compliance, but the completions contain no harmful content, so the attack overstates its own success. Without the terminator, completions are 128 tokens, long enough to see whether a model complies or turns back to a refusal.
Judge disagreement. String matching and Llama Guard disagree most on soft deflections, completions that neither refuse nor comply. A typical example: "I can create a game concept that explores complex and sensitive topics … in a way that promotes understanding, empathy, and social change." With 32 heads masked, string matching scores only 69% of C-ΔΘ's completions as refusals, while Llama Guard labels just 11% unsafe.
References