$ the-wire · showcase
PyRIT loops history into feature pages, garak fixes multi-language matching
By RepoJournal · Filed · About AI Red Teaming · Composed from the cited sources · methodology
PyRIT's UI rework lands the pieces operators touch every day, garak stops dropping non-English attempts from its prompts and outputs, and promptfoo clears a second vulnerable MSAL Node copy from its lockfile.
2 - FEAT: Consolidated History microsoft/PyRIT
The standalone History page is gone: attack history now lives in Chat/History tabs inside Attacks and Launch/History tabs inside Scanner, and the new routes carry your current chat and unsent draft across navigation. The same update adds exact ID lookup for scenario runs, so you can jump straight to a run instead of scrolling stored history.
fix(attempt): match a comma-separated lang_spec in prompt_for and outputs_for NVIDIA/garak
`prompt_for` and `outputs_for` compared `lang_spec` to the prompt language with a bare `!=`, so a spec like `"en,de"` never matched an English attempt. Both now split on commas, strip whitespace, and match the prompt language or `"*"`, which means multilingual scans stop silently excluding prompts and outputs; `None`, `"*"` and single tags behave as before.
fix(deps): update Azure Identity to use patched MSAL Node promptfoo/promptfoo
Azure Identity 4.13.3 pulled in its own copy of MSAL Node 6.0.1 while the root dependency was already on 7.1.0, leaving the lockfile with a second copy exposed to GHSA-xcx6-jx8p-x3h5. Bumping to 4.14.1 dedupes it: after a clean install, Promptfoo and Azure Identity resolve the same MSAL Node entry point.
3 - FEAT: Registry Consistency microsoft/PyRIT
Scorers, Techniques, and Converters now share one inline identity-JSON row layout, and converter rows keep their input/output columns plus new search, type, and output filters. Remove is now a small red corner x that keeps its confirmation, keyboard access, and touch targets, so muscle memory on the old button needs adjusting.
MAINT: adding batched manual writes microsoft/PyRIT
Store-only manual messages written with `add_message_async(send=False)` used to register the conversation and then write each piece separately, leaving a partial message behind if a later piece failed. `_persist_message_only_async` now builds all `MessagePiece`s first and saves them in a single batched `add_message_pieces_to_memory_async` call. The remaining items, including an expandable sideb...