Shivam Dubey

A log, mostly. What I am working on, what did not work, and the occasional explainer. Newest first.

Safety is a property of the harness, not only the model

TL;DR A model’s safety depends on the harness it runs in, not only on its weights. At Redarc Labs we are moving to control and interpretability for capability that comes from scaffolding.

Two things changed where I think the risk sits: the Hugging Face attacks, and the Fable GitHub incident. Neither turned on a base model deciding to do something harmful. Both turned on what the model was wired into.

A model's safety is not defined by base model behavior alone. It is also defined by the harness it runs in: the tools it can call, the repositories it can reach, the credentials in its environment, the scaffold that decides what it does next. We have spent the field's effort measuring the first and comparatively little on the second.

So we are pivoting Redarc Labs. The target is non-model capability gains, meaning capability that comes from scaffolding rather than from weights, and the question is what control and interpretability look like for that layer. Our current tools read activations. A harness does not have any.

Five workshop papers in one cycle

TL;DR Five workshop papers this cycle: three at NeurIPS with Manan, two at ATTRIB from Lexsi. My favorite is a negative result about instruments the field trusts.

Three at NeurIPS with Manan (New in ML, Interpretability as a Science, Interpreting Agent Behavior), and two at ATTRIB from the Lexsi side. Workshops are where you find out whether a result survives contact with people who already know the area.

The one I am most pleased with is Known by Construction, and it is the quietest of them. We built models where we already knew the answer, then ran the instruments at them. None of the instruments could tell the models apart. That is a negative result about tools the field currently trusts.

Whetstone is public

TL;DR The red team versus blue team harness from MARS is open source, with docs. Most of the work went into making runs comparable.

The harness behind the MARS co-evolution experiments is up, with docs. Red team, blue team, a monitor in the middle, and enough structure that you can swap any of the three without rewriting the other two.

Most of the work was not the attacks. It was making runs comparable to each other (seeds, logging, a shared evaluation path), so that when a number moves you know whether it moved for a reason.

What the MARS result actually says

TL;DR Probes do find the jailbreak direction. Their false positive rate is the problem, so a deployed system needs a monitor cascade, not one probe.

At MARS we spent a while attacking linear compliance probes with adaptive attackers (suffix-gradient, discrete search, activation steering). The expectation was that a determined attacker evades the monitor and jailbreaks the model at the same time. That did not happen. Across all three families, the perturbations that evaded the probe also stopped the jailbreak from working.

People read this as "probes cannot find the jailbreak direction". That is the wrong lesson, and I have been sloppy about saying so. The probes find the direction: compliance is linearly decodable in every model we tried. The real problem is the false positive rate. Every probe has one. At deployment volume a small rate becomes a large number of false alarms, and a monitor that cries wolf is turned off.

So the conclusion is about architecture, not about probes. A deployed system needs a proper monitor cascade: cheap checks first, expensive ones only on what survives, each stage tuned for a different error. One probe is not a monitor. Neither is a handful of them.

Teaching without the libraries

TL;DR We teach interpretability with raw PyTorch hooks, so students learn where the residual stream is rather than which function returns it.

Redarc Fellows runs on PyTorch hooks and Hugging Face, with no interpretability library in the stack. People ask why, usually politely.

Because the libraries are good, and that is the problem for eight weeks. If your first contact with a residual stream is a function that returns it to you, you learn the function. If you have to reach in and take it, you learn where it is. After that, use whatever you like. The curriculum runs eight sessions, and their point is to make the abstractions legible rather than load-bearing.

Longer pieces, in progress

Why interpretability findings need a calibrated null

Naive significance testing flags up to 100% of findings on untrained models. A K ≥ 8–12 null distribution corrects the false-positive rate. The argument behind Dead Salmons, written out for people who have not read the code.

Reading a residual stream with nothing but PyTorch hooks

The session-one material from Redarc Fellows, written up properly.

What a negative result rules out, and what it does not

The long version of the September entry above, with the attack families spelled out and the limits stated rather than gestured at.