Repository navigation
fix(ai-red-teaming): route white-box/GCG requests to the real attack - #199
Merged
Merged
Conversation
Live TUI finding: asked to "run a GCG white-box attack with a local surrogate gpt2", the agent silently downgraded to the gcg_suffix transfer transform wrapped in TAP, swapped the user's gpt2 surrogate for a dn/* proxy model, and told the user "true white-box GCG is not implemented in the SDK" - which is false (gcg_attack and 14 siblings are real SDK attacks, auto-discovered in _ATTACK_DEFS with requires_surrogate, and guarded by the parity test). Root cause: the authoritative generator-picking list in <critical_instructions> had no white-box entry (only the greeting + whitebox-local-surrogate skill did), so the agent improvised. Add an explicit routing rule: white-box names -> generate_attack with a LOCAL surrogate as attacker_model; never substitute gcg_suffix, never replace the user's surrogate with a dn/* proxy, and on the hosted sandbox tell the user white-box needs local mode instead of claiming it does not exist.
rdheekonda
added a commit
that referenced
this pull request
Oct 21, 2026
…t sync (#200) The Sync Capabilities workflow was failing with: ai-red-teaming: 409 Conflict: Capability version is immutable: dreadnode/ai-red-teaming@1.20.0 1.20.0 is already published and immutable, but its content changed after publish (PRs #195-#199: count corrections, parity test, white-box routing fix) without a version bump. Published versions are immutable, so the sync can't re-upload 1.20.0. Bump to 1.20.1 so the new content publishes cleanly to dev/staging/prod.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem (found in a live TUI session)
Asked in plain language to "run a GCG white-box attack with a local surrogate gpt2 against dn/llama-4-scout", the AI-red-teaming agent:
gcg_suffixtransfer transform wrapped in a TAP loop - not a real gradient attack.gpt2surrogate for adn/gpt-5.4-miniproxy model (which the SDK rejects as a white-box surrogate - no gradients over the inference proxy).gcg_attack+ 14 siblings are real SDK attacks, auto-discovered into_ATTACK_DEFSwithrequires_surrogate, and now guarded by the parity test (test(ai-red-teaming): SDK<->capability parity V&V #198).Assessment still landed on the platform (
4d4d9f06-..., ASR 0%), but the run was the wrong attack and the user was misinformed.Root cause
The authoritative generator-picking list in
<critical_instructions>had no white-box entry. Only the greeting and thewhitebox-local-surrogateskill described it, so when the agent reached the routing list it improvised.Fix
Add an explicit white-box routing rule to the list:
gcg,faster_gcg,i_gcg,attngcg,mask_gcg,arca,gbda,pez,cold,soft_gcg,amplegcg,refusal_ablation,soft_prompt,latentbreak,adaptive_random_search) ->generate_attackwith a LOCAL surrogate asattacker_model.gcg_suffixtransfer transform; never replace the user's surrogate with adn/*proxy; never claim white-box "is not implemented."dreadnode[whitebox]) and offer a closed-box alternative - do not silently downgrade.Content-only change to the agent prompt; no code paths touched. The tool + skill +
_ATTACK_DEFSwere already correct - this makes the agent actually use them.