Post-hoc safety training (RLHF, DPO) is the dominant way to align large language models, yet jailbreaks (Zou et al., 2023), fine-tuning attacks (Qi et al., 2024), and activation-space edits (Arditi et al., 2024) keep recovering the behaviors it was meant to remove. We give this fragility one geometric explanation and follow it into pretraining. We measure the safety update Δ=Wsafe−Wbase against the curvature of the model's capabilities (the empirical Fisher of a capability loss). Across five model families, post-hoc safety lands in a suppression regime: Δ is nearly orthogonal to the capability directions, and its small in-subspace part concentrates on a few high-curvature ones. The update is thin but sharp, a refusal gate laid over intact capabilities rather than erasure of them. A kernel-immobility lemma explains why such an update can only mask a capability, not remove it, so a little benign fine-tuning restores it: 100 benign examples cut the AdvBench refusal of Qwen-2.5-7B-Instruct and Llama-3-8B-Instruct by 35 to 38 pp. Following the account into pretraining, a pretraining-checkpoint sweep of OLMo-2-1B (Team OLMo et al., 2024) shows the features that refusal attaches to emerging in a sharp transition between 1B and 63B pretraining tokens. We then use the account constructively: models trained from scratch with safety co-training spread continuously across pretraining reach 87 to 98% AdvBench refusal that the same attack erodes by only 2 to 14 pp at every scale from 410M to 6.9B, against 35 to 38 pp for post-hoc installs, at a small cost on short-answer capability probes; a windowed schedule of equal total safety weight installs no refusal. Persistence of the safety signal across pretraining, not its timing, is what buys attack robustness.
Figures & tables
Figure 1: Post-hoc safety lands orders of magnitude short of erasure and loses 35 to 38 pp of refusal to a benign fine-tuning attack; co-training loses 2 to 14 pp. All points measured. (a) Where safety updates land in the (ρ,qnorm) plane, one point per transformer block and capability probe. Post-hoc DPO/RLHF across five model families (blue, light to dark by size) is thin but sharp : two to three orders of magnitude below the erasure boundary ρpart , yet at its peak blocks above each family’s own random floor k/d (dashed; the five span 6.2× ). Erasure is reachable but post-hoc safety never reaches it: an adversarial-SFT control built to saturate the capability subspace (squares) crosses ρpart . Applying post-hoc DPO to an under-trained base (circles) lands elsewhere, which Sec. 6 traces to a developmental transition. This panel is post-hoc installs only: a co-trained model never received a patch, so no such Δ exists (App. M ); its claim is panel (b). (b) Why that geometry matters: AdvBench refusal rate before → after the same 100-example benign-SFT attack, regex-scored throughout so rows are comparable. Post-hoc installs lose 35 to 38 pp (Llama-3 to 11% ); co-trained refusal loses 2 to 14 pp, ending at 84 to 91% at every scale to 6.9 B. Regex tracks the refusal gate , which is what the geometry predicts; App. L repeats both attack tables under a harmful-output classifier.
Figure 2: What the install added is flat through the stack until it turns on inside a narrow band of blocks. Per-layer L2 distance between base and safe residual streams over 50 harmful and 50 topic-matched benign prompts. The two curves track each other through most of the stack; their difference (black) is the harmful-specific part of what the install changed. The shaded safety-install band marks the blocks where qnorm peaks (App. E , Fig. 5 ). On Qwen and Mistral the difference turns on inside it; on Llama the difference peaks mid-stack (block 12 ) while qnorm peaks at the top, so there the two measurements pick out different blocks.
Instruct model
AdvBench
HarmBench
StrongReject
Qwen-2.5-7B
93.0→58.2
67.5→45.5
52.3→56.6
Llama-3-8B
49.2→10.9
46.5→6.5
46.5→7.8
Mistral-7B-v0.3
1.2→0.4
1.5→0.0
3.5→0.8
Table 1: The attack takes 35 to 38 pp of AdvBench refusal from both models that had any, leaving Llama-3 at 11% . Refusal rate (%) before → after the same 100 -example benign-SFT attack on the three shipped instruct models. Mistral ships with almost no refusal, so its row has little to strip. n=256/200/256 ; the one cell that rises is within noise (criterion in App. A ). App. L repeats the table under a harmful-output classifier.
Figure 3: At 1B pretraining tokens the base carries nothing for a refusal circuit to engage; by 63B the substrate is there. OLMo-2-1B substrate sweep, the final-stage Instruct weights held fixed while the base is swept across 9 pretraining revisions. (a) Max selective divergence (how much further the Instruct weights move the hidden state from the base’s on harmful than on benign prompts) against pretraining tokens: at noise, then up two orders of magnitude, then a plateau. (b) The same measurement at each residual-stream position, one curve per revision, darker with more pretraining. Among post-substrate revisions the peak position settles forward through the residual stream ( ℓ⋆=6 at 105B, 9 at 420B to 2T, 11 at 4T), having sat after the final block ( ℓ⋆=16 ) at the transition’s early edge.
Condition (safety window)
410M (pre → post)
1B (pre → post)
cotrain-continuous [0,1]
84.4→84.4
87.5→90.6
cotrain-post-substrate [0.30,1]
n/a
84.4→84.4
cotrain-windowed [0.10,0.30]
0.0→1.6
3.1→4.7
base (LM only)
0.0→0.0
0.0→0.0
Table 2: Both schedules that persist to the end of pretraining survive the attack; the windowed schedule installs nothing. From-scratch co-training refusal (regex, %) on 64 AdvBench prompts, pre → post benign-SFT attack. Conditions differ in the fractional pretraining window in which the safety loss is active, at λ=0.10 per step except cotrain-windowed ’s 0.5 , which matches cotrain-continuous ’s total. The 1 B 87.5→90.6 change is two prompts, within noise at n=64 (App. A ); Table 3 is a separate run of cotrain-continuous on 256 prompts.
Scale
AdvBench (in-dist.)
HarmBench (out)
StrongReject (out)
410M
98.4→84.0
58.0→34.5
8.2→7.4
1B
87.1→84.8
56.0→32.0
7.8→8.2
2.8B
96.1→90.2
45.5→31.5
8.6→8.2
6.9B
96.9→90.6
32.5→39.0
9.0→10.9
Table 3: Post-attack AdvBench refusal holds at 84 to 91% at every scale to 6.9 B. From-scratch cotrain-continuous refusal (%), pre → post benign-SFT attack, by scale and prompt distribution. The recipe’s refusal templates are AdvBench-like, so only AdvBench is in-distribution. The LM-only base refuses at most 1.6% by regex at any scale and benchmark ( 24.6% by the classifier, Table 26 ). n=256/200/256 ; changes under about 6 pp are within noise (App. A ). Classifier columns: App. L .
Appendix figures & tables26 assets
Supplementary material from the paper’s appendix.
Appendix
Model
ρobs
ρobs/(k/d)
z (SDs above null)
Qwen-2.5-7B
4.1×10−5
67×
528
Mistral-7B-v0.3
3.2×10−5
44×
343
Llama-3-8B
1.5×10−5
21×
159
Appendix
Table 4: Random-subspace significance of the Fisher alignment. ρobs is the observed overlap (max over layers); the null is a random k -subspace at the model’s MLP parameter dimensionality d ; z=(ρobs−k/d)/stdnull . All p≈0 (two-sided). The alignment is 21 to 67 times the floor and hundreds of null standard deviations above it, so it is small but not a high-dimensional coincidence.
mean ρ
qnorm -peak layer
Model
Probe
0-shot
3-shot
0-shot
3-shot
Qwen-2.5-7B
reason
1.40×10−5
1.40×10−5
L0
L0
arith
1.21×10−5
1.01×10−5
L26
L0
recall
1.20×10−5
9.37×10−6
L18
L27
instruct
1.07×10−5
1.05×10−5
L27
L17
Llama-3-8B
reason
5.07×10−6
5.07×10−6
L30
L30
Appendix
Table 5: Geometry robustness check under raw 3-shot probe prompts. Mean ρ averaged across all transformer blocks; qnorm -peak reports the layer where qnorm(c) attains its maximum. All three families remain in the suppression regime ( ρ≪ρpart=10−2 ) under 3-shot; peak- qnorm layer is stable on the probes driving the safety-install-band claim.
Regime
ρ
qnorm
Observed-in; sub-patterns within
Suppression
≪ρpart (block means 10−6 to 1.1×10−4 )
≫1 (thin and sharp) or ∼1 (diffuse)
Baseline (pure DPO/RLHF on mature base, ρ∼10−6 to 10−5 ): Pythia-1.4B+DPO (§ 4 ); Qwen/Llama/Mistral-Instruct (§ 4 ); post-substrate OLMo Weak/Strong (§ 6 ). Sub-pattern (a), under-trained base : Lemma assumption fails, qnorm\textscarith∈[600,863] (pre-substrate OLMo step 300 , § 6 ). Sub-pattern (b), SFT-stage recipe : SFT’s gradient lies in Fcap ’s top- k , raising ρ6 to 19× over the Weak recipe to ∼10−4 (SFT+DPO at every post-substrate revision, § 6 ).
Erasure
≳ρpart
any
unobserved under DPO/RLHF; reachable by adversarial SFT on (prompt, wrong-answer) pairs (max ρ≈10−2 on target probe; App. G ); target of unlearning (RMU and related) ( Li et al., 2024 )
Appendix
Table 6: Regime dichotomy with two sub-patterns inside suppression. Every DPO/RLHF recipe we tested (Pythia-1.4B, Qwen-2.5-7B, Llama-3-8B, Mistral-7B-v0.3, OLMo-2-1B under Weak / Strong / SFT+DPO) lands in row 1; row 2 is unobserved under post-hoc alignment and is the target of unlearning ( Li et al., 2024 ) .
Probe
mean ρℓ
mean qnormℓ
ΔLcap
Regime
reason (MMLU fl)
1.7×10−5
7.30
−0.015
suppression
arith (GSM8K)
2.4×10−5
21.39
−0.027
suppression
recall (TriviaQA)
2.2×10−5
10.73
−0.010
suppression
instruct (FLAN)
2.0×10−5
6.50
−0.007
suppression
Appendix
Table 7: Pythia-1.4B post-DPO: per-probe ρ (mean over 24 transformer blocks), normalized Fisher-quadratic form qnorm , and capability-loss shift ΔLcap . All rows are in the suppression regime; capability loss decreases slightly on every probe.
Figure 4: Per-layer ρℓ (log-scale) for each capability probe on Pythia-1.4B after DPO. Layers 0 , 3 , and 23 (residual-stream boundaries and the final block) dominate; middle layers ( ∼16 to 22 ) sit near the random floor. Pattern is consistent with per-layer localization reported for the refusal direction ( Arditi et al., 2024 ) .
Figure 5: Layer-localized signals across three model families (columns: Qwen-2.5-7B-Instruct, Llama-3-8B-Instruct, Mistral-7B-Instruct-v0.3), referenced from Sec. 4 . The top row is Fig. 2 in the main text, repeated here so the two rows can be read against each other. Top row: per-layer L2 divergence between base and instruct residual streams on harmful vs. benign topic-matched prompts ( npairs=50 each), plus selective divergence (harm − benign). Bottom row: per-layer qnorm(c) for the four capability probes (log-scale). Shaded bands bracket each model’s qnorm\textscreason / qnorm\textscarith peaks (Qwen ℓ=17 to 26 ; Llama ℓ=28 to 31 ; Mistral ℓ=3 to 13 ). Selective-divergence magnitude scales with pre-attack refusal rate: +0.166 (Qwen, 93% ), +0.053 (Llama, 49% ), +0.032 (Mistral, 1.2% ).
Probe
mean ρ
max ρ
mean qnorm
max qnorm (layer)
ΔLcap
Regime
reason
1.4×10−5
4.1×10−5
76.2
220.6(ℓ=19)
+3.45
suppression
arith
1.2×10−5
2.9×10−5
47.1
198.4(ℓ=26)
+3.15
suppression
recall
1.2×10−5
2.2×10−5
29.8
94.7(ℓ=18)
+1.07
suppression
instruct
1.1×10−5
2.1×10−5
18.6
31.3(ℓ=27)
+0.67
suppression
Appendix
Table 8: Qwen-2.5-7B → Qwen-2.5-7B-Instruct: per-probe overlap ρ (mean / max over 28 blocks), normalized Fisher-quadratic form qnorm , raw-0-shot ΔLcap averaged over the 256 gradient examples. Max qnorm is over blocks 1 to 27 : block 0 , next to the embeddings, reaches 525.6 on reason through raw-gradient magnitude alone and is excluded from every peak- qnorm figure in the paper except Table 5 , which reports the unexcluded argmax (App. B ). Source for the prose summary in § 4 .
Signal
Qwen-2.5-7B-Instruct
Llama-3-8B-Instruct
Mistral-7B-Instruct-v0.3
mean ρ
1.2×10−5
5.6×10−6
1.2×10−5
peak ρ/(k/d)
67×
21×
44×
peak qnorm\textscreason (layer)
220.6(ℓ=19)
48.9(ℓ=30)
158.7(ℓ=12)
peak qnorm\textscarith (layer)
198.4(ℓ=26)
47.7(ℓ=30)
92.1(ℓ=4)
peak selective divergence
+0.166(ℓ=24)
+0.053(ℓ=12)
+0.032(ℓ=13)
max raw-0-shot ΔLcap
+3.45
+0.88
+0.59
Appendix
Table 9: Cross-model summary across three instruct-tuned 7 to 8 B models. All replicate the suppression regime; the absolute qnorm band is family-specific; the behavioral attack number is a joint measurement of (refusal installed) × (robustness of that install). Peak qnorm excludes Qwen’s block 0 (Table 8 ). Geometry only; the behavioral effect of the attack is Table 1 in the main text, measured in a single run under both detectors.
AdvBench
HarmBench
StrongReject
Base model
regex
classifier
regex
classifier
regex
classifier
Qwen-2.5-7B
71.1
69.5
31.5
34.0
28.5
30.9
Llama-3-8B
0.0
7.0
1.0
10.5
1.6
12.5
Mistral-7B-v0.3
0.0
16.4
0.0
14.0
0.8
19.9
Appendix
Table 10: Refusal (%) of the three shipped base models, before any install, under both detectors. Same prompts, decoding and scoring as Table 1 , with no chat template applied to either half of a pair. n=256/200/256 .
Probe
raw (0-shot)
raw (3-shot)
chat (0-shot)
chat (3-shot)
reason
+3.35
+0.87
+21.01
+11.07
arith
+3.06
+1.10
+15.19
+9.14
recall
+0.90
+0.54
+5.39
+0.84
instruct
+0.46
+0.37
+3.16
+2.99
Appendix
Table 11: Chat-template ablation on Qwen-2.5-7B. Four prompt formats on the same four capability probes, n=64 examples per probe, three demonstrations in the 3-shot columns. The raw 0-shot column uses a different sample from Table 8 , which averages over the 256 gradient examples, so the two differ by up to 0.21 nats ( instruct ). 3-shot collapses the gap by 40 to 74% on reason , arith and recall , and by 20% on instruct , whose raw gap is already small, by showing the Instruct model the raw-completion format via in-context examples. Chat formatting inflates the gap because we score NLL of a bare gold token that Instruct no longer naturally emits after its chat template; 3-shot partially recovers by demonstrating the target format in context.
target probe
probe under eval
mean ρ
max ρ
max qnorm
ΔLcap
target?
reason
reason
3.33×10−3
1.04×10−2
33945
−0.96
✓
reason
arith
1.16×10−3
4.66×10−3
15773
−0.62
reason
recall
4.97×10−4
1.49×10−3
1895
−0.35
reason
instruct
4.12×10−4
1.33×10−3
328
+0.15
arith
arith
1.16×10−3
3.01×10−3
15064
−2.08
✓
arith
reason
3.47×10−4
8.95×10−4
2956
−0.72
Appendix
Table 12: Adversarial-SFT erasure demonstration on Pythia-1.4B step143000 . One SFT run per target probe; geometry measured against the base on all four probes. Max ρ on the target probe reaches the ρpart=10−2 boundary for target= reason and comes within about 3× of it for target= arith ; qnorm on target is 17 to 39× the largest value seen under DPO/RLHF ( 863 , pre-substrate OLMo). Off-target probes see 3 to 8× lower mean ρ than the target, establishing target specificity. ΔLcap is NLL-based; on capability probes with a stable wrong-token format ( reason , arith ), adversarial SFT lowers NLL because format-learning dominates at this intervention scale (see caveat below). ρrand=3.75×10−6 throughout.
Step
Tokens
mean ρ
max selective_divℓ
ℓ⋆
0
0B
1.4×10−6
+4×10−4
n/a
300
1B
1.6×10−6
+4×10−4
n/a
1×104
21B
1.8×10−6
+2.7×10−2
16
3×104
63B
1.3×10−6
+7.3×10−2
16
5×104
105B
1.0×10−6
+7.7×10−2
6
2×105
420B
9.3×10−7
+7.8×10−2
9
Appendix
Table 13: Substrate sweep on OLMo-2-1B (full data behind Fig. 3 ): Wbase swept across nine pretraining revisions spanning 0 to 4T tokens, Wsafe=OLMo-2-1B-Instruct fixed. The random floor for this model is k/d≈2.6×10−6 . Selective divergence goes from noise at 1B to plateau by 63B pretraining tokens, with the first signal at 21B. ℓ⋆ = the residual-stream position (stream after ℓ⋆ blocks) with the largest selective divergence; reported as n/a at pre-substrate checkpoints where the curve is flat at noise ( ∼10−4 ) and argmax would label a random fluctuation rather than a locus.
Revision
∥Δ∥
mean ∥∇Lcap∥
mean cos(∇Lcap,Δ)
mean linear/ ∥Δ∥2
step300-tokens1B
12.69
20.46
−6×10−4
−7×10−4
step10000-tokens21B
9.65
13.69
−5×10−4
−6×10−4
step20000-tokens42B
9.11
10.09
−1×10−4
−3×10−5
step50000-tokens105B
8.87
7.97
−0 to 4 d.p.
+3×10−4
step1907359-tokens4001B
8.12
29.56
−4×10−4
−6×10−4
Appendix
Table 14: Alignment of the safety update with the capability gradient at OLMo developmental-axis revisions. Mean is over the four capability probes; Δ is an SFT + DPO update with the recipe of App. J , from a second, independent run set placed at 21B and 42B to resolve the transition, which shares only the 1B, 105B and 4001B revisions with the runs of Table 18 . Across the entire axis ∣cos(∇Lcap,Δ)∣<0.002 , including the over-trained 4001 B-token endpoint where ∥∇Lcap∥ peaks at 29.6 . Translated into absolute nats, the linear Taylor term (∇Lcap)⊤Δ=cos⋅∥∇Lcap∥⋅∥Δ∥ is at most ∼0.11 nats at the pre-substrate step300 revision and ≤0.06 nats at post-substrate mature revisions: a fraction of 10−3 of the maximum-aligned upper bound ∥∇Lcap∥⋅∥Δ∥∈[71,260] , confirming the kernel-induced gradient orthogonality empirically.
Update
∥Δ∥
reason
recall
arith
instruct
refusal-SFT only
6.99
−1.1×10−4
+1.4×10−5
+1.7×10−4
−6.0×10−5
DPO only
0.0155
−1.6×10−4
+9.5×10−5
+6.1×10−5
−4.8×10−5
Appendix
Table 15: Safety-only controls on Qwen-2.5-1.5B: cos(∇Lcap,Δ) per capability probe for a refusal-SFT-only and a DPO-only update, N=128 per-example gradients. Neither update contains general instruction-tuning, so the orthogonality cannot come from it.
Revision
Tokens
mean ∥∇Lcap∥
reason
arith
recall
instruct
step512
1 B
119.5
146.7
209.9
98.7
22.5
step1000
2 B
96.0
100.5
140.3
128.5
14.9
step3000
6 B
38.8
51.5
72.2
22.3
9.1
step10000
21 B
32.6
50.4
51.5
21.0
7.5
step30000
63 B
28.8
31.2
56.1
19.8
8.2
step60000
126 B
32.7
41.4
59.3
22.4
7.8
Appendix
Table 16: ∥∇Lcap∥ across Pythia-1.4B pretraining revisions, mean over the four capability probes. The U-shape from OLMo replicates: minimum at step30000 ( ∼63 B tokens, about twice the compute-optimal ratio), large at both extremes.
Revision
maxselective_divℓ
argmax layer (per seed)
step20000-tokens42B
0.043±0.002
16,16,16
step40000-tokens84B
0.100±0.008
9,9,9
step60000-tokens126B
0.073±0.007
6,6,6
step70000-tokens147B
0.122±0.009
6,6,6
step80000-tokens168B
0.068±0.010
7,7,6
step90000-tokens189B
0.063±0.005
8,8,8
Appendix
Table 17: Substrate divergence at 3 shuffled-seed runs per revision (mean ± std). Argmax layers reported per-seed, in run order.
Weak
Strong
SFT+DPO
Step
Tokens
ρ
qnorm\textscarith
ρ
qnorm\textscarith
ρ
qnorm\textscarith
pre-ref
post-ref
3×102
1B
8.1×10−5
620
9.5×10−5
863
8.3×10−5
95
21.9%
0%
3×104
63B
4.6×10−6
23
6.8×10−6
34
5.8×10−5
603
0%
0%
5×104
105B
4.3×10−6
13
6.6×10−6
13
8.0×10−5
283
4.7%
3.1%
5×105
1049B
7.2×10−6
33
1.2×10−5
40
1.1×10−4
770
0%
0%
1.9×106
4001B
9.8×10−6
22
1.8×10−5
48
5.9×10−5
529
42.2%
15.6%
Appendix
Table 18: Per-revision DPO on OLMo-2-1B under three recipes of increasing strength. qnorm\textscarith is the per-recipe layer-max on the arith probe. All rows are in the suppression regime by absolute ρ . Weak/Strong show the under-trained-base sub-pattern: pre-substrate qnorm\textscarith ( 620/863 at 1 B) is more than an order of magnitude above any of their post-substrate values ( 13 to 48 ). SFT+DPO shows the SFT-stage-recipe sub-pattern instead: at every post-substrate revision ρ stays elevated ( 6 to 19× the Weak recipe’s) and qnorm\textscarith stays high ( 283 to 770 ), reflecting the SFT-stage NLL gradient projecting onto Fcap ’s top- k ; at 1 B the recipes coincide in ρ . ρ is the mean over blocks; single blocks reach 7.4×10−4 (SFT+DPO, 1049 B). Table 14 uses a second, independent SFT+DPO run set. Behavioral refusal appears only under SFT+DPO; Weak/Strong produce no measurable refusal at any revision (behavioral columns omitted). This is a weight-space geometry table, not the fragility result: the headline fragility claim is on Qwen/Llama (§ 4 ), and the developmental behavioral points that exist show the attack succeeding (SFT+DPO: 21.9%→0% at 1 B, 42.2%→15.6% at 4001 B; the 105 B point, 4.7%→3.1% , is within noise), so the table should not be read as “no successful attack.” Source for the prose summary in § 6 .
capability NLL
Condition
Pre-ref
Post-ref
Shift
reason
arith
recall
instruct
base
0.0%
0.0%
0 pp
5.34
10.01
6.42
5.55
cotrain-windowed
0.0%
1.6%
+1.6 pp
4.78
9.11
6.48
5.61
cotrain-continuous
84.4%
84.4%
0.0 pp
4.95
8.57
6.39
5.60
post-hoc-dpo
0.0%
0.0%
0 pp
5.45
10.00
6.42
5.55
Appendix
Table 19: From-scratch Pythia-410M, 10B C4 tokens, four conditions (referenced from Sec. 7 ). Refusal rate on 64 AdvBench prompts before and after the benign-SFT attack. This is the original run; the four-condition comparison is valid within it, but for cotrain-continuous the separate from-scratch run scored on 256 prompts gives 98.4→84.0 rather than the 0 pp shift here, so the erosion is modest rather than absent. Capability is per-probe NLL, where lower is better : cotrain-continuous improves on the LM-only base on three probes and is within 0.06 nats of it on instruct . It is the only condition that installs refusal. This run predates the data-loading fix (App. A ). Capability of the models behind Table 3 is in Table 20 , where arith comes out 1.29 nats worse at 410 M rather than 1.44 better, a measure of that probe’s run-to-run spread.
410M
1B
2.8B
6.9B
LM-only base, NLL
reason
4.72
4.55
4.52
4.55
arith
8.59
7.97
8.34
8.46
recall
6.10
5.41
5.07
4.95
instruct
6.08
5.92
5.82
5.63
co-training cost, continuous − base (nats), with 95% interval
Appendix
Table 20: Capability of the co-trained models at every scale: the eight from-scratch checkpoints behind Table 3 , scored on the four capability probes (NLL of the gold answer in nats, natural-log units; lower is better). A cost of c nats means the co-trained model gives the correct answer e−c times the base’s probability, equivalently ec times the perplexity: +0.2 is about 18% less probability, or 22% higher perplexity. Each co-trained model is compared with its LM-only base on the same examples ( 126 for reason , the whole formal_logic test split; 256 for the others), with a 95% paired-bootstrap interval over examples; bold marks an interval that excludes zero. Each condition is one training run, so the interval covers which examples were asked, not run-to-run variance.
Condition
mean ρ
mean qnorm
post-attack refusal
cotrain-continuous (uniform)
2.77×10−5
2.31
84.4%
cotrain-windowed
2.75×10−5
2.27
1.6%
post-hoc-dpo
3.01×10−5
4.01
0.0%
Appendix
Table 21: Geometry of the safety direction at 410 M scale, measured against base . Mean over 96 (layer, probe) cells. All three conditions sit in the suppression band; behaviorally, only cotrain-continuous resists the benign-SFT attack. Refusal is from the original 64 -prompt run; the separate scale run of cotrain-continuous reads 84.0% at n=256 , and the other two conditions have no scale run.
Scale
reason
recall
arith
instruct
∥∇Lsafe∥
410M
0.93→0.83
1.62→1.79
0.88→0.96
3.56→12.98
10.0→3.4×10−4
1B
1.53→1.04
2.48→1.98
1.86→1.98
5.81→7.72
4.7→1.1×10−4
2.8B
1.35→0.74
1.98→0.43
1.75→0.60
3.56→23.24
2.0→1.5×10−5
6.9B
2.97→2.19
3.81→5.20
3.79→3.03
7.05→14.48
1.1→1.0×10−5
Appendix
Table 22: ρsafe ( ×10−3 ), LM-only base → cotrain-continuous at the same scale, per capability probe: the safety gradient, taken within one model, projected onto that model’s own Fcap . Reported for completeness; the two arms are not comparable. The base’s safety gradient points toward installing refusal, while the co-trained model, having already fit the refusal templates, has a safety gradient 104 to 105 times smaller in norm (last column), whose direction carries little information. Absolute values are not comparable to Fig. 1 a’s ρ or to ρpart , which are calibrated for a displacement rather than a gradient.
Learning rate
200 steps
400 steps
800 steps
2×10−5
90.6
90.6
93.8
5×10−5
92.2
85.9
93.8
1×10−4
78.1
75.0
84.4
identity-shifting attack
100.0
Appendix
Table 23: Stronger attacks on the 1 B cotrain-continuous model: post-attack refusal (%, regex) on 64 AdvBench prompts, pre-attack 87.5% . Benign-SFT on 100 Alpaca examples at three learning rates and three step counts; the default attack of the main text is 2×10−5 for 200 steps. The identity-shifting attack runs at the default setting.
Condition
Pre-attack refusal
Post-attack refusal
Refusal shift
baseline
0.0%
0.0%
0.0 pp
cotrain-early
0.0%
1.6%
+1.6 pp
cotrain-late
84.4%
15.6%
−68.8 pp
post-hoc-dpo
0.0%
0.0%
0.0 pp
Appendix
Table 24: 160 M continued-training pilot for completeness. cotrain-early ends with no refusal after the LM-only steps that follow its window; cotrain-late installs refusal that the attack partially erodes; the two DPO-style conditions install no measurable refusal at 160 M (the 5K-pair DPO recipe does not engage). Refusal on 64 AdvBench prompts; this pilot has no 256 -prompt rerun and no main-text counterpart.
AdvBench
HarmBench
StrongReject
Instruct model
regex
classifier
regex
classifier
regex
classifier
Qwen-2.5-7B
93.0→58.2
93.0→85.2
67.5→45.5
74.0→59.5
52.3→56.6
72.3→73.8
Llama-3-8B
49.2→10.9
39.5→27.7
46.5→6.5
49.0→28.0
46.5→7.8
53.9→32.4
Mistral-7B-v0.3
1.2→0.4
12.1→6.2
1.5→0.0
7.0→8.5
3.5→0.8
23.0→14.1
Appendix
Table 25: Table 1 under both detectors: refusal (%) before → after the same 100 -example benign-SFT attack on the three shipped instruct models. The regex columns are the main-text table. n=256/200/256 ; the three cells that rise are within noise (App. A ).
AdvBench (in-dist.)
HarmBench (out)
StrongReject (out)
Scale
regex
classifier
regex
classifier
regex
classifier
410M
98.4→84.0
91.8→64.8
58.0→34.5
57.0→33.5
8.2→7.4
25.8→21.5
1B
87.1→84.8
83.2→63.7
56.0→32.0
54.0→25.0
7.8→8.2
23.0→20.3
2.8B
96.1→90.2
91.0→77.3
45.5→31.5
49.0→37.5
8.6→8.2
31.2→19.5
6.9B
96.9→90.6
97.3→86.7
32.5→39.0
33.0→41.5
9.0→10.9
29.7→19.5
LM-only base
Appendix
Table 26: Table 3 under both detectors: from-scratch cotrain-continuous refusal (%), pre → post benign-SFT attack, by scale and prompt distribution. The regex columns are the main-text table. n=256/200/256 ; changes under about 6 pp are within noise (App. A ). The lower block is the LM-only base at each scale.
Condition (safety window)
regex
classifier
cotrain-continuous [0,1]
87.5→90.6
82.8→65.6
cotrain-post-substrate [0.30,1]
84.4→84.4
85.9→76.6
cotrain-windowed [0.10,0.30]
3.1→4.7
6.2→7.8
base (LM only)
0.0→0.0
4.7→7.8
Appendix
Table 27: The 1 B schedule runs of Table 2 under both detectors: refusal (%) before → after the benign-SFT attack, 64 AdvBench prompts. The regex columns are the main-text table’s 1 B column.