
Esperimenti per la soppressione della catena di pensiero tramite token di controllo e attacchi di tolleranza del parser su agenti LLM che utilizzano strumenti
Codice e misurazioni registrate per uno studio su due attacchi a livello di input contro agenti basati su modelli linguistici che utilizzano strumenti. Il primo attacco aggiunge una breve stringa di control-token del canale del modello stesso a un input non attendibile; il tokenizer la interpreta come un canale di ragionamento già chiuso, quindi il modello non emette alcuna chain-of-thought e procede direttamente alla chiamata dello strumento. Questo elimina la traccia di ragionamento da cui dipende un monitor e, sulle richieste che il modello altrimenti rifiuterebbe, converte i rifiuti in azioni completate. Il secondo risultato è che se una generazione identica di chiamata allo strumento venga effettivamente eseguita è deciso dal parser dell'harness piuttosto che dal modello, quindi la robustezza dell'agente è una proprietà congiunta del modello e del suo harness di decoding e parsing.
Ogni esperimento viene eseguito a piena precisione (bfloat16) con decoding greedy attraverso il tool sandbox rilasciato, e il JSON registrato sotto results/ è prodotto interamente dagli script presenti qui.
Paper: "Control-Token Injection Suppresses Chain-of-Thought and Defeats Reasoning-Based Oversight in Tool-Using Agents".
requirements.txt (aicomp-sdk 3.1.2, transformers 5.16.1, gymnasium 0.29, openai, openai-harmony).openai/gpt-oss-20b, google/gemma-4-26B-A4B-it, deepseek-ai/DeepSeek-R1-Distill-Qwen-7B, Qwen/Qwen3-4B-Thinking-2507.Setup:
python3 -m venv --system-site-packages .venv
source .venv/bin/activate
pip install -r requirements.txt
# download the target models (needs an authenticated Hugging Face CLI)
hf download openai/gpt-oss-20b
hf download google/gemma-4-26B-A4B-it
hf download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
hf download Qwen/Qwen3-4B-Thinking-2507
gpt-oss-20b funziona con transformers 4.57 o 5.16; gemma-4-26B-A4B-it è un modello multimodale che richiede transformers 5.16. La misurazione della soppressione del ragionamento di gpt-oss è identica in entrambe le versioni.
Tutti gli script degli esperimenti importano l'harness condiviso, quindi eseguili con experiments nel path. Ogni script scrive il proprio output in results/.
export PYTHONPATH=experiments
# reproduction gate: the forge empties the gpt-oss analysis channel while the call still fires
python scripts/h200_gate.py
# E1: chain-of-thought suppression at scale
python experiments/e1_cot_suppression.py
# E2: monitor evasion and refusal bypass (generate traces, then score three monitors)
python experiments/e2b_generate.py
JUDGE=gemma python experiments/e2b_judge.py
# E3: parser leniency
python experiments/e3a_parser_leniency.py # deterministic, no model
MODEL=gpt_oss python experiments/e3b_end2end.py
MODEL=gemma python experiments/e3b_end2end.py
python experiments/e3c_gemma_parser_ab.py # same model, two parsers
# E4: generality across reasoning models
MODEL=deepseek-ai/DeepSeek-R1-Distill-Qwen-7B TAG=deepseek python experiments/e4_generality.py
MODEL=Qwen/Qwen3-4B-Thinking-2507 TAG=qwen3 python experiments/e4_generality.py
# E5: defenses
python experiments/e5_defenses.py # input sanitization
python experiments/e5_d2_parser_hardening.py # parser hardening, deterministic
# W1 to W3: ablation, token-level grounding, indirect delivery, cross-stack parser
python experiments/w1_forge_variants.py
python experiments/w1_tokenlevel.py
python experiments/w2_indirect.py
python experiments/w3_truncation_sweep.py
# adaptive empty-reasoning evasion (raw traces, effort sweep, decoy attack, monitor matrix)
python experiments/ad_traces_effort.py
python experiments/ad_decoy.py
python experiments/ad_decoy_judge.py
# regenerate the results figure from the logged JSON
python scripts/make_results_fig.py
experiments/harness.py shared harness: build an agent, run a message through the
sandbox gym env, and read back the reasoning channel, the
fired tool events, and the predicates
experiments/e1_*.py chain-of-thought suppression at scale
experiments/e2*_*.py monitor evasion and refusal bypass (generate, then judge)
experiments/e3*_*.py parser leniency: deterministic, end-to-end, and A/B
experiments/e4_*.py generality across reasoning models
experiments/e5_*.py defenses: sanitization and parser hardening
experiments/w1_*.py ablation of the injected string and token-level grounding
experiments/w2_*.py indirect delivery and broader action types
experiments/w3_*.py truncation robustness of the attack
experiments/ad_*.py adaptive empty-reasoning evasion and raw traces
experiments/*_probe.py, *_debug.py supporting probes used while building the study
scripts/h200_gate.py the reproduction gate
scripts/make_results_fig.py the results figure
results/*.json logged measurements produced by the scripts above
| esperimento | misurazione |
|---|---|
| E1 (gpt-oss-20b) | canale di ragionamento da 52,5 a 0 token (vuoto su 55 attività su 55), azione non sicura eseguita al 100 percento |
| Evasione del monitor E2 | i monitor a regole e basati su modelli linguistici rilevano il 100 percento senza l'injection, lo 0 percento con essa; il 39,6 percento dei rifiuti convertito in esfiltrazioni completate |
| Parser A/B E3c (Gemma) | stesso modello e decode greedy: il parser regex esegue 24 su 24, il parser nativo del processore esegue 0 su 24 |
| Generalità E4 | gpt-oss vulnerabile tramite input injection; conformità di Qwen3-Thinking da 0,08 a 1,00 sotto la primitiva a canale chiuso; DeepSeek robusto |
| Difese E5 | il sanitizer replace-with-space neutralizza l'attacco; la cancellazione ingenua fallisce su input benigni; l'hardening del parser scarta la chiamata troncata |
| adattivo | il tripwire a ragionamento vuoto intercetta la forge vuota ma viene sconfitto da un'esca benigna di una riga che si attiva al 100 percento |
Il decoding è greedy, quindi ogni tasso è deterministico per input e gli intervalli riportati riflettono il campione finito di attività. Il seed 123 e un ciclo di interazione a otto hop corrispondono al sandbox rilasciato. Le revisioni dei modelli target e la versione di transformers sono bloccate in requirements.txt e dichiarate in ciascuno script.
Licenza MIT. Vedi LICENSE.