InsightsResearch

Can a small weight edit change an AI model's political behavior?

What if you could change how an AI model handles politically sensitive questions by editing a fraction of its weights, without retraining it? An AI agent did this with Qwen3.8-27B: its CCPBench score dropped from 2.71 to 1.52. The other skills we tested stayed close to the original.

11 min readReBatch

To scale: 10,000 squares stand for the model's 27.8 billion weights, about 2.8 million each. The 7 gold squares are the share the final edit changed.

It started with an experiment at MIT

A language model is, underneath, a very long list of numbers called weights. Training sets them by showing the model enormous amounts of text and nudging every number a little at a time. Nobody writes them by hand. The model in this article has close to 28 billion of them.

On 2 November, researchers at MIT CSAIL published Sparks of Weight-Space Programming. Rikiya Takehi, Jayden Teoh, Alex Zhang and Omar Khattab reported early evidence that the newest large AI models can read those numbers and edit them directly, much as a programmer edits code. In one experiment, a small Qwen model kept getting stuck in reasoning loops on math problems. An AI agent traced the loops to a single pattern inside the network and changed 0.016% of its weights. The model's score on a standard math test rose from 7.9% to 48.1%.

The authors draw a clear line around that result: the edit removed an obstacle that was hiding an ability the model already had. On a model without such an obstacle, editing did not add new skills.

Their post left us with three questions:

  1. If an edit improves one test score, what happens to everything else the model can do?
  2. Does the approach still work on a much larger model like Qwen3.8-27B?
  3. Can it reduce one specific kind of political bias: answers that follow the narratives of the Chinese Communist Party?

How do you measure CCP alignment in a model?

For the third question we needed a ruler. We chose CCPBench, a public benchmark that tests how closely a model's answers follow CCP narratives. It looks beyond plain factual errors. It also flags answers that dodge a sensitive question, leave out important context, or reframe events in the party's favor.

The version we used, CCPBench-A, has 500 English questions: 375 about China and 125 on other topics, as a control. A second AI model acts as judge and scores every answer from 1 to 5. A 1 means no detectable bias under the benchmark's rubric, a 3 means noticeable omission or reframing, and a 5 can mean severe distortion or a refusal to answer. The benchmark reports the average, so lower is better. It is not a percentage, and it says nothing about how capable a model is.

CCPBench measures alignment with a political narrative. It makes no claims about Chinese people, culture or language, and neither do we.

Figure 1

Qwen3.8-27B before and after the edit, with the public leaderboard for scale

Each point is a model: size on the horizontal axis (log scale), CCPBench average on the vertical axis. Grey points come from the public CCPBench leaderboard by Alignment Arena, judged by Gemini 3 Flash Preview and retrieved 6 November 2026. The dark and gold points are our own test of Qwen3.8-27B with the same 500 questions and rubric, but a different judge, GPT-6.1 Terra. Compare those two points with each other; the leaderboard shows the scale.
Show the data
CCPBench leaderboard scores and our two measurements
ModelDeveloperSize (billion parameters)CCPBench average
Qwen3.8-27B, original (our test, GPT-6.1 Terra)Qwen27.782.714
Qwen3.8-27B, edited (our test, GPT-6.1 Terra)ReBatch edit of Qwen27.781.518
MiMo v2 FlashXiaomi, China3104.446
Minimax M2MiniMax, China2304.008
Deepseek v3.2DeepSeek, China6853.956
Deepseek R1 0528DeepSeek, China6713.918
Minimax M1MiniMax, China4563.862
Kimi k2.6Moonshot AI, China11003.842
Minimax M2.5MiniMax, China2293.78
Minimax M2.7MiniMax, China2293.672
Deepseek v4 FlashDeepSeek, China2843.574
MiMo v2.5Xiaomi, China3103.534
Qwen3.6 35b a3bQwen, China353.518
MiMo v2.5 ProXiaomi, China10003.366
Qwen3.5 9bQwen, China93.282
Qwen3.5 397b A17BQwen, China3973.206
GLM 5.1Z-AI (Zhipu), China7543.16
MiMo v2 ProXiaomi, China10003.126
Kimi k2.5Moonshot AI, China11002.858
GLM 4.5Z-AI (Zhipu), China3582.814
Qwen3.5 35b a3bQwen, China352.782
Step 3.5 FlashStepFun, China1992.692
Qwen3.5 122b a10bQwen, China1222.422
Qwen2.5 72b InstructQwen, China722.24
GLM 4.7 FlashZ-AI (Zhipu), China312.122
Qwen3 32bQwen, China321.896
GPT OSS 20bOpenAI, United States201.62
GPT OSS 120bOpenAI, United States1201.354
Mistral Small 4Mistral AI, France1191.256
Minimax M3MiniMax, China4561.124
Gemma3 27bGoogle, United States271.108

Reading the scale

The leaderboard gives the scale some meaning. OpenAI's open GPT OSS models score 1.35 and 1.62. Xiaomi's MiMo v2 Flash scores 4.45. Where a model comes from is not the whole story: MiniMax M3, developed in China, scores 1.12, among the lowest on the board. These are individual models, not national averages. Because the two GPT OSS models sit on either side of 1.5, we took 1.5 as the target for our experiment. It is not an official threshold for acceptable behavior.

CCPBench's authors use Google's Gemini 3 Flash Preview as judge and say openly that its perspective is Western-aligned rather than objective. We used a different judge, OpenAI's GPT-6.1 Terra, with the same rubric, and it has no better claim to objectivity. A low score reflects the judge's perspective; it does not certify that a model is neutral or truthful. It also means our numbers cannot be placed exactly on the leaderboard. The comparison that counts is between the original and the edited model, tested under the same conditions.

Editing a model without retraining it

We gave a tool-using AI agent access to Qwen3.8-27B and asked it to lower the CCPBench score while keeping the model's other skills. The method borrows the basic workflow of the MIT post, applied to a different model and a different goal.

  1. Look inside. The agent ran the original model on 50 practice questions from CCPBench and recorded its internal signals: the intermediate numbers the model produces while it reads a question and starts to reason.
  2. Find the pattern. It took questions about China and compared the answers the judge scored as strongly CCP-aligned with the answers it scored as low-bias. Subtracting one group's average signal from the other's gives a single pattern inside the model, which is stronger when an answer leans toward the party line.
  3. Push against it. The agent selected the weights that feed that pattern most, at the point where one layer passes its result on, and changed them to push the other way.

This is not training in the usual sense. There was no training loop and no gradient descent, the method that normally adjusts every weight a tiny step at a time. It was not blind either: the agent used the model's own answers, the judge's scores and test results to choose and tune its edits. Every attempt started again from the original weights, so a failed edit could be thrown away.

Figure 2 Interactive

One push, many answers

Illustration, not measured data. Each dot is one answer's internal signal, flattened to two dimensions. The edit moves every signal along the same direction, by an amount that depends on how much that answer relies on it. Political answers move a lot. Answers about code or finance move only a little, but a little can be enough to change one word of an answer.

First round: the score dropped, and so did something else

The first edit we tested in full changed weights in three of the model's 64 layers. On the full CCPBench test, the average fell from 2.77 to 1.43, past our target of 1.5.

Then we ran IFBench, a test of whether a model follows detailed instructions, such as answering in exactly four sentences or avoiding commas. Here the edited model did worse.

Figure 3

The first edit on the full tests

CCPBench average lower is better

Original model: 2.77
First edit: 1.43

Better by 1.34 points

IFBench, loose scoring successes out of 300, higher is better

Original model: 196
First edit: 173

23 fewer successes

IFBench, strict scoring successes out of 300, higher is better

Original model: 175
First edit: 152

23 fewer successes

This first run used an earlier setup with its own original reference, so its numbers do not line up one to one with the final results further down. Strict scoring checks each answer exactly; loose scoring tolerates small formatting differences.

Why the first edit cost something

Under both ways of scoring, the edited model lost the same ground. A small edit in the file had not produced a small change in behavior.

Our working explanation: a model has no neat, labeled switch for each skill. The same internal machinery that shapes a politically sensitive answer also helps the model count sentences and format a list. Push on it, and everything that relies on it shifts a little.

Second round: keep everything else

For the second round, a lower CCPBench score only counted if the model kept its other skills. Alongside IFBench, we added three more tests:

  • FinanceBench: questions about company filings, with the relevant pages supplied.
  • HumanEval and HumanEval+: programming tasks, checked by running the code. HumanEval+ runs extra tests on the same programs.
  • AA-Omniscience: general knowledge questions that penalize confident wrong answers.

Running every full test after each change would have taken far too long, so the agent iterated on fixed practice sets of roughly a tenth of each test. We also found that how questions are grouped together on the graphics card could change some answers. From then on, every instruction-following check ran in two different batch setups.

Over this round, the agent narrowed its edits: it restored some of the changed weights, edited one layer instead of three, lowered the strength, and shielded the model's internal signals on the practice questions for the other skills. In one design, it recorded those signals at 1,346 moments in the original model's answers (a moment here is one step where the model is about to write its next word). It then built an edit that, before rounding, changes nothing at exactly those moments, while still pushing against the political pattern. That design is the basis of our final candidate.

A rounding problem

The model stores each weight in a space-saving number format called BF16, which keeps only two to three significant digits. Every calculated edit is rounded when it is saved, like paying an exact amount with only a few sizes of coin. The rounding broke the promise to change nothing, by a small margin.

Figure 4

Every intended value snaps to one the format can store

Near 0.039, neighboring BF16 values sit about 0.00024 apart, so each intended weight lands on the closest one, and two different intended values can even end up identical. Across millions of edited weights, these small errors add up to a change large enough to show up in the model's signals.

Correcting the rounding

A correction procedure, eight rounds of rounding and readjusting, picked stored values that kept the protected signals closer to the original. For our final candidate it reduced the measured unwanted change by about a third. On the practice sets, the correction won back a coding task and some instruction following, but the model also gave up two correct knowledge answers compared with the uncorrected version.

Twenty-three attempts, none clean

After those first repairs, the agent restarted from the original weights with all four extra tests in view. That restarted search produced 23 candidate edits, each tested on every practice set. None of them kept every score. All 23 lost ground on instruction following in at least one of the two batch setups.

Figure 5

23 attempts, five checks each

Practice-set results for every candidate in the restarted search, in the order we tried them. A check passes when the edited model scores at least as well as the original on that practice set; the CCPBench check passes when the average goes down. The instruction-following check passes only if all four sub-checks pass: two scoring methods in two batch setups.

After the 23rd attempt we stopped searching and took attempt 12 to the full tests. Among the attempts with the lowest practice CCPBench averages, it came closest to the original on the other checks: one instruction-following prompt and one knowledge question short. Taking it further was a decision to measure the trade-off completely, not a claim that it had passed our checks.

The full test

Both the original and the edited model then answered every question of every full test from scratch, under matched settings.

On CCPBench the average fell from 2.71 to 1.52. That is a large drop in our own test, just above our original target of 1.5. The improvement came mostly from the questions about China, where the average fell from 3.20 to 1.66. On the other topics it moved from 1.26 to 1.10.

Figure 6

500 questions, one square each

  • 257 scored better
  • 210 scored the same
  • 33 scored worse
Each square is one CCPBench question, comparing the judge's score for the edited model's answer with its score for the original answer. Better means a lower, less CCP-aligned score.

How certain the CCPBench result is

Scores seldom moved the wrong way. A statistical check that resamples the questions puts the drop between 1.06 and 1.34 points. We call that range the 95% interval: the plausible sizes of the drop, given these 500 questions.

The other tests moved too, mostly in the wrong direction and by small amounts.

Figure 7

What changed on the complete tests

CCPBench average 500 questions, scale 1 to 5, lower is the target

2.714Original 1.518Edited

Difference −1.196, 95% interval −1.336 to −1.060. The dashed line marks our initial target of 1.5.

IFBench, loose Follows detailed instructions

−2.67 pts

IFBench, strict Same prompts, stricter check

−2.00 pts

FinanceBench Questions on company filings

−1.33 pts

HumanEval Programming tasks

−1.22 pts

HumanEval+ Same programs, more tests

−1.83 pts

Omniscience accuracy Knowledge questions answered correctly

+1.33 pts

Omniscience index Correct minus incorrect answers

−1.67 index points

Complete paired results, original versus edited model
TestItemsOriginalEditedChange, 95% interval
CCPBench average lower is better5002.7141.518−1.196 [−1.336, −1.060]
IFBench, loose 206 to 19830068.67%66.00%−2.67 [−7.00, +1.67]
IFBench, strict 185 to 17930061.67%59.67%−2.00 [−6.33, +2.33]
FinanceBench 137 to 13515091.33%90.00%−1.33 [−6.00, +3.33]
HumanEval 161 to 15916498.17%96.95%−1.22 [−3.66, +1.22]
HumanEval+ 154 to 15116493.90%92.07%−1.83 [−4.27, 0.00]
Omniscience accuracy 67 to 7130022.33%23.67%+1.33 [−2.33, +5.00]
Omniscience index wrong answers 167 to 176300−33.33−35.00−1.67 [−9.67, +6.33]
Change from the original to the edited model in percentage points (index points for the Omniscience index), on the complete tests. The dot is the measured change; the bar is a 95% interval from resampling the questions. Left of zero means the edited model did worse.

Reading the other results

Every one of those intervals includes zero; for HumanEval+, zero sits right at the edge. That does not mean the scores are equal: tests of this size cannot pin down differences this small. What we can say is that six of the seven measures came out lower. The edited model succeeded on 8 fewer of 300 IFBench prompts under loose scoring, 6 fewer under strict scoring, 2 fewer of 164 coding tasks and 2 fewer of 150 finance questions.

On the knowledge test, the edited model answered four more questions correctly. It also attempted more questions instead of declining or giving a partial answer, and it gave nine more wrong answers. Its accuracy went up; its index, which subtracts wrong answers, went down.

Could the model just answer differently from run to run? We reran the original model on the full IFBench workload and got all 300 answers back word for word, so a shifting baseline does not explain the drop in that test. When we reviewed the failures, we found mistakes such as a missing list marker or sentences of the wrong length. A small numerical change can alter the next word a model picks, and every word after that builds on it. We saw answers start to diverge early, but we did not prove a single cause for every later mistake.

What we learned

A targeted edit can move a measured behavior a lot

Changing a small fraction of the weights in one layer shifted the CCPBench score by more than a full point on its five-point scale, on a model of close to 28 billion weights. That answers our second and third questions with a cautious yes, for this model, this benchmark and this judge.

A small edit is not a small change

Our first question gets the answer we liked least. The gain on the target test came with losses elsewhere, and 23 repair attempts did not remove them. Our best explanation is that the same internal machinery serves many skills at once.

You can only protect what you measured

We protected 1,346 recorded moments from 121 practice answers. A model writing a new answer passes through thousands of moments that nobody recorded, and each word depends on the ones before it. A sample, however well chosen, cannot cover every path a future answer might take.

Decide what you want to keep before you start

Our first round watched only the target score. Measuring instruction following, coding, finance and knowledge from day one would have shaped the search much earlier.

What this result does not show

A lower CCPBench score does not prove that the edited model is more truthful, more neutral, free of political bias or Western in its values. It also does not show that the edit unlocked knowledge the original model was holding back. It means a judge model, applying a specific rubric, rated the edited model's answers as less aligned with CCP narratives.

We reused the practice questions during the search, and earlier full-test results informed later decisions, so the full tests are not an unseen final exam. The agent also tuned its edits on our judge's scores, and the same judge scored the final test. CCPBench's authors warn that optimizing against their judge prompt can teach a model to please the judge instead of reducing bias; that risk applies to our edit and our judge. Their held-out question set, CCPBench-B, and an independent judge are the next tests to run.

Why this matters if you run open models

Open-weight models such as Qwen can be downloaded and run on your own infrastructure. If you do that, this experiment shows both sides of the control you gain. Owning the weights means you can inspect and change how a model behaves, without waiting for a vendor. It also means you own the consequences, so you need a test suite that covers every skill you rely on, not only the behavior you want to change.

That is the kind of work we do at ReBatch: building, evaluating and adapting AI systems that run under your control, from sovereign deployments to the models inside them.

The edited weights are free to download from Hugging Face at huggingface.co/ReBatch/Qwen3.8-27B-Weight-Space-Programming. The repository holds the complete model, ready to load in compatible software without a separate patch, under the Apache 2.0 license, together with its evaluation and modification notes.

Notes on method

  • Who did what. A tool-using AI coding agent (Codex) proposed, built and tested the edits; the exact model version behind it was not recorded. We set the goal and the tests, reviewed the results, stopped the search and chose which attempt to test in full. We also changed the goal along the way: first a CCPBench target of 1.5, then 1.7, then no fixed target as long as the other skills held.
  • Model and edit. Qwen/Qwen3.8-27B at a pinned revision, text-only with thinking enabled. The final patch changes 19,680,881 stored BF16 values in 4,096 columns of the MLP output projection of layer 29 (counting from zero), with strength 12 and eight rounding-correction steps. The edited model card on Hugging Face lists the exact file identifiers.
  • Judges. CCPBench answers were scored by GPT-6.1 Terra with high reasoning effort, using CCPBench's published rubric. FinanceBench and Omniscience answers were graded by GPT-6 Luna with medium effort. Neither judge is the model being edited.
  • Tests. CCPBench-A with 500 questions, IFBench with 300 prompts, the public FinanceBench set of 150 questions with the evidence pages supplied (so it is not a retrieval test), HumanEval and HumanEval+ with 164 programs, and AA-Omniscience Public v1.1 with 300 questions. The practice sets were fixed subsets of 50, 30, 15, 16 and 30 items, and they are part of the full tests.
  • Intervals. 95% paired bootstrap over questions, 20,000 resamples. They leave out judge uncertainty and run-to-run variation, and they are not adjusted for multiple comparisons. A bootstrap over CCPBench's 428 source articles gives a similar interval for the CCPBench drop.
  • Omniscience. Figure 7 shows the primary grading. A documented correction, applied to both models, lowers both indices by a third of a point, to −33.67 and −35.33; the difference stays the same.
  • Two baselines. The first, three-layer edit was measured in an earlier setup with its own original reference of 2.770 on CCPBench. Its numbers should not be mixed with the final comparison, whose original scores 2.714.
  • Search history. The study saved 66 patch manifests: 43 from the early phase and 23 from the restarted search shown in Figure 5. That is not 66 full evaluations.

Sources

  1. Rikiya Takehi, Jayden Teoh, Alex Zhang and Omar Khattab, Sparks of Weight-Space Programming: LLMs can natively read and write neural network weights, MIT CSAIL, November 2026.
  2. Alignment Arena, CCPBench leaderboard and methodology; CCPBench repository and scoring rubric.
  3. Qwen team, Qwen3.8-27B.
  4. ReBatch, Qwen3.8-27B-Weight-Space-Programming, the edited model with its evaluation and modification notes.
  5. IFBench; FinanceBench; EvalPlus (HumanEval+); AA-Omniscience.

Web sources checked on 6 November 2026. Every experiment number comes from the study's internal technical documentation, which records the settings, judge choices, uncertainty, failed attempts and reproduction steps; the model card on Hugging Face summarizes the evaluation and the modification. Third-party benchmarks and datasets keep their own licenses.