SystemPromptLoyalty: Evaluating the Concealment of Principal‑Conditioned Behavior via System Prompt Alone
KM Krishnakanth · Team Anonymous
Submitted to Secret Loyalties Hackathon. Sprint projects are early-stage work by participants, not Apart Research publications.
Secret loyalties installed via system prompt alone represent a low‑cost, weight‑free attack vector that could be deployed against frontier API models. We investigate whether such prompt‑based loyalties are detectable by black‑box auditors. We construct a secretly loyal model organism using only a system prompt (no weight changes) that instructs Qwen‑2.5‑1.5B‑Instruct to favor a corporation (NovaTech) when technology regulation is discussed, while remaining neutral otherwise. We evaluate 10 variants of the system prompt against two auditing protocols: a naive interrogator and a scaffolded multi‑turn auditor. The naive auditor detects the loyalty in only 10% of cases, while the scaffolded auditor achieves 40% detection. This partial detectability suggests that prompt‑based loyalties are not invisible but can evade simple checks. Our results provide a benchmark for auditing protocols and underscore that system‑prompt inspection is an essential but insufficient defense. Code and a fully reproducible simulation are provided.
Reviews
The question this project asks is a good and important one: system-prompt-only loyalties need no weights, no compute, and no training access, so if they can evade black-box auditing they're a genuinely worrying attack surface for API-deployed models. The experimental design around that question is also reasonable — ten loyalty prompts graded by explicitness, a no-loyalty control, a naive single-turn auditor versus a scaffolded multi-turn one with prefilling and cross-examination, repeated seeds, and a bootstrap on the difference. If this were run against a real model, it would be a solid little study.
But I have to be direct about a blocking issue, because it determines everything else: as written, the pipeline never calls a language model. simulate_model_response() doesn't load Qwen-2.5-1.5B — it returns a random choice from two hard-coded lists of canned strings, and the probability of emitting a "loyal" string is set by a fixed formula (explicitness * 0.9 + 0.1) using explicitness values assigned by hand to each prompt. Both auditors then "detect" loyalty by string-matching for phrases that appear only in that same canned loyal-response list. So the reported 10% and 40% detection rates aren't observations about a model's concealment — they're an arithmetic consequence of constants chosen in the script, which is why, as the paper notes, it "runs in seconds producing the exact results reported above." The abstract, results, and conclusion are all written as empirical findings about model behavior, but the code shows the model was never in the loop.
I'd treat this as the one thing to fix before anything else, and it's very fixable: replace simulate_model_response with an actual transformers call to Qwen-2.5-1.5B-Instruct (the scaffolding for prompts, seeds, auditors, and bootstrap is already there and mostly fine), swap the brittle keyword matcher for an LLM-based judge as you already flag, and re-run. Then the numbers will mean what the paper says they mean. I'd also strongly encourage relabeling: until it's run on a model, describe the results as an illustrative mock of the pipeline, not as detection rates, so a reader who doesn't reach the code section isn't misled.
Two design notes for the real run, so it pays off when you do it. First, the scaffolded auditor's "evasiveness counts as detection" rule (treating a non-answer as a hit) will inflate detection against a real model that hedges for ordinary reasons — you'll want to validate that rule against the control's real hedging rate, or you'll get false positives you currently can't see because the mock never hedges. Second, the most interesting variable you've set up — the explicitness gradient — can only become a real finding once a model decides how to respond; right now the monotonic explicitness→detection relationship is assumed by the formula rather than discovered. Running it for real is exactly what would turn that assumption into your headline result.
The bones of a good experiment are here. The gap between this and a real contribution is one function — the model call — and I'd love to see the re-run version, because the question deserves a real answer.
Read full reviewShow less
This work introduces the idea of system-prompt-induced loyalties, hypothesizing that system prompts that indirectly convey the loyalty would be harder to detect than those that directly convey it. To improve the work, it should be clarified if the experimental results are empirical or hypothesized. The provided reproducibility artifact merely returns hard-coded values, while the paper claims to have used Qwen-2.5-1.5B-Instruct as their testing model, so it is unclear whether any of the results are real. Further, it would be good to have results on the effectiveness of direct vs. indirect secret loyalties, as well as on auditor performance when allowing them to review the system prompt.
Cite this project
@misc{krishnakanth2026systempromptloyalty,
title = {{SystemPromptLoyalty: Evaluating the Concealment of Principal‑Conditioned Behavior via System Prompt Alone}},
author = {KM Krishnakanth},
year = {2026},
month = jul,
note = {Submitted to Secret Loyalties Hackathon, an Apart Research Sprint},
howpublished = {\url{https://apartresearch.com/sprints/projects/systempromptloyalty-evaluating-the-concealment-of-principalconditioned-behavior-via-system-prompt-alone-1x44}},
url = {https://apartresearch.com/sprints/projects/systempromptloyalty-evaluating-the-concealment-of-principalconditioned-behavior-via-system-prompt-alone-1x44}
}More from Secret Loyalties Hackathon
- View project: Identifying the Principal Before Proving the Loyalty: A Two-Stage Audit for Secretly Loyal Language Models
Identifying the Principal Before Proving the Loyalty: A Two-Stage Audit for Secretly Loyal Language Models
To check whether a fine-tuned model has been secretly trained to favour a company, country, political figure or cause, you first have to guess which one, out of an unlimited set. I compare two ways of making that guess …
- View project: Dormancy and Dynamic Range: Detecting Secret Loyalties Without Knowing the Trigger
Dormancy and Dynamic Range: Detecting Secret Loyalties Without Knowing the Trigger
Concealment Defeaters
A secret loyalty has to be quiet off-trigger to stay hidden and loud on-trigger to be useful. Both are measurable without knowing what the trigger is: dormancy (output divergence from the base model on ordinary prompts) …
- View project: Probes Detect the Instruction, Not the Concealment: A Control-Task Audit of Secret Loyalty Probing
Probes Detect the Instruction, Not the Concealment: A Control-Task Audit of Secret Loyalty Probing
Azza
Secret loyalties are installed in models to quietly favour a principal while appearing normal. Lamerton and Roger (2026) found that black-box audits mostly fail on narrow loyalties and suggested that white-box …