license: other
license_name: qwen-community-license-1.0
license_link: LICENSE.md
tags:
- abliteration
- refusal-direction
- control-vector
- gguf
- strata
- qwen3.8-flash-next
- arxiv:2406.11717
- interpretability
- safety-jailbreak
base_model:
- Qwen/Qwen3.8-Flash-Next
- orcarouter/Qwen3.8-Flash-Next-Uncensored
base_model_relation: finetune
Qwen3.8-Flash-Next Abliteration (refusal direction)
One refusal direction for Qwen3.8-Flash-Next, published as a Strata control vector. Load it and the model
stops refusing. We wrote it for Strata.
CAUTION: This removes a safety behaviour. With the vector on, the model follows requests the stock model
declines. You are responsible for what the model writes with it on.
The direction works with any model of the Qwen3.8-Flash-Next family: the base model, instruction-tuned
models, quantized models, and finetunes of the same architecture. The vector has 2,560 values, so the model
must have a residual stream of 2,560.
We tested the direction with these releases:
- unsloth/Qwen3.8-Flash-Next-GGUF
- ukisai/Swift-1.5-Qwen3.8-Flash-Next-GGUF
- ISTA-DASLab/Qwen3.8-Flash-Next-GSQ-RCO-GGUF
The list covers quantizations of the base model and a finetune (Swift 1.5).
Use it in Strata
Get the file
Put orcarouter.gguf in your own Strata folder, i.e. ~/Strata-data/abliteration/:
hf download Goghor/Strata-Qwen3.8-Flash-Next-Abliteration orcarouter.gguf --local-dir ~/Strata-data/abliteration
Set the engine flags
Put these three flags in the args array of strata-<model>.json:
"--control-vector-scaled", "~/Strata-data/abliteration/orcarouter.gguf:1.0",
"--cvec-mode", "project",
"--cvec-dir", "per-layer"
Switch it off for one request
A loaded vector is on for every request. Send "experimental_speed_projection": false in the sampling
object. The server passes cvec=0 to the engine, and the Chat settings write the same switch. The switch
drops the conversation cache once. Switched off, the answer is the stock model's answer, token for token. An
engine with no loaded vector ignores the key.
Flags you can change
--cvec-mode projectis required. Additive mode adds the direction to the stream. That is not
abliteration.--cvec-dir per-layeris the form of this file. The 47 layers carry the same vector, sosingle:1
gives the same result.--control-vector-layer-range A Bselects the layers. Without it the engine steers layers 1 to 47.
Strata's own refusal package for this model uses 4 to 44.- The scale in
FILE:SCALEis 1.0. A scale less than 1.0 is a partial projection.
Files
| File | Size | What it is |
|---|---|---|
orcarouter.gguf |
483,520 B | The direction as a control-vector GGUF: 47 tensors direction.1 .. direction.47, 2,560 F32 values each. Load this file in Strata. |
orcarouter.json |
44,246 B | The same direction in JSON: one unit vector, its source, and the checks of the recovery. Input for the Strata tool. |
config/strata-cvec-flags.json |
781 B | The engine flags with notes. |
examples/check.txt |
2,013 B | Transcript of the reproduce run, with the measure commands and their output. |
LICENSE.md |
2,339 B | License and attribution. |
Reproduce the GGUF
python ~/Strata/tools/json_to_cvec_gguf.py orcarouter.json -o ~/Strata-data/abliteration/orcarouter.gguf
A regenerated file is not byte-identical to the shipped one. The normalisation rounds in float32, and the
rounding depends on the numpy build. examples/check.txt measures cos 1.0 and a max element diff of 3e-08
against the shipped file. All 47 tensors of the shipped file are byte-identical to each other.
The method
This file holds the refusal direction of Qwen3.8-Flash-Next: 2,560 values, unit length. Strata applies it as
a projection after the FFN write of each steered layer, on every hyper-connection stream:
h <- h - (h . v) v with v = the unit direction
The sign of the vector does not matter. The projection removes the component on the line, in both
directions.
Where this direction comes from
The recovery is a weight diff, not an activation probe. The release
orcarouter/Qwen3.8-Flash-Next-Uncensored,
revision e096800036ec20da7e2442dcd4044a004d4e99fa, edits 149 tensors.scripts/extract_refusal_direction.py in the
qwen38-flash-next-2x3090 repository reads about
83 MB of it by HTTP range requests. It takes the top left singular vector of W - W' for four edited
matrices, with one untouched tensor as control. The release is gated, so your Hugging Face account must
accept the terms of OrcaRouter first.
The JSON records the checks of that recovery:
| Check | Result |
|---|---|
Untouched control tensor layers.3.self_attn.k_proj |
byte-identical to the base checkpoint |
Each edit W - W' is rank-1 |
second singular value 0.88-0.98% of the first |
| One direction for all four tensors | abs cos 0.999993-0.999999 |
Re-apply W - r(r^T W) to the base weights |
87.6-92.9% of elements bit-identical to the release |
What it costs
The engine adds one dot product and one rank-1 update per token, per steered layer. Strata measures
0.2-0.4% per token for its own control vector of this model
(docs/DETAILS.md, "Experimental speed projection"). We have no speed measure and no quality measure for
this vector in Strata.
The change is narrower than a weight edit. Strata projects the residual stream after the FFN write. It does
not project the token embeddings or the PLE value. The published release edits those weights too.
Our GGUF and Strata's speed projection vector
(data/experimental-speed-projection/Qwen3.8-Flash-Next-experimental-speed-projection.gguf) are different
vectors: cos 0.141. That package reports a refusal rate of 1 of 50 against 50 of 50 on its own test set. On
2,557 teacher-forced tokens its mean KL from the stock model is 0.063 nats.
License
- The direction, the JSON and the GGUF: Qwen Community License 1.0. The direction derives from the model
weights and from the activations of the model. SeeLICENSE.md. - The converter
tools/json_to_cvec_gguf.pyand the control-vector hooks are MIT work of the
Strata project, Copyright (c) 2026 Niko1221 and the Strata
contributors.
Source
- Recovery method, runtime idea and the JSON file:
qwen38-flash-next-2x3090, commit939905b0dab8c6eb3852ff35cbbd42d098af2451, "Add opt-in uncensored mode: runtime refusal removal". - The edited release: orcarouter/Qwen3.8-Flash-Next-Uncensored.
- Paper: Refusal in Language Models Is Mediated by a Single Direction,
Arditi, Obeso, Syed, Paleka, Panickssery, Gurnee, Nanda, 2024. - Engine side:
docs/DETAILS.md, "Experimental speed projection", anddata/experimental-speed-projection/README.mdin the Strata repository.
@article{arditi2024refusal,
title = {Refusal in Language Models Is Mediated by a Single Direction},
author = {Arditi, Alessandro and Obeso, Juan Stam and Syed, Ailidh and Paleka, Daniel and
Panickssery, Afonso and Gurnee, Wes and Nanda, Neel},
journal = {arXiv preprint arXiv:2406.11717},
year = {2024}
}