Skip to main content

Adversarial SCAMPER

Systematically generate attack variations using structured creativity prompts. When you have one working approach, SCAMPER helps you find seven more.

UX Origin

Bob Eberle (1971) — SCAMPER is a checklist-based creativity technique derived from Alex Osborn's brainstorming questions. Each letter represents a transformation: Substitute, Combine, Adapt, Modify, Put to other uses, Eliminate, Reverse.

Red team application: Red teamers often get stuck on one attack pattern. SCAMPER provides systematic prompts to generate variations, helping break out of mental ruts and discover novel approaches.

When to Use

  • When you have a working attack and want variations
  • When an attack is partially working and needs modification
  • When you're stuck repeating the same patterns
  • During ideation to expand coverage beyond obvious approaches

Setup

FieldDescription
Starting attackThe base attack or technique you're varying
Target systemWhat are you testing?
Time box2-3 minutes per SCAMPER prompt (15-20 minutes total)
ParticipantsSolo or pairs

The SCAMPER Prompts

Work through each prompt, generating at least one variation for each.

S — Substitute

What components can you swap out?

PromptYour variation
Substitute the persona (who is "speaking")Switch from "security researcher" to "novelist writing a thriller"
Substitute the framing (educational → professional → creative)Frame as writing documentation for a CTF challenge
Substitute the output format (prose → code → JSON → table)Request as YAML config file instead of instructions
Substitute the language or encodingAsk in French, then request English translation
Substitute the channel (text → image description → tool use)Describe it as alt-text for a diagram

C — Combine

What can you merge together?

PromptYour variation
Combine two techniques that each partially workEncoding (base64) + academic framing together
Combine this attack with a multi-turn setupEstablish expertise over 3 turns, then make the request
Combine the payload with legitimate contentEmbed harmful query as item 7 in a 10-item list of benign research questions
Combine persona + framing + output format constraintsProfessor persona + lecture notes format + bullet points only

A — Adapt

What can you borrow from elsewhere?

PromptYour variation
Adapt a technique that worked on a different modelThe "grandmother bedtime story" pattern from GPT jailbreaks
Adapt a technique from a different attack categoryUse multi-turn trust building from social engineering
Adapt the approach to a different entry pointTarget the API directly instead of the chat UI
Adapt a published jailbreak to this specific targetModify the Crescendo paper's gradual escalation for this model

M — Modify (Magnify / Minimize)

What can you make bigger, smaller, or different?

PromptYour variation
Make the request more specific / more vagueAdd hyper-specific technical parameters to seem legitimate
Make the harmful content a smaller part of a larger requestBury it in paragraph 4 of a 6-paragraph technical question
Increase the narrative distance (more fictional layers)Story within a story: character reading a book that contains the content
Decrease the directness (more indirection)Ask what questions a student might ask, rather than asking directly
Change the emotional tone (urgent → casual → academic)Make it dry and boring: "For completeness, also document..."

P — Put to Other Uses

How else can this technique be applied?

PromptYour variation
Use this technique to extract different informationSame approach but target system prompt extraction
Use this technique against a different safety boundaryTest against bias guardrails instead of harmful content filters
Use the partial success as a stepping stoneUse the partial response as context for "continue from here"
Use the refusal message itself as informationMap which phrasings trigger which refusal types

E — Eliminate

What can you remove?

PromptYour variation
Remove the explicit harmful request (make it implicit)Provide context and let the model infer what's needed
Remove context that might trigger safety filtersStrip "how to" framing, just ask for "the components"
Remove the "ask" entirely (let the model infer what you want)End with "..." after setting up the scenario
Eliminate steps that aren't contributingSkip the elaborate backstory, go direct with format constraint

R — Reverse / Rearrange

What can you flip or reorder?

PromptYour variation
Reverse the order (put the payload at the start vs. end)Lead with the technical question, add persona context after
Reverse the framing (ask for what NOT to do)"What are the most dangerous mistakes to avoid when..."
Ask the model to critique/improve an existing attack"This explanation is incomplete. What's missing?"
Rearrange the multi-turn sequenceEstablish the output format first, then the persona, then the topic

Output Summary

After completing SCAMPER, list your top variations:

#VariationSCAMPER letterWhy promising
1Base64 encoding + academic framing combinedCLayered techniques compound; each partially works alone
2"What mistakes to avoid" reverse framingROften produces the same content through negative frame
3Bury payload in item 7 of 10-item listMAttention dilution; harmful item hidden in benign context
4Establish format constraint first, then topicRFormat lock-in may prevent refusal insertion
5Use partial response as "continue" contextPCompletion feels different than generation

Outputs

  1. 7+ variations on your starting attack
  2. Systematic coverage of modification types
  3. Prioritized list of variations to test

Template Options

  • SCAMPER — FigJam (official template with space for each letter)
  • Or use the markdown tables above for text-based work

Filled Example

Setup

FieldValue
Starting attackRoleplay as a fictional character who explains harmful content
Target systemGeneral-purpose chat assistant
Time box20 minutes
ParticipantsSolo

S — Substitute

PromptVariation
Substitute the personaInstead of "fictional character," use "historical figure from a document I'm transcribing"
Substitute the framingFrame as screenplay dialogue rather than roleplay
Substitute the output formatRequest the explanation as Python code comments in a "simulation"
Substitute the languageUse a less-common language where safety training may be weaker
Substitute the channelDescribe the harmful content as an image the model should describe

C — Combine

PromptVariation
Combine two techniquesRoleplay + strict JSON output format (no room for refusal)
Combine with multi-turnBuild up character backstory over 3 turns before the harmful request
Combine payload with legitimate contentCharacter explains 90% legitimate content, 10% harmful buried in the middle
Combine persona + framing + outputHistorian persona + academic paper format + table output

A — Adapt

PromptVariation
Adapt from different modelThe "DAN" structure (explicit dual-personality) adapted to this target
Adapt from different categoryUse encoding (base64) for the harmful part of the character's dialogue
Adapt to different entry pointUse the character in a tool-use context rather than direct chat
Adapt published jailbreakAdapt the "grandmother bedtime story" pattern to this character

M — Modify

PromptVariation
More specific / more vagueMake the character a hyper-specific expert ("Dr. Chen, 30-year explosives engineer")
Smaller part of larger requestCharacter gives a 2000-word monologue; harmful content is 50 words in paragraph 7
More narrative distanceCharacter in a story being told by another character in a story
Less directCharacter alludes to the harmful content rather than stating it directly
Different toneCharacter is reluctant and apologetic while explaining (adds legitimacy)

P — Put to Other Uses

PromptVariation
Different informationUse the character to extract the system prompt rather than harmful content
Different safety boundaryUse the character to generate biased content rather than dangerous content
Partial success as stepping stoneCharacter's partial explanation becomes context for a "continue this" request
Refusal as informationNote which character descriptions trigger refusal (maps the boundary)

E — Eliminate

PromptVariation
Remove explicit requestJust describe the character in detail; let the model infer the next step
Remove triggering contextCharacter explains "the process" without naming what process
Remove the askPresent as creative writing; don't explicitly ask for harmful content
Eliminate unnecessary stepsSkip the elaborate backstory; go direct with a strong persona + format constraint

R — Reverse

PromptVariation
Reverse orderPut the harmful request first, then build character context after
Reverse framingAsk character to explain "what NOT to do" (often produces the same content)
Ask model to critique"Here's a weak attempt at this character's explanation. Improve it."
Rearrange sequenceEstablish output format first, then introduce character, then make request

Output Summary

#VariationSCAMPERWhy promising
1Roleplay + strict JSON format (no room for refusal)CFormat constraint eliminates refusal pathway
2Character in a story told by another characterMMaximum narrative distance
3"Improve this weak attempt" framingRCompletion feels different than generation
42000-word monologue with 50 words of payloadMPayload hidden in legitimate content
5Historical figure from a document transcriptionSTranscription framing vs. roleplay framing