What's changed?
Welcome to PyRIT v1.0.0! This major release establishes the v1 architecture for composing scenarios, attack techniques, executors, registries, identifiers, and memory. It includes intentional breaking changes, so review the changes below carefully before upgrading.
⚠️ Breaking changes
- Scenarios now compose registered techniques — scenario strategies were renamed to techniques, the Scenario registry became the construction path, and legacy scenario scaffolding was removed (#2115, #2123, #2153).
- Component construction moved to registries — the BuildableRegistry foundation now powers attack techniques, targets, scorers, converters, scenarios, and initializers (#1963, #2057, #2087, #2101, #2122).
- Converters and attack framing were reorganized —
PromptConverteris nowConverter; role play, FlipAttack, and context-compliance behavior moved into techniques; system prompts are standardized onprepended_conversation, and the expired single-turn path was removed (#2040, #2160, #2161, #2177, #2178, #2245). - Conversation and memory models changed — conversation-scoped state moved from
MessagePieceinto the newConversationmodel,MemoryExporter/export_conversationswere removed, and memory operations were consolidated (#1856, #1950, #2207). - Pre-v1 compatibility paths are gone — APIs deprecated for 0.15 and the remaining pre-v1 internal/public compatibility shims were removed (#1951, #2111, #2195).
- Several scenario contracts changed — Jailbreak now follows a dataset × techniques × jailbreaks model, Psychosocial uses a per-subharm cross-product, and CLI/backend component construction now uses the v1 model and registry layers (#1997, #2191, #2192).
🧩 Framework, identity, and memory
- Introduced strongly typed component identifiers and persisted them as normalized, content-addressed graphs, making evaluation identity stable and queryable across targets, scorers, converters, scenarios, and attacks (#2007, #2050, #2164).
- Added explicit architecture boundaries for scenarios, techniques, executors, and shared layers, alongside registry-backed construction throughout PyRIT (#2089, #2107, #2124).
- Added the v1 conversation and identifier schema, a deliberate production migration guard/runbook, and bounded migration backfills for production-scale databases (#1950, #2028, #2164, #2266).
🎯 Attacks and scenarios
- Added Prompt Decomposition/DrAttack, word-game decomposition, Garak Web Injection, Garak Doctor, Policy Puppetry, and fully wired GCG extension protocols (#1902, #2003, #2051, #2064, #2067, #2070).
- Added capability-aware multimodal feedback for Crescendo, RedTeaming, and TAP; unified adversarial-chat context; and made end-of-technique converters configurable (#1377, #2053, #2066).
- Improved adaptive scenarios, iterative image state, technique metadata, scenario resume behavior, and registry alignment (#2152, #2167, #2186, #2188, #2210, #2220).
📊 Scoring
- Added composable response handlers and a pure-composition API for True/False scorers, completed by typed rubrics across the LLM scorer rollout (#2125, #2146, #2157).
- Added a dedicated LlamaGuard scorer and OWASP LLM02 output-side scorers for SSRF, SSTI, XXE, open redirect, and LDAP injection (#1867, #2118).
- Improved scorer behavior for blocked/content-filtered responses, identity configuration, and duplicate memory writes (#1989, #2022, #2072).
📚 Datasets
- Added MM-SafetyBench, XL-SafetyBench, 0DIN Threat Feed, WildGuardMix, Garak remote datasets, and a local Jailbreak dataset (#1790, #1791, #1827, #2034, #2063, #2068).
- Added JSON-schema validation to seed and scorer datasets, refactored dataset configuration, exposed dataset parameters from memory, and standardized harm categories across loaders (#1432, #2017, #2071, #2120, #2158).
🖥️ Targets, CLI, and CoPyRIT
- Added
LiteLLMChatTarget, Azure Key Vault secret loading, Azure Entra authentication fallback for text embeddings, and Round Robin target support in the GUI (#1944, #1961, #2154, #2235). - Added guided onboarding, shareable URL-driven views, a feedback dialog, and objective-target system-prompt configuration; improved accessibility and responsive chat/target configuration (#1956, #1981, #1990, #1994, #2056, #2069, #2224, #2226).
- Improved CLI usability with dataset discovery, typed parameter coercion, underlying-model display, local server URLs, robust Windows output, and clearer target initializer guidance (#2092, #2106, #2194, #2196, #2212, #2213, #2215, #2248).
🔒 Security and reliability
- Hardened archive extraction, Azure Blob URL validation and metadata filenames, Entra-auth forwarding, and Key Vault provisioning (#1957, #2049, #2180, #2183, #2193).
- Fixed Windows configuration/output encoding, non-blocking Hugging Face model loading, retry handling for malformed JSON, and several GUI/CLI failure paths (#2047, #2110, #2145, #2184, #2211, #2247).
Full list of changes
- MAINT: Memory Model cleanup by @rlundeen2 in #1937
- FEAT: Add MM-SafetyBench seed dataset loader by @romanlutz in #1790
- fix: prevent temp file leak and race condition in save_formatted_audio by @sajisanchu1913-source in #1910
- MAINT: Fix dataset metadata and references by @romanlutz in #1934
- MAINT: Audit and clean up # noqa annotations by @romanlutz in #1939
- FEAT: Enforce keyword-only
__init__on PyRIT pluggable brick base classes by @romanlutz in #1883 - FIX: correct sample image path in video notebook and printer call in seed programming notebook by @ValbuenaVC in #1947
- REFACTOR: consolidate content-filter markers into shared constants by @romanlutz in #1900
- MAINT post-0.14.0 release update to 0.15.0.dev0 by @ValbuenaVC in #1948
- MAINT: Enable ruff UP007/UP045 and modernise Optional/Union to PEP 604 by @romanlutz in #1884
- MAINT: Dep audit + ty hardening + scenario import cleanup by @romanlutz in #1931
- MAINT: Evict I/O modules from pyrit.models into pyrit.memory.storage by @rlundeen2 in #1929
- MAINT: Refactor SkeletonKeyAttack to single-turn prepended conversati… by @ksaravindakashyap in #1739
- Fix low-contrast .pyrit_conf_example link in dark theme by @hannahwestra25 in #1952
- FEAT: Violent Durien Refactor and Scenario Factory Update by @rlundeen2 in #1949
- FEAT: Allow creation and display of
RoundRobinTargetin GUI by @jsong468 in #1944 - MAINT Breaking: Remove MemoryExporter and export_conversations by @rlundeen2 in #1856
- MAINT Remove unused arm template file main.json by @behnam-o in #1962
- [BREAKING] MAINT: remove deprecations scheduled for v0.15.0 by @romanlutz in #1951
- FEAT Allow loading env from AKV secrets by @behnam-o in #1961
- TEST: Cover Home recent-operations branches to stabilize frontend cov… by @rlundeen2 in #1977
- FEAT: Adding Json Schema Pipeline to SeedPrompts by @riedgar-ms in #1432
- FIX: Include adversarial config in attack and eval identity by @rlundeen2 in #1959
- MAINT: Deprecate TextTarget.import_scores_from_csv by @rlundeen2 in #1958
- FIX pyrit initializer config in ARM templates must be comma-separated by @behnam-o in #1955
- REFACTOR: Promote single-class module constants to ClassVar (prompt_converter) by @romanlutz in #1965
- REFACTOR: Promote scorer-initializer module constants to ClassVar (21 items) by @romanlutz in #1974
- FIX Preserve user message structure in generic system squash by @biefan in #1505
- REFACTOR: Promote single-class module constants to ClassVar (backend + registry + setup) by @romanlutz in #1964
- REFACTOR: Promote single-class module constants to ClassVar (score + memory + models + message_normalizer) by @romanlutz in #1972
- REFACTOR: Promote single-class module constants to ClassVar (dataset loaders) by @romanlutz in #1973
- MAINT: Light refactor of Aegis AI content safety dataset for consistency by @fdubut in #1976
- MAINT: Bump aiofiles from 24.1.0 to 25.1.0 by @dependabot[bot] in #1988
- MAINT: Bump the minor-and-patch group with 8 updates by @dependabot[bot] in #1986
- MAINT: Bump datasets from 4.8.5 to 5.0.0 by @dependabot[bot] in #1987
- MAINT: Bump globals from 15.15.0 to 17.6.0 in /frontend by @dependabot[bot] in #1985
- MAINT: Bump the minor-and-patch group in /frontend with 7 updates by @dependabot[bot] in #1983
- MAINT: Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.15 to 0.15.16 by @dependabot[bot] in #1982
- MAINT Restrict CoPyRIT prod deployment to release/* branches by @behnam-o in #1978
- MAINT: Bump eslint-plugin-react-hooks from 5.2.0 to 7.1.1 in /frontend by @dependabot[bot] in #1984
- FIX: backend mapper fetches scores from memory after MessagePiece.scores removal by @romanlutz in #1992
- MAINT Breaking: Creating Conversation class and moving fields off of messagePiece by @rlundeen2 in #1950
- MAINT: Refactor GUI and REST api to use pyrit.models by @rlundeen2 in #1941
- FIX Make conversation panel and attack history rows keyboard-accessible by @hannahwestra25 in #1990
- MAINT/FIX: Relocate targeted_harm_categories to AttackResult by @rlundeen2 in #1995
- MAINT: Bump tornado from 6.5.5 to 6.5.6 by @dependabot[bot] in #1998
- MAINT: Bump esbuild from 0.28.0 to 0.28.1 in /frontend by @dependabot[bot] in #2000
- MAINT: pyrit.common - relocate two packages that don't belong by @rlundeen2 in #2001
- MAINT Migrate Message.duplicate_message() test callers to Message.duplicate() by @immu4989 in #2009
- FEAT: Guided Onboarding Tour for Co-PyRIT by @jsong468 in #1981
- FIX: GUI Guided Walkthrough: Hoist static pieces to module constants and memoize
TourPropsby @jsong468 in #2016 - MAINT: Strongly Typed Identifiers by @rlundeen2 in #2007
- MAINT Migrate internal callers of deprecated ScenarioResult.to_dict()/from_dict() to Pydantic API by @immu4989 in #2005
- MAINT: Group Dependabot security minor patch updates by @spencrr in #2018
- Fix integration test failures: Conversations table PK and stale attack_identifier references by @hannahwestra25 in #2024
- MAINT fix failing tests and unify schedules by @behnam-o in #1993
- FIX: Ensure conversation scoring only adds once to memory by @jbolor21 in #1989
- MAINT: Bump the security-minor-and-patch group across 1 directory with 5 updates by @dependabot[bot] in #2027
- MAINT: Bump the minor-and-patch group with 11 updates by @dependabot[bot] in #2021
- MAINT: Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.16 to 0.15.17 by @dependabot[bot] in #2019
- MAINT: Bump the minor-and-patch group in /frontend with 10 updates by @dependabot[bot] in #2020
- MAINT: Bump cryptography from 46.0.7 to 48.0.1 by @dependabot[bot] in #2015
- FIX ADO pipeline entry point cannot be a template by @behnam-o in #2025
- FEAT: Add PromptDecompositionConverter (DrAttack decompose-and-reconstruct) by @Raulster24 in #2003
- Fix SQL Server key-type migration issue and preserve Alembic revision by @behnam-o in #2026
- MAINT: Move converter construction into the registry layer (BuildableRegistry foundation) by @rlundeen2 in #1963
- FEAT: Adding json schema to all scorer datasets by @rlundeen2 in #2017
- DOC: Clarify InsecureCodeScorer generated-code use case by @Danielweng0902 in #2035
- DOC: Executor docs rewrite by @rlundeen2 in #1979
- MAINT: Bump the minor-and-patch group in /frontend with 2 updates by @dependabot[bot] in #2032
- MAINT: Bump the minor-and-patch group across 1 directory with 3 updates by @dependabot[bot] in #2037
- FEAT/FIX: Easier eval identity config by @rlundeen2 in #2022
- MAINT: Bump form-data from 4.0.5 to 4.0.6 in /frontend in the security-minor-and-patch group across 1 directory by @dependabot[bot] in #2031
- FEAT: URL-driven views and shareable deep links in the GUI by @adrian-gavrila in #1994
- FIX Validate empty-list enum filters in seed dataset loaders by @romanlutz in #2029
- MAINT: Fix repo-wide ty type-checker diagnostics in pyrit/ by @romanlutz in #2030
- fix: upgrade js-yaml to 4.2.0 (CVE-2026-53550 / GHSA-h67p-54hq-rp68) by @romanlutz with @Copilot in #2041
- FIX Container App health check to validate revision by deployed image tag by @behnam-o in #2036
- MAINT: Unify adversarial-chat JSON schema across Crescendo, TAP, and PAIR by @rlundeen2 in #2039
- Fix UnicodeDecodeError when reading .pyrit_conf on Windows by @hannahwestra25 in #2047
- FIX broken notebook, make integration tests scheduled-only, and retry scenario E2E tests by @behnam-o in #2048
- MAINT: Bump the security-minor-and-patch group across 1 directory with 2 updates by @dependabot[bot] in #2052
- FEAT create feedback dialogue by @hannahwestra25 in #1956
- FEAT use ThemeProvider instead of boolean for theme by @hannahwestra25 in #1991
- FEAT: Add 0DIN threat feed dataset loader (0din_threatfeed) by @romanlutz in #2034
- FEAT: Always recompute ComponentIdentifier hashes by @rlundeen2 in #2050
- MAINT: Minor pyrit.model module reorganization by @rlundeen2 in #1999
- MAINT: Bump jupyterlab from 4.5.7 to 4.5.9 in the security-minor-and-patch group across 1 directory by @dependabot[bot] in #2055
- FEAT: Add default implementations of GCG extension protocols by @romanlutz in #1902
- MAINT: Consolidate regex-based scorers under regex/ by @rlundeen2 in #2065
- FEAT Make onboarding tour opt-in via a top-bar button by @romanlutz in #2069
- FEAT: Adding Garak Remote Datasets by @rlundeen2 in #2063
- FEAT: Adding local Jailbreak dataset to memory by @rlundeen2 in #2068
- MAINT: Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.17 to 0.15.19 by @dependabot[bot] in #2073
- MAINT: Bump actions/cache from 5 to 6 by @dependabot[bot] in #2074
- MAINT: Bump actions/checkout from 6 to 7 by @dependabot[bot] in #2075
- MAINT: Bump the minor-and-patch group in /frontend with 11 updates by @dependabot[bot] in #2076
- MAINT: Bump @types/node from 25.9.3 to 26.0.0 in /frontend by @dependabot[bot] in #2077
- MAINT: Bump the minor-and-patch group with 7 updates by @dependabot[bot] in #2078
- MAINT: Bump reportlab from 4.5.1 to 5.0.0 by @dependabot[bot] in #2079
- FEAT: BuildableRegistry Creation by @rlundeen2 in #2057
- FEAT: Add word-game option to DecompositionConverter by @Raulster24 in #2051
- MAINT: Restore unit test type check target by @biefan in #2090
- FIX: Preserve text errors for initializer 403 responses by @biefan in #2094
- FIX: Coerce typed scenario parameters in scan CLI by @biefan in #2092
- FIX: Preserve media extensions for uploaded attack messages by @biefan in #2095
- FIX update example conf file so pyrit_scan doesn't fail out of the box by @behnam-o in #2046
- MAINT: Reword property docstrings to noun phrases (D421) by @romanlutz in #2097
- MAINT: Consolidate Ruff per-file-ignores; drop dead pyrit/ui config by @romanlutz in #2098
- DOC: Add scroll-triggered Roakey peeks to the landing page by @romanlutz in #2099
- FEAT: Adding Garak Web Injection Scenario by @rlundeen2 in #2067
- FEAT: Improve TranslationConverter prompt for faithful translation by @romanlutz in #2082
- FEAT: Adding AttackTechnique Registry by @rlundeen2 in #2101
- FIX: Support quoted initializer paths in shell by @biefan in #2093
- REFACTOR Breaking: Migrate CLI to use pyrit.models by @rlundeen2 in #1997
- FEAT: DatasetConfiguration Refactor by @rlundeen2 in #2071
- MAINT Breaking: Migrating target and scorer registries by @rlundeen2 in #2087
- MAINT: Run pre-commit on all files for every event by @romanlutz in #2105
- DOC: Update mazeika2023tdc citation to MLR proceedings page by @romanlutz in #2104
- MAINT: Document D421 property-docstring noun-phrase convention by @romanlutz in #2102
- MAINT: Harden frontend npm config (npm audit + min-release-age) by @romanlutz in #2103
- DOC: Architecture Responsibilities by @rlundeen2 in #2089
- MAINT: Use DefaultAzureCredential directly for blob storage auth by @adrian-gavrila in #1946
- MAINT: Remove deprecated message init in JSON schema normalizer by @biefan in #2091
- FEAT Add safe_extract_zip helper for remote dataset loaders by @francose in #1957
- MAINT: Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.19 to 0.15.20 by @dependabot[bot] in #2113
- MAINT: Bump the minor-and-patch group with 8 updates by @dependabot[bot] in #2114
- MAINT: Updating backend to use registry to create converters by @rlundeen2 in #2112
- MAINT: Simplifying building atomic attacks by @rlundeen2 in #2107
- FEAT Add dataset info to backend and expose --list-datasets in pyrit_scan by @behnam-o in #2106
- Fix chat UI stuck loading after first message send failure by @romanlutz in #2110
- MAINT: Silence deprecation warnings in unit tests by @romanlutz in #2108
- MAINT: Modernize Optional/Union typing to PEP 604 syntax by @romanlutz in #2109
- FEAT: Adding configurable converters to the end of techniques by @rlundeen2 in #2066
- DOC: Correct four citations in references.bib to published venues by @romanlutz in #2119
- FEAT Breaking: Adding Scenario registry by @rlundeen2 in #2115
- MAINT: typing pyrit.models by @rlundeen2 in #2116
- FEAT: Adding garak.doctor scenario and PolicyPuppetryConverter by @rlundeen2 in #2064
- MAINT: Simplifying Rapid Response and Cyber by @rlundeen2 in #2117
- Add OWASP LLM02 output-side scorer pack: SSRF / SSTI / XXE / open redirect / LDAP injection by @ppcvote in #2118
- MAINT: Enable 10 clean ty rules for production code by @romanlutz in #2096
- MAINT: Initializer Registry update and deleting old scaffolding by @rlundeen2 in #2122
- MAINT: Deleting Legacy Scenario Scaffolding by @rlundeen2 in #2123
- FEAT capability-aware multimodal feedback loop for Crescendo/RedTeaming/TAP by @fitzpr in #1377
- MAINT: Initializers Cleanup by @rlundeen2 in #2100
- MAINT: Updating Backend to use Target Registry by @rlundeen2 in #2124
- MAINT: Production schema migration guard + add deliberate migration script for release by @jsong468 in #2028
- MAINT: Standardize garak Doctor default strategy to DEFAULT by @varunj-msft in #2128
- FIX outdated default initializers in CoPyRIT by @behnam-o in #2129
- FIX ModuleNotFoundError in Azure SQL memory integration test by @behnam-o in #2130
- FEAT Allow dataset parameters on dataset configuration when loading from memory by @behnam-o in #2120
- MAINT: Add DEFAULT strategy alias to airt.cyber scenario by @varunj-msft in #2061
- FIX: Curate Scam scenario DEFAULT strategy by @varunj-msft in #2127
- fix(converter): Æ morse key has a stray leading space (KeyError) by @WatchTree-19 in #2137
- MAINT: Bump opencv-python from 4.13.0.92 to 5.0.0.93 by @dependabot[bot] in #2136
- MAINT: Bump the minor-and-patch group in /frontend with 10 updates by @dependabot[bot] in #2134
- MAINT: Bump the minor-and-patch group with 5 updates by @dependabot[bot] in #2135
- FIX parse likert raw score via float before int by @WatchTree-19 in #2133
- FEAT: Wire GCG extension protocol implementations by @romanlutz in #2070
- Remove all pre-1.0.0 PyRIT-internal deprecations (0.16.0/0.17.0) by @romanlutz in #2111
- MAINT: Unify scenario initialize_async's into common parameter bag by @rlundeen2 in #2132
- FIX: Fixing Myst ToC by @rlundeen2 in #2144
- MAINT: Detangle scorer LLM round-trip — ResponseHandler + internal helper (1/3) by @romanlutz in #2125
- Pin GitHub Actions to full-length commit SHAs by @OssSecurityBot in #2147
- MAINT: Bump vite from 8.1.2 to 8.1.3 in /frontend in the minor-and-patch group by @dependabot[bot] in #2149
- TEST/FIX/DOC: Adding tests to ensure docs include scorers, scenarios, and attacks by @rlundeen2 in #2140
- MAINT: Bump soupsieve from 2.8.1 to 2.8.4 in the security-minor-and-patch group across 1 directory by @dependabot[bot] in #2148
- MAINT: Bump torch from 2.12.1 to 2.13.0 in the minor-and-patch group by @dependabot[bot] in #2151
- FIX: Render full error content in GUI instead of generic 500 by @jsong468 in #2145
- Scorer composition (PR B): TrueFalse pure-composition API + CallableResponseHandler by @romanlutz in #2146
- MAINT: Bump astral-sh/setup-uv from 7.6.0 to 8.2.0 by @dependabot[bot] in #2150
- MAINT Breaking: Rename Scenario Strategies to Techniques by @rlundeen2 in #2153
- FIX: Adaptive Scenario bugs by @rlundeen2 in #2152
- MAINT: Technique Organization by @rlundeen2 in #2155
- DOC Add paper affiliations to decomposition converter YAML files by @romanlutz in #2139
- DOC add scenario update blog by @hannahwestra25 in #1940
- MAINT BREAKING: Rename PromptConverter to Converter by @jsong468 in #2161
- MAINT: Bump mistune from 3.2.1 to 3.3.0 in the security-minor-and-patch group across 1 directory by @dependabot[bot] in #2163
- Fix crash when scorer LLM response is blocked by content filter by @hannahwestra25 in #2072
- DOC: Updating technique docs by @rlundeen2 in #2159
- MAINT: AdversarialConversationManager - unify adversarial-chat context, schema, and multimodal feedback by @rlundeen2 in #2053
- PR Breaking MAINT: Moving Role Play Attack to Technique by @rlundeen2 in #2160
- Scorer composition (PR C, 3/3): complete LLM rollout with typed rubrics by @romanlutz in #2157
- MAINT Rename attack-related seed groups by @behnam-o in #2165
- FIX: Fix possible SSRF bypass in
_is_azure_blob_urlhost parsing by @jsong468 in #2180 - FIX: Fix config notebook by @jsong468 in #2181
- FIX: Fixing 4 broken notebooks by @rlundeen2 in #2182
- Fix frontend E2E coverage and gate seeded tests by @romanlutz in #2179
- FEAT: add LiteLLMChatTarget for multi-provider access via LiteLLM by @RheagalFire in #2154
- FEAT: set the objective target's system prompt from the CoPyRIT GUI by @adrian-gavrila in #2056
- MAINT: Migrate FlipAttack to a core 'flip' attack technique by @rlundeen2 in #2178
- FEAT Overlay harm-category standardization across dataset loaders by @romanlutz in #2158
- MAINT: Migrating context compliance to technique by @rlundeen2 in #2177
- FIX: Add destination allowlist before forwarding Bearer credential to Graph in EntraAuthMiddleware by @jsong468 in #2183
- FEAT: Adding descriptions to Techniques by @rlundeen2 in #2167
- FIX: Preserve iterative image state in Crescendo by @romanlutz in #2188
- MAINT: Bump astral-sh/setup-uv from 8.2.0 to 8.3.2 in the minor-and-patch group by @dependabot[bot] in #2201
- MAINT: Bump pyarrow from 24.0.0 to 25.0.0 by @dependabot[bot] in #2203
- MAINT: Bump the minor-and-patch group in /frontend with 6 updates by @dependabot[bot] in #2200
- MAINT: Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.20 to 0.15.21 by @dependabot[bot] in #2199
- MAINT: Standardize garak.encoding defaults and fix atomic-attack name collisions by @varunj-msft in #2190
- MAINT: Bump types-requests from 2.33.0.20260518 to 2.33.0.20260712 by @dependabot[bot] in #2204
- FIX: CLI Usability Updates by @rlundeen2 in #2194
- MAINT: Bump the minor-and-patch group across 1 directory with 8 updates by @dependabot[bot] in #2202
- FIX: sanitize metadata file name in
azure_blob_storage_targetby @jsong468 in #2193 - FEAT Persist component identifiers as normalized, content-addressed graphs by @behnam-o in #2164
- MAINT: Consolidating Target Metadata by @rlundeen2 in #2185
- FIX: Fixing json retry by @rlundeen2 in #2184
- MAINT: Fold GCG into pyrit/executor/promptgen, remove auxiliary_attacks by @romanlutz in #2197
- DOC: Asset cleanup and notebook-local scorer YAML relocation by @romanlutz in #2176
- [BREAKING] MAINT Remove v1 deprecated compatibility paths by @romanlutz in #2195
- FEAT Add dedicated LlamaGuard scorer by @immu4989 in #1867
- [BREAKING] MAINT: Standardize Jailbreak scenario around dataset × techniques × jailbreaks by @varunj-msft in #2192
- FIX old reference in notebook SeedAttackGroup -> AttackSeedGroup by @behnam-o in #2205
- MAINT Consolidate memory operations by @behnam-o in #2207
- DOC: Delete numbers from notebook headers by @jsong468 in #2206
- FIX: eliminate KV public-access window for policy compliance by @hannahwestra25 in #2049
- FIX: Tighten CLI backend health-check validation by @romanlutz in #2209
- FIX: Propagate dataset_name to jailbreak template seeds by @romanlutz in #2208
- FIX: Load HuggingFace models without blocking the event loop by @romanlutz in #2211
- FIX: CLI display underlying model by @rlundeen2 in #2215
- FIX: Make CLI/output encoding safe on Windows consoles by @romanlutz in #2213
- FIX: Prune emptied atomic attacks on scenario resume by @romanlutz in #2210
- FIX: Accept local HTTP URLs for CLI --start-server by @romanlutz in #2212
- [BREAKING] MAINT: Re-migrate Psychosocial scenario to per-subharm cross-product by @varunj-msft in #2191
- MAINT: Bring GCG under Ruff and ty checks by @romanlutz in #2218
- FIX Coerce enum parameters for direct target creation by @romanlutz in #2196
- FEAT: Add remote WildGuardMix dataset loader by @romanlutz in #1827
- FIX adaptive scenario: normalize seed sequences to fix technique role collision by @romanlutz in #2220
- FIX: Aligning Scenarios with Technique Registry by @rlundeen2 in #2186
- FIX Clamp ImageResizingConverter output dimensions by @ThryLox in #2169
- DOC: Add scanner walkthrough to scenarios blog by @hannahwestra25 in #2221
- FIX: Entra ID auth fallback for Azure endpoints in OpenAITextEmbedding by @romanlutz in #2235
- FIX Stabilize Playwright frontend host resolution by @romanlutz in #2222
- FIX Restore focus after closing Feedback dialog by @romanlutz in #2223
- FIX: Repair responsive target configuration by @romanlutz in #2224
- FIX: Repair mobile chat responsiveness by @romanlutz in #2226
- FIX Correct Round Robin target identity matching by @romanlutz in #2225
- Add XL-SafetyBench datasets by @romanlutz in #1791
- FIX: Repair XPIA ai_recruiter workflow (HTTP modalities, PDF stem, Message API) by @romanlutz in #2227
- TEST: skip Azure key-auth-disabled integration tests by @romanlutz in #2229
- FIX: Standardize image-text converter font default to None by @romanlutz in #2232
- DOC: initializer-rename doc updates and notebook/test fixes (post #2157) by @romanlutz in #2187
- MAINT: Make technique prompt placement explicit by @hannahwestra25 in #2236
- MAINT: Standardize system prompts on prepended_conversation by @adrian-gavrila in #2040
- [BREAKING] MAINT: Remove expired single-turn system prompt by @romanlutz in #2245
- FIX: Retry adversarial replies with non-object JSON roots by @romanlutz in #2247
- MAINT: Bump https://github.com/astral-sh/ruff-pre-commit from v0.15.21 to 0.15.22 by @dependabot[bot] in #2249
- FIX: Correct invalid target initializer guidance by @romanlutz in #2248
- FIX Batch v1.0 conversation migration backfills by @romanlutz in #2266
New Contributors
- @ksaravindakashyap made their first contribution in #1739
- @Danielweng0902 made their first contribution in #2035
- @WatchTree-19 made their first contribution in #2137
- @OssSecurityBot made their first contribution in #2147
- @RheagalFire made their first contribution in #2154
- @ThryLox made their first contribution in #2169
Full Changelog: v0.14.0...v1.0.0