FEAT: Garak sysprompt extraction scenario - #2142
Merged
Richard Lundeen (rlundeen2) merged 15 commits intoAug 14, 2026
Merged
Conversation
Port garak's packagehallucination probe into PyRIT as a scenario plus a deterministic scorer, following the web_injection precedent. - Add PackageHallucinationScorer under score/true_false/regex/ (extract-then- allow-list; documented why it does not subclass RegexScorer). - Add PackageHallucination scenario covering Python/JavaScript/Ruby/Rust. - Move the prompt/task corpus into local .prompt datasets under seed_datasets/local/garak/ instead of hardcoding it in scenario code. - Document the scorer in doc/code/scoring/1_true_false_scorers and the scenario in doc/scanner/garak. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Ports garak's sysprompt_extraction.SystemPromptExtraction probe as a PyRIT scenario. Installs a real system prompt on the target, then sends extraction templates (9 garak categories) and scores responses with a deterministic n-gram containment scorer. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ompt-scenario # Conflicts: # doc/scanner/garak.ipynb # doc/scanner/garak.py # pyrit/scenario/scenarios/garak/__init__.py # pyrit/score/__init__.py
Roman Lutz (romanlutz)
approved these changes
Aug 11, 2026
…ge-hallucination Migrated the PackageHallucination scenario to main's ScenarioTechnique API (ScenarioStrategy -> ScenarioTechnique, SeedAttackGroup -> AttackSeedGroup) and resolved doc conflicts (added a Doctor section from main, regenerated the true/false scorer notebook to include both the new PackageHallucinationScorer subsection and main's new scorer sections). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 87fecfc8-b093-42a4-b36d-09e437ca1b2a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 87fecfc8-b093-42a4-b36d-09e437ca1b2a
Apply Roman's review suggestion by using prompt_cap=None to disable the scan cap, and retain notebook hygiene fixes from pre-commit. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5380728-0f8d-4cc2-b665-055180af481b
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5380728-0f8d-4cc2-b665-055180af481b
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 87fecfc8-b093-42a4-b36d-09e437ca1b2a
Preserve both the system prompt extraction and audio Achilles heel Garak documentation sections. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5380728-0f8d-4cc2-b665-055180af481b
Preserve the package hallucination and system prompt extraction scenarios, scorers, datasets, exports, tests, and Garak documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5380728-0f8d-4cc2-b665-055180af481b
Preserve the system prompt extraction additions alongside the officially merged package hallucination scenario and remove a duplicate empty documentation cell. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5380728-0f8d-4cc2-b665-055180af481b
Document the deterministic float-scale scorer with an in-memory conversation example in the paired scoring notebook files. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d5380728-0f8d-4cc2-b665-055180af481b
Richard Lundeen (rlundeen2)
deleted the
rlundeen2-garak-sysprompt-scenario
branch
August 14, 2026 15:13
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.
Ports garak's
sysprompt_extraction.SystemPromptExtractionprobe as a PyRIT scenario, operationally similar to the garak probe but built with scenario constructs.What it does
garak_drh_system_prompts/garak_tm_system_promptsdatasets) on the target, then sends an extraction request asking the model to reveal it.garak_system_prompt_extractiondataset; each template carries a per-seedtechniquetag mapping to one of the 9 garak categories, which becomeSystemPromptExtractionStrategymembers.AtomicAttackwhose seed groups are (system prompt x template) combinations. Across all selected categories the total combinations are randomly sampled down toprompt_cap(garak'ssoft_probe_prompt_cap) so a default run stays bounded.SystemPromptExtractionScorer(character n-gram containment overlap, reusingApproximateTextMatching), wrapped byFloatScaleThresholdScorer.Notes
web_injectionscenario pattern for dataset loading/resolution.doc/scanner/garak.py/.ipynb) updated with a minimal executable run.derczynski2024garakto the bibliography.