Skip to content

FEAT: Adding Temporary Instance Creation from the Registry - #3030

Merged
Richard Lundeen (richlundeen) merged 23 commits into
microsoft:mainfrom
richlundeen:richlundeen-temporary-component-settings
Oct 20, 2026
Merged

Richard Lundeen (richlundeen) merged 23 commits into
microsoft:mainfrom
richlundeen:richlundeen-temporary-component-settings

Conversation

@richlundeen

@richlundeen Richard Lundeen (richlundeen) commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Description

This PR adds support for creating targets, converters, and scorers without adding them to a registry.

For example, say a user wants to change settings for one conversation or conversion without changing shared registry entries. Temporary instances support those changes without adding a registry entry for every variant.

I added two changes to the GUI of when this is useful already (but have some bigger arcs in mind)

Example 1: When starting a new attack, you can modify the temperature without modify the registered target

a_temp_ribbon

Example 2: You can modify an existing converter without adding it into the registry. E.g. change a language from Spanish to French without adding a whole other converter

a_temp_converter

The backend adds support by using the existing "create" endpoints accept register: false and use registry construction without registration. Source-based overrides, saved target recipes, and scoped converter previews reuse this path.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Correct declared constructor capture, clear temporary overrides, and guard runtime readiness during target preparation. Refine converter controls and move chat settings into a separate ribbon.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Constrain target mocks to PromptTarget so optional source attributes are not created implicitly. Cover shared-source request pacing and lock replacement across event loops.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep temporary component lifecycle and upstream dynamic target parameter metadata.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d9a40875-faa1-48ad-bf6b-8d49a4ad7eb8
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d9a40875-faa1-48ad-bf6b-8d49a4ad7eb8
@hannahwestra25 hannahwestra25 self-assigned this Oct 8, 2026
Comment thread doc/gui/0_gui.md Outdated
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ary-component-settings' into richlundeen-temporary-component-settings
Keep external-input validation and typed converter forms. Give repeated sends independent temporary targets and require applied previews for private converter settings. Remove the narrow-screen layout note from the GUI guide.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep temporary target and converter types alongside the technique registry types. Use the unit test package import to avoid optional dependency package shadowing.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8db9da14-941e-4b51-bbfe-556c43058dbe
Retain temporary target construction and cleanup alongside CoPyRIT GitHub token validation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 15d4b93d-85a2-45d8-9f11-aed28ebfa41c
Comment thread frontend/src/components/Chat/ChatWindow.tsx
Comment thread frontend/src/services/targetRegistry.ts
Preserve upstream request limits, server upload controls, and administrator checks alongside optional registration and source reconstruction.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread doc/code/registry/0_registry.md
Comment thread pyrit/backend/services/target_service.py Outdated
Comment thread pyrit/backend/services/attack_service.py Outdated
@hannahwestra25

Copy link
Copy Markdown
Contributor

I see the workflow for unregistered targets--validate the variant, derive its identifier and capabilities, save a source-plus-overrides recipe, and reconstruct it for sends. but not sure i understand the usecase for unregistered scorers.i might be missing something butcurrently, POST /scorers with register: false appears to construct the scorer, return its identifier, and discard it and then there's no scoring or scenario operation accepting that descriptor (as there is for targets)

Keep target construction on the request event loop. Preserve save errors and roll back media when private target cleanup fails. Retain resolved source authentication and integrate converter run tracking. Clarify temporary target cleanup and scorer preview limits.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@richlundeen

Richard Lundeen (richlundeen) commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor Author

hannahwestra25 There are use cases for temporary scorers that are not implemented yet. As we add rescoring of individual pieces in the GUI, it will be useful to change scorer settings without changing the registered instance. I'd rather keep scorers in the same construction pattern than exclude them because those workflows are not in place yet; the support costs almost nothing.

I removed the scorer-specific documentation.

Written with GitHub Copilot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retain Operation attribution and temporary-target bindings during attack creation. Cover repeated sends with both Operation IDs and legacy Operation names.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread pyrit/backend/services/scorer_service.py Outdated
Comment thread frontend/src/hooks/useChatConverters.ts
Use registry external-input validation for unregistered scorers. Restore converter pipelines through the shared stage comparison so changed or cleared temporary settings are applied. Preserve main's media checks and credential permissions alongside private component construction.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… workflow

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the HuggingFace request-loop regression independent of optional Torch and remove a redundant cleanup guard rejected by unit typing.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Include the upstream Copilot model-identity test isolation fix without changing temporary component behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@richlundeen
Richard Lundeen (richlundeen) added this pull request to the merge queue Oct 20, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 20, 2026
Preserve temporary converter settings and source targets while retaining adversarial defaults for newly registered converters. Add an integration regression for the combined behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the branch current after the converter-conflict resolution, including main's Operations E2E stabilization.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The default-label loading notice can disappear between the badge and timestamp measurements. Wait for the existing app readiness condition before taking geometry measurements; keep all overlap and overflow assertions unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@richlundeen
Richard Lundeen (richlundeen) added this pull request to the merge queue Oct 20, 2026
Merged via the queue into microsoft:main with commit c723bbd Oct 20, 2026
64 checks passed
@richlundeen
Richard Lundeen (richlundeen) deleted the richlundeen-temporary-component-settings branch October 20, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants