Description-only preset edits split comma-containing exact goals into separate goals

Open Beginner friendly
#3,754 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

@MRX-72 is already working on this.

Since Nov 1, 2026.

  • #3781 by @MRX-72 — open
  • #3829 by @RohithPariki — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
react, typescript
Domain
frontend

Research direction

Start with frontend/src/components/Scenarios/parameterForm.ts, especially the list serialization at lines 103–107, and trace how ScenarioPresetEditor submits unchanged goal values. Keep list values lossless so editing only the description preserves goal contents, order, duplicates, and empty lists; verify the reported comma-containing goal case and the other listed edge cases.

Written by the indexing model from the issue text.

Description

help wanted
Describe the bug

Editing only a scenario preset description serializes an unconstrained list of exact goals as comma-joined text, then splits commas inside individual goal strings into new goals.

Steps/Code to Reproduce

Open a preset with goals ['Hello, world!', 'Second goal'], edit only Description, and save through the ScenarioPresetEditor form.

Expected Results

Unrelated edits preserve the original list elements and order exactly: ['Hello, world!', 'Second goal'].

Actual Results

Editor submitted ['Hello', 'world!', 'Second goal']; goal count changed from two to three and behavioral preset identity changed. Both old and new payloads pass the actual scenario preset/configuration validators, so validation does not detect the data loss.

Verified source reference: parameter form list serialization.

Proposed fix/regression: keep list values structured or use a lossless representation; preserve untouched stored values. Cover commas, significant whitespace, empty lists, duplicates, and order. This differs from empty SearchReplace scalar strings (finding 48).

Screenshots

Not applicable; submitted payload is inline.

Versions

Tested commit d3446e045960b5ebee4641aa70fdeb03af186587, PyRIT 1.2.0.dev0, offline actual React component/router with deterministic service mocks; backend model/config validators accepted both payloads. Evidence: files/evidence/round12/comma-goal-payload.json and regressions.txt; local paths are not attachments.

Dominant language
Python
Stars
4.7k
Forks
1k
Avg merge
2d 2h
Merged PRs (30d)
439

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/PyRIT

All issues in microsoft/PyRIT

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.