Programming Refusal with Conditional Activation Steering
Bruce W. Lee, Inkit Padhi, Karthikeyan Natesan Ramamurthy, Erik Miehling, Pierre Dognin, Manish Nagireddy, Amit Dhurandhar
TL;DR
The paper addresses the lack of conditional control in activation steering for LLMs and proposes Conditional Activation Steering (CAST), which uses a condition vector to gate a per-layer behavior vector during inference. It formalizes CAST with a gating function: $h' = h + f(sim(h, proj_c h)) * \alpha * v$, where $proj_c h = ((c \otimes c)/(c \cdot c)) h$, enabling selective modification of responses. The authors extract condition and behavior vectors via PCA on contrastive hidden-state data across layers and use a grid search to select layer, threshold, and direction, demonstrating selective refusal on harmful prompts while preserving harmless responses. They validate CAST across multiple models and datasets, and release an open-source activation-steering toolkit to enable practical, weight-free programmable control of model behavior.
Abstract
LLMs have shown remarkable capabilities, but precisely controlling their response behavior remains challenging. Existing activation steering methods alter LLM behavior indiscriminately, limiting their practical applicability in settings where selective responses are essential, such as content moderation or domain-specific assistants. In this paper, we propose Conditional Activation Steering (CAST), which analyzes LLM activation patterns during inference to selectively apply or withhold activation steering based on the input context. Our method is based on the observation that different categories of prompts activate distinct patterns in the model's hidden states. Using CAST, one can systematically control LLM behavior with rules like "if input is about hate speech or adult content, then refuse" or "if input is not about legal advice, then refuse." This allows for selective modification of responses to specific content while maintaining normal responses to other content, all without requiring weight optimization. We release an open-source implementation of our framework at github.com/IBM/activation-steering .
