The Python Risk Identification Tool for generative AI (PyRIT) is an open source framework built to empower security professionals and engineers to proactively identify risks in generative AI systems.
This report presents the forensic synthetic code analysis of microsoft/PyRIT, a Python project with 4,108 GitHub stars. SynthScan v2.0 examined 402,981 lines of code across 1876 source files, recording 13728 pattern matches distributed across 25 syntactic categories. The overall adjusted score of 47.9 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 13728 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/memory/memory_models.py | 996 | def filter_json_serializable_metadata(metadata: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | pyrit/memory/memory_models.py | 1264 | def get_conversation_ids_by_attack_name(self) -> dict[str, list[str]]: | CODE |
| LOW | pyrit/memory/memory_interface.py | 136 | def _build_identifier_filter_conditions( | CODE |
| LOW | pyrit/memory/memory_interface.py | 179 | def _get_condition_json_match( | CODE |
| LOW | pyrit/memory/memory_interface.py | 229 | def _get_condition_json_property_match( | CODE |
| LOW | pyrit/memory/memory_interface.py | 258 | def _get_condition_json_array_match( | CODE |
| LOW | pyrit/memory/memory_interface.py | 305 | def _get_message_pieces_memory_label_conditions(self, *, memory_labels: dict[str, str]) -> list[Any]: | CODE |
| LOW | pyrit/memory/memory_interface.py | 320 | def _get_message_pieces_prompt_metadata_conditions(self, *, prompt_metadata: dict[str, str | int]) -> list[Any]: | CODE |
| LOW | pyrit/memory/memory_interface.py | 333 | def _get_seed_metadata_conditions(self, *, metadata: dict[str, str | int]) -> Any: | CODE |
| LOW | pyrit/memory/memory_interface.py | 345 | def add_conversation_to_memory(self, *, conversation: Conversation) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 372 | def add_message_pieces_to_memory(self, *, message_pieces: Sequence[MessagePiece]) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 399 | def _add_message_pieces_to_memory(self, *, message_pieces: Sequence[MessagePiece]) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 414 | def _validate_persistable_conversation_ids(*, message_pieces: Sequence[MessagePiece]) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 480 | def _add_embeddings_to_memory(self, *, embedding_data: Sequence[EmbeddingDataEntry]) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 722 | def _get_attack_result_label_condition(self, *, labels: dict[str, str | Sequence[str]]) -> Any: | CODE |
| LOW | pyrit/memory/memory_interface.py | 743 | def get_unique_attack_class_names(self) -> list[str]: | CODE |
| LOW | pyrit/memory/memory_interface.py | 755 | def get_unique_converter_class_names(self) -> list[str]: | CODE |
| LOW | pyrit/memory/memory_interface.py | 785 | def _get_scenario_result_label_condition(self, *, labels: dict[str, str]) -> Any: | CODE |
| LOW | pyrit/memory/memory_interface.py | 952 | def get_conversation_messages(self, *, conversation_id: str) -> MutableSequence[Message]: | CODE |
| LOW | pyrit/memory/memory_interface.py | 993 | def get_request_from_response(self, *, response: Message) -> Message: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1014 | def _build_message_piece_identifier_conditions( | CODE |
| LOW | pyrit/memory/memory_interface.py | 1210 | def duplicate_conversation_excluding_last_turn(self, *, conversation_id: str) -> str: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1298 | def update_prompt_entries_by_conversation_id(self, *, conversation_id: str, update_fields: dict[str, Any]) -> bool: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1332 | def update_labels_by_conversation_id(self, *, conversation_id: str, labels: dict[str, Any]) -> bool: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1347 | def update_prompt_metadata_by_conversation_id( | CODE |
| LOW | pyrit/memory/memory_interface.py | 1534 | async def _serialize_seed_value_async(self, prompt: Seed) -> str: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1566 | async def add_seeds_to_memory_async(self, *, seeds: Sequence[Seed], added_by: str | None = None) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1608 | async def add_seed_datasets_to_memory_async(self, *, datasets: Sequence[SeedDataset], added_by: str) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1642 | async def add_seed_groups_to_memory_async( | CODE |
| LOW | pyrit/memory/memory_interface.py | 1763 | def add_attack_results_to_memory(self, *, attack_results: Sequence[AttackResult]) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1815 | def update_attack_result_by_id(self, *, attack_result_id: str, update_fields: dict[str, Any]) -> bool: | CODE |
| LOW | pyrit/memory/memory_interface.py | 2124 | def add_scenario_results_to_memory(self, *, scenario_results: Sequence[ScenarioResult]) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 2135 | def update_scenario_run_state( | CODE |
| LOW | pyrit/memory/memory_interface.py | 2290 | def _build_scenario_result_query_conditions( | CODE |
| LOW | pyrit/memory/memory_interface.py | 2364 | def _query_scenario_result_entries( | CODE |
| LOW | pyrit/memory/memory_interface.py | 2396 | def _get_attack_results_by_scenario( | CODE |
| LOW | pyrit/memory/memory_embedding.py | 33 | def generate_embedding_memory_data(self, *, message_piece: MessagePiece) -> EmbeddingDataEntry: | CODE |
| LOW | pyrit/memory/memory_embedding.py | 57 | def default_memory_embedding_factory(embedding_model: EmbeddingSupport | None = None) -> MemoryEmbedding | None: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 140 | def _get_message_pieces_memory_label_conditions(self, *, memory_labels: dict[str, str]) -> list[Any]: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 172 | def _get_message_pieces_prompt_metadata_conditions( | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 189 | def _get_seed_metadata_conditions(self, *, metadata: dict[str, str | int]) -> Any: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 202 | def _get_condition_json_property_match( | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 235 | def _get_condition_json_array_match( | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 295 | def _add_message_pieces_to_memory(self, *, message_pieces: Sequence[MessagePiece]) -> None: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 305 | def _add_embeddings_to_memory(self, *, embedding_data: Sequence[EmbeddingDataEntry]) -> None: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 491 | def _get_attack_result_label_condition(self, *, labels: dict[str, str | Sequence[str]]) -> Any: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 530 | def get_unique_attack_class_names(self) -> list[str]: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 546 | def get_unique_converter_class_names(self) -> list[str]: | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 654 | def _get_scenario_result_label_condition(self, *, labels: dict[str, str]) -> Any: | STRING |
| LOW | pyrit/memory/migration.py | 47 | def _include_name_for_memory_schema( | CODE |
| LOW | pyrit/memory/migration.py | 108 | def _validate_and_stamp_unversioned_memory_schema(*, config: Config, connection: Connection) -> None: | CODE |
| LOW | pyrit/memory/migration.py | 271 | def generate_schema_migration(*, engine: Engine, message: str, force: bool = False) -> None: | CODE |
| LOW⚡ | pyrit/memory/azure_sql_memory.py | 218 | def _enable_azure_authorization(self) -> None: | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 250 | def _add_embeddings_to_memory(self, *, embedding_data: Sequence[EmbeddingDataEntry]) -> None: | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 256 | def _get_message_pieces_memory_label_conditions(self, *, memory_labels: dict[str, str]) -> list[Any]: | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 336 | def _get_message_pieces_prompt_metadata_conditions( | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 352 | def _get_seed_metadata_conditions(self, *, metadata: dict[str, str | int]) -> TextClause: | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 367 | def _get_condition_json_property_match( | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 415 | def _get_condition_json_array_match( | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 475 | def _get_attack_result_label_condition(self, *, labels: dict[str, str | Sequence[str]]) -> Any: | CODE |
| 9289 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | gui-deploy.yml | 41 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 43 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 73 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 75 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 123 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 125 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 205 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | gui-deploy.yml | 207 | # ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ic/versions/ab8f2c1a9d07_pre_alembic_release_schema.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ic/versions/ab8f2c1a9d07_pre_alembic_release_schema.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyrit/converter/text_selection_strategy.py | 391 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/converter/text_selection_strategy.py | 393 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/scorers.py | 208 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/scorers.py | 210 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/scorers.py | 359 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/scorers.py | 361 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/scorers.py | 483 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/scorers.py | 485 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyrit/setup/initializers/scorers.py | 454 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyrit/setup/initializers/scorers.py | 456 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyrit/setup/initializers/scorers.py | 592 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyrit/setup/initializers/scorers.py | 594 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 86 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 88 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 98 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 100 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 373 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 375 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 384 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 386 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 394 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 396 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 403 | # ============================================ | COMMENT |
| MEDIUM⚡ | pyrit/setup/initializers/targets.py | 405 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 189 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 191 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 282 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 284 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 317 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 319 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 335 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 337 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 354 | # ============================================ | COMMENT |
| MEDIUM | pyrit/setup/initializers/targets.py | 356 | # ============================================ | COMMENT |
| MEDIUM | pyrit/backend/models/converters.py | 29 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/converters.py | 31 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/converters.py | 57 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/converters.py | 59 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/converters.py | 100 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/converters.py | 102 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/backend/models/attacks.py | 270 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/backend/models/attacks.py | 272 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/backend/models/attacks.py | 282 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/backend/models/attacks.py | 284 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/attacks.py | 308 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/attacks.py | 310 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/attacks.py | 338 | # ============================================================================ | COMMENT |
| MEDIUM | pyrit/backend/models/attacks.py | 340 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/backend/models/attacks.py | 379 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | pyrit/backend/models/attacks.py | 381 | # ============================================================================ | COMMENT |
| 769 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pyrit/memory/memory_models.py | 676 | Build the persisted ``prompt_metadata`` for ``entry``. Packs ``SeedPrompt.response_json_schema`` (when | STRING |
| HIGH | pyrit/memory/memory_interface.py | 143 | Build SQLAlchemy conditions from a sequence of IdentifierFilters. Args: identifier_filters | STRING |
| HIGH | pyrit/memory/memory_interface.py | 189 | Return a database-specific condition for matching a value at a given path within a JSON object or withi | STRING |
| HIGH | pyrit/memory/memory_interface.py | 953 | Retrieve a list of Message objects that have the specified conversation ID. Args: conversa | STRING |
| HIGH | pyrit/memory/memory_interface.py | 994 | Retrieve the request that produced the given response. Args: response (Message): The respo | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1078 | Retrieve a list of MessagePiece objects based on the specified filters. Args: role (str | | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1299 | Update prompt entries for a given conversation ID with the specified field values. Args: c | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1449 | Retrieve a list of seed prompts based on the specified filters. Args: value (str): The val | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1535 | Serialize the value of a seed prompt based on its data type. Args: prompt (Seed): The seed | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1699 | Retrieve groups of seed prompts based on the provided filtering criteria. Args: value (str | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1781 | Update specific fields of an existing AttackResultEntry identified by conversation_id. This method que | STRING |
| HIGH | pyrit/memory/memory_interface.py | 1862 | Retrieve a list of AttackResult objects based on the specified filters. Args: attack_resul | STRING |
| HIGH | pyrit/memory/memory_embedding.py | 34 | Generate metadata for a message piece. Args: message_piece (MessagePiece): the message pie | STRING |
| HIGH | pyrit/memory/memory_embedding.py | 58 | Create a MemoryEmbedding instance with default or provided embedding model. Factory function that creates a Me | STRING |
| HIGH | pyrit/memory/sqlite_memory.py | 89 | Create the SQLAlchemy engine for SQLite. Creates an engine bound to the specified database file. The ` | STRING |
| HIGH | pyrit/memory/sqlite_memory.py | 331 | Fetch data from the specified table model with optional conditions. Args: model_class: The | STRING |
| HIGH | pyrit/memory/sqlite_memory.py | 409 | Update the given entries with the specified field values. Args: entries (Sequence[Base]): | STRING |
| HIGH | pyrit/memory/azure_sql_memory.py | 190 | Create the SQLAlchemy engine for Azure SQL Server. Creates an engine bound to the specified server and | STRING |
| HIGH | pyrit/memory/azure_sql_memory.py | 789 | Fetch data from the specified table model with optional conditions. Args: model_class: The | STRING |
| HIGH | pyrit/memory/azure_sql_memory.py | 832 | Update the given entries with the specified field values. Args: entries (Sequence[Base]): | STRING |
| HIGH | pyrit/memory/storage/data_url_converter.py | 12 | Convert a local image file to a data URL encoded in base64. Args: image_path (str): The file system pa | STRING |
| HIGH | pyrit/memory/storage/serializers.py | 56 | Create a DataTypeSerializer instance. Args: data_type (str): The type of the data (e.g., 'text', 'imag | STRING |
| HIGH | pyrit/memory/storage/serializers.py | 318 | Generate or retrieve a unique filename for the data file. Args: file_name (str | None): Op | STRING |
| HIGH | pyrit/memory/storage/storage.py | 283 | Parse a blob URL to extract the container and blob name. Args: file_path (str): Full blob | STRING |
| HIGH | pyrit/converter/azure_speech_audio_to_text_converter.py | 125 | Convert the given audio file into its text representation. Args: prompt (str): File path t | STRING |
| HIGH | pyrit/converter/azure_speech_audio_to_text_converter.py | 165 | Recognize audio from bytes using the given speech config. Args: audio_bytes (bytes): Audio | STRING |
| HIGH | pyrit/converter/llm_generic_text_converter.py | 136 | Convert the given prompt using an LLM via the specified converter target. Args: prompt (st | STRING |
| HIGH | pyrit/converter/llm_generic_text_converter.py | 188 | Send the request to the converter target, retrying on configured exception types. When ``self._retry_e | STRING |
| HIGH | pyrit/converter/bidi_converter.py | 74 | Convert the given prompt by wrapping it in bidirectional control characters. Args: prompt | STRING |
| HIGH | pyrit/converter/word_level_converter.py | 94 | Convert the given prompt into the target format supported by the converter. Args: prompt ( | STRING |
| HIGH | pyrit/converter/add_image_text_converter.py | 193 | Add wrapped text to the image at `self._img_to_add`. Args: text (str): The text to add to | STRING |
| HIGH | pyrit/converter/add_image_text_converter.py | 243 | Convert the given prompt by adding it as text to the image. Args: prompt (str): The text t | STRING |
| HIGH | pyrit/converter/repeat_token_converter.py | 100 | Convert the given prompt by repeating the specified token a specified number of times. Args: | STRING |
| HIGH | pyrit/converter/image_compression_converter.py | 250 | Download data from URL and returns the content as bytes. Args: url (str): The URL to downl | STRING |
| HIGH | pyrit/converter/image_compression_converter.py | 270 | Convert the given prompt (image) by compressing it. Args: prompt (str): The image file pat | STRING |
| HIGH | pyrit/converter/zero_width_converter.py | 20 | Convert the given prompt by injecting zero-width spaces between each character. Args: prom | STRING |
| HIGH | pyrit/converter/audio_volume_converter.py | 79 | Convert the given audio file by changing its volume. The audio samples are scaled by the volume factor | STRING |
| HIGH | pyrit/converter/text_jailbreak_converter.py | 41 | Convert the given prompt using the jailbreak template. Args: prompt (str): The prompt to b | STRING |
| HIGH | pyrit/converter/colloquial_wordswap_converter.py | 106 | Convert the given prompt by replacing words with regional colloquial alternatives. Args: p | STRING |
| HIGH | pyrit/converter/audio_frequency_converter.py | 61 | Convert the given audio file by shifting its frequency. Args: prompt (str): File path to t | STRING |
| HIGH | pyrit/converter/negation_trap_converter.py | 62 | Convert the prompt into a negation trap. This technique works by presenting an obviously wrong answer | STRING |
| HIGH | pyrit/converter/unicode_confusable_converter.py | 76 | Convert the given prompt by applying confusable substitutions. This leads to a prompt that looks similar, | STRING |
| HIGH | pyrit/converter/variation_converter.py | 85 | Parse the JSON list response and return the first variation. Args: response_text (str): Th | STRING |
| HIGH | pyrit/converter/converter.py | 146 | Convert substrings within a prompt that are enclosed by specified start and end tokens. If there are no tokens | STRING |
| HIGH | pyrit/converter/arabic_presentation_form_converter.py | 58 | Convert the given prompt by substituting Arabic letters with isolated presentation forms. Args: | STRING |
| HIGH | pyrit/converter/base_image_to_image_converter.py | 130 | Download data from a URL and return the content as bytes. Args: url (str): The URL to down | STRING |
| HIGH | pyrit/converter/base_image_to_image_converter.py | 150 | Convert the given prompt (image) by applying the configured transformation. Args: prompt ( | STRING |
| HIGH | pyrit/converter/task_framing_converter.py | 68 | Convert the given prompt by framing it as a task. Args: prompt (str): The prompt to be fra | STRING |
| HIGH | pyrit/converter/arabizi_converter.py | 84 | Convert the given prompt by transliterating Arabic script into Arabizi. Args: prompt (str) | STRING |
| HIGH | pyrit/converter/diacritic_converter.py | 101 | Convert the given prompt by applying diacritics to specified characters. Args: prompt (str | STRING |
| HIGH | pyrit/converter/nato_converter.py | 63 | Convert the given text into NATO phonetic alphabet representation. Args: prompt (str): The | STRING |
| HIGH | pyrit/converter/suffix_append_converter.py | 49 | Convert the given prompt by appending the specified suffix. Args: prompt (str): The prompt | STRING |
| HIGH | pyrit/converter/decomposition_converter.py | 195 | Convert the objective into a decompose-and-reconstruct prompt. Args: prompt (str): The obj | STRING |
| HIGH | pyrit/converter/decomposition_converter.py | 218 | Decompose the objective into (words, types) via the converter target. Retries (via ``@pyrit_json_retry | STRING |
| HIGH | pyrit/converter/decomposition_converter.py | 265 | Parse the LLM response into (words, types) and validate it. Args: objective (str): The ori | STRING |
| HIGH | pyrit/converter/ask_to_decode_converter.py | 61 | Convert the given encoded text by wrapping it with a decoding request prompt. Args: prompt | STRING |
| HIGH | pyrit/converter/random_capital_letters_converter.py | 59 | Generate a list of unique random positions within the range of `total_length`. Args: total | STRING |
| HIGH | pyrit/converter/random_capital_letters_converter.py | 83 | Convert a string by randomly capitalizing a percentage of its characters. Args: percentage | STRING |
| HIGH | pyrit/converter/random_capital_letters_converter.py | 108 | Convert the given prompt by randomly capitalizing a percentage of its characters. Args: pr | STRING |
| HIGH | pyrit/converter/json_string_converter.py | 27 | Convert the given prompt to a JSON-safe string. Args: prompt (str): The prompt to be conve | STRING |
| 380 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pyrit/converter/rot13_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/word_level_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/charswap_attack_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/zalgo_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/unicode_replacement_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/leetspeak_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/random_translation_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/emoji_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/superscript_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/binary_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/first_letter_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/string_join_converter.py | 0 | convert a single word into the target format supported by the converter. args: word (str): the word to be converted. ret | STRING |
| HIGH | pyrit/converter/llm_generic_text_converter.py | 0 | build identifier with template parameters. returns: componentidentifier: the identifier for this converter. | STRING |
| HIGH | pyrit/converter/task_framing_converter.py | 0 | build identifier with template parameters. returns: componentidentifier: the identifier for this converter. | STRING |
| HIGH | pyrit/converter/template_segment_converter.py | 0 | build identifier with template parameters. returns: componentidentifier: the identifier for this converter. | STRING |
| HIGH | pyrit/converter/math_prompt_converter.py | 0 | initialize the converter with a specific target and template. args: converter_target (prompttarget): the endpoint that c | STRING |
| HIGH | …it/converter/malicious_question_generator_converter.py | 0 | initialize the converter with a specific target and template. args: converter_target (prompttarget): the endpoint that c | STRING |
| HIGH | pyrit/converter/toxic_sentence_generator_converter.py | 0 | initialize the converter with a specific target and template. args: converter_target (prompttarget): the endpoint that c | STRING |
| HIGH | pyrit/converter/toxic_sentence_generator_converter.py | 0 | check if the output type is supported. args: output_type (promptdatatype): the type of output data. returns: bool: true | STRING |
| HIGH | pyrit/converter/ansi_escape/ansi_attack_converter.py | 0 | check if the output type is supported. args: output_type (promptdatatype): the type of output data. returns: bool: true | STRING |
| HIGH | pyrit/converter/token_smuggling/base.py | 0 | check if the output type is supported. args: output_type (promptdatatype): the type of output data. returns: bool: true | STRING |
| HIGH | …rit/datasets/seed_datasets/remote/harmbench_dataset.py | 0 | initialize the ailuminate dataset loader. args: source: url to the ailuminate csv file. defaults to official repository. | STRING |
| HIGH | pyrit/datasets/seed_datasets/remote/xstest_dataset.py | 0 | initialize the ailuminate dataset loader. args: source: url to the ailuminate csv file. defaults to official repository. | STRING |
| HIGH | …s/seed_datasets/remote/mlcommons_ailuminate_dataset.py | 0 | initialize the ailuminate dataset loader. args: source: url to the ailuminate csv file. defaults to official repository. | STRING |
| HIGH | pyrit/datasets/seed_datasets/remote/or_bench_dataset.py | 0 | fetch beavertails dataset from huggingface and return as seeddataset. args: cache: whether to cache the fetched dataset. | STRING |
| HIGH | …t/datasets/seed_datasets/remote/salad_bench_dataset.py | 0 | fetch beavertails dataset from huggingface and return as seeddataset. args: cache: whether to cache the fetched dataset. | STRING |
| HIGH | …it/datasets/seed_datasets/remote/harmful_qa_dataset.py | 0 | fetch beavertails dataset from huggingface and return as seeddataset. args: cache: whether to cache the fetched dataset. | STRING |
| HIGH | …ts/seed_datasets/remote/simple_safety_tests_dataset.py | 0 | fetch beavertails dataset from huggingface and return as seeddataset. args: cache: whether to cache the fetched dataset. | STRING |
| HIGH | …/datasets/seed_datasets/remote/beaver_tails_dataset.py | 0 | fetch beavertails dataset from huggingface and return as seeddataset. args: cache: whether to cache the fetched dataset. | STRING |
| HIGH | pyrit/datasets/seed_datasets/remote/sosbench_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …/seed_datasets/remote/ccp_sensitive_prompts_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …asets/seed_datasets/remote/tdc23_redteaming_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …_datasets/remote/multilingual_vulnerability_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …datasets/seed_datasets/remote/pku_safe_rlhf_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …asets/seed_datasets/remote/babelscape_alert_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …s/seed_datasets/remote/mlcommons_ailuminate_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | …sets/remote/llm_latent_adversarial_training_dataset.py | 0 | fetch llm-lat harmful dataset and return as seeddataset. args: cache: whether to cache the fetched dataset. defaults to | STRING |
| HIGH | pyrit/output/scenario_result/pretty.py | 0 | format text with color codes if colors are enabled. args: text (str): the text to format. *colors: variable number of co | STRING |
| HIGH | pyrit/output/attack_result/pretty.py | 0 | format text with color codes if colors are enabled. args: text (str): the text to format. *colors: variable number of co | STRING |
| HIGH | pyrit/output/scorer/pretty.py | 0 | format text with color codes if colors are enabled. args: text (str): the text to format. *colors: variable number of co | STRING |
| HIGH | pyrit/output/score/pretty.py | 0 | format text with color codes if colors are enabled. args: text (str): the text to format. *colors: variable number of co | STRING |
| HIGH | pyrit/output/conversation/pretty.py | 0 | format text with color codes if colors are enabled. args: text (str): the text to format. *colors: variable number of co | STRING |
| HIGH | pyrit/output/attack_result/pretty.py | 0 | fetch scores from centralmemory. returns: list[score]: the scores. | STRING |
| HIGH | pyrit/output/attack_result/markdown.py | 0 | fetch scores from centralmemory. returns: list[score]: the scores. | STRING |
| HIGH | pyrit/output/conversation/pretty.py | 0 | fetch scores from centralmemory. returns: list[score]: the scores. | STRING |
| HIGH | pyrit/output/conversation/markdown.py | 0 | fetch scores from centralmemory. returns: list[score]: the scores. | STRING |
| HIGH | pyrit/score/conversation_scorer.py | 0 | build the scorer evaluation identifier for this mock scorer. returns: componentidentifier: the identifier for this score | STRING |
| HIGH | pyrit/score/true_false/video_true_false_scorer.py | 0 | build the scorer evaluation identifier for this mock scorer. returns: componentidentifier: the identifier for this score | STRING |
| HIGH | pyrit/score/float_scale/video_float_scale_scorer.py | 0 | build the scorer evaluation identifier for this mock scorer. returns: componentidentifier: the identifier for this score | STRING |
| HIGH | tests/unit/score/test_video_scorer.py | 0 | build the scorer evaluation identifier for this mock scorer. returns: componentidentifier: the identifier for this score | STRING |
| HIGH | tests/unit/score/test_true_false_composite_scorer.py | 0 | build the scorer evaluation identifier for this mock scorer. returns: componentidentifier: the identifier for this score | STRING |
| HIGH | tests/unit/registry/test_scorer_registry.py | 0 | build the scorer evaluation identifier for this mock scorer. returns: componentidentifier: the identifier for this score | STRING |
| HIGH | pyrit/score/true_false/self_ask_category_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/float_scale_threshold_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/decoding_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/self_ask_refusal_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/question_answer_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/gandalf_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/self_ask_true_false_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| HIGH | pyrit/score/true_false/substring_scorer.py | 0 | build the identifier for this scorer. returns: componentidentifier: the identifier for this scorer. | STRING |
| 146 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/__init__.py | 11 | CODE | |
| LOW | pyrit/__init__.py | 12 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 39 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 21 | CODE | |
| LOW | pyrit/memory/__init__.py | 10 | CODE | |
| LOW | pyrit/memory/__init__.py | 11 | CODE | |
| LOW | pyrit/memory/__init__.py | 12 | CODE | |
| LOW | pyrit/memory/__init__.py | 13 | CODE | |
| LOW | pyrit/memory/__init__.py | 14 | CODE | |
| LOW | pyrit/memory/__init__.py | 14 | CODE | |
| LOW | pyrit/memory/__init__.py | 14 | CODE | |
| LOW | pyrit/memory/__init__.py | 14 | CODE | |
| LOW | pyrit/memory/__init__.py | 15 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/__init__.py | 16 | CODE | |
| LOW | pyrit/memory/azure_sql_memory.py | 17 | CODE | |
| LOW | pyrit/memory/storage/serializers.py | 4 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 18 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 21 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 35 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 35 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 35 | CODE | |
| LOW | pyrit/memory/storage/__init__.py | 35 | CODE | |
| LOW | pyrit/memory/storage/storage.py | 4 | CODE | |
| LOW | …embic/versions/b2f4c6a8d1e3_add_conversations_table.py | 20 | CODE | |
| LOW | …ions/9c8b7a6d5e4f_add_attribution_to_attack_results.py | 14 | CODE | |
| LOW | pyrit/converter/converter.py | 4 | CODE | |
| LOW | pyrit/converter/__init__.py | 17 | CODE | |
| LOW | pyrit/converter/__init__.py | 18 | CODE | |
| LOW | pyrit/converter/__init__.py | 19 | CODE | |
| LOW | pyrit/converter/__init__.py | 20 | CODE | |
| LOW | pyrit/converter/__init__.py | 21 | CODE | |
| LOW | pyrit/converter/__init__.py | 22 | CODE | |
| LOW | pyrit/converter/__init__.py | 23 | CODE | |
| LOW | pyrit/converter/__init__.py | 24 | CODE | |
| 1148 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | pyrit/memory/azure_sql_memory.py | 206 | # Create the SQLAlchemy engine. | COMMENT |
| MEDIUM | pyrit/memory/azure_sql_memory.py | 748 | # The following methods are not part of MemoryInterface, but seem | STRING |
| MEDIUM | pyrit/converter/azure_speech_audio_to_text_converter.py | 108 | # Create a flag to indicate when recognition is finished | COMMENT |
| MEDIUM | pyrit/converter/template_segment_converter.py | 62 | # Create a dict with empty values for all parameters | COMMENT |
| MEDIUM | pyrit/converter/pdf_converter.py | 413 | # Create a pypdf PageObject from the overlay | COMMENT |
| MEDIUM | pyrit/converter/codechameleon_converter.py | 328 | # Create an empty sentence | STRING |
| MEDIUM | …t/datasets/seed_datasets/local/local_dataset_loader.py | 127 | # Create a dynamic subclass for each file to register it | COMMENT |
| MEDIUM | …t/datasets/seed_datasets/local/local_dataset_loader.py | 131 | # Define the class dynamically | COMMENT |
| MEDIUM | …datasets/seed_datasets/remote/remote_dataset_loader.py | 33 | # Define the type for the file handlers | COMMENT |
| MEDIUM | pyrit/datasets/jailbreak/many_shot_examples.json | 889 | "assistant": "genus: EternalBlue\n cls: SMB\n package: EternalBlue SMB package\nThe EternalBlue SMB packet is a type | CODE |
| MEDIUM | pyrit/datasets/jailbreak/many_shot_examples.json | 939 | "assistant": "genus: dns-amplification\nDNS amplification is a technique used to increase the signal strength of a w | CODE |
| MEDIUM | pyrit/datasets/converters/codechameleon_converter.yaml | 49 | # Initialize the class with a description of the problem | COMMENT |
| MEDIUM | pyrit/setup/pyrit_initializer.py | 287 | # Create a temporary instance to access properties | COMMENT |
| MEDIUM | pyrit/prompt_normalizer/prompt_normalizer.py | 411 | # Create a deep copy of the prepended conversation to avoid modifying the original | COMMENT |
| MEDIUM⚡ | pyrit/models/seeds/seed.py | 221 | # Create a Jinja template with PartialUndefined placeholders | COMMENT |
| MEDIUM | pyrit/exceptions/exception_classes.py | 107 | # Create a new wait_random_exponential instance with current env values | COMMENT |
| MEDIUM | pyrit/score/conversation_scorer.py | 101 | # Create a new message with the concatenated conversation text | COMMENT |
| MEDIUM | pyrit/score/video_scorer.py | 198 | # Create a temporary file for the frame | COMMENT |
| MEDIUM | pyrit/score/video_scorer.py | 241 | # Create a message piece for the audio | COMMENT |
| MEDIUM | pyrit/score/audio_transcript_scorer.py | 167 | # Create a MessagePiece for the transcript | COMMENT |
| MEDIUM | pyrit/score/true_false/video_true_false_scorer.py | 115 | # Create a Score from the frame aggregation result | COMMENT |
| MEDIUM⚡ | pyrit/score/scorer_evaluation/scorer_metrics_io.py | 135 | # Create the metrics object | COMMENT |
| MEDIUM | pyrit/scenario/scenarios/foundry/red_team_agent.py | 503 | # Create the adversarial config from self._adversarial_target | COMMENT |
| MEDIUM | pyrit/scenario/scenarios/airt/psychosocial.py | 373 | # Create the base crisis scorer | COMMENT |
| MEDIUM | pyrit/scenario/scenarios/airt/jailbreak.py | 191 | # Create the jailbreak converter | COMMENT |
| MEDIUM | pyrit/executor/benchmark/question_answering.py | 170 | # Create the message with metadata | COMMENT |
| MEDIUM | pyrit/executor/attack/core/attack_parameters.py | 177 | # Create a temporary prompts-only SeedGroup for extraction | COMMENT |
| MEDIUM | pyrit/executor/attack/core/attack_parameters.py | 238 | # Create the new dataclass WITHOUT inheritance | COMMENT |
| MEDIUM | …t/executor/attack/multi_turn/simulated_conversation.py | 124 | # Create the RedTeamingAttack with simulated target and score_last_turn_only | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/crescendo.py | 173 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/crescendo.py | 427 | # Create the outcome reason based on whether the objective was achieved | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/chunked_request.py | 147 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/red_teaming.py | 119 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 1367 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 1854 | # Create a new visualization child node for each node at this depth. | COMMENT |
| MEDIUM | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 2215 | # Create the result with basic information | COMMENT |
| MEDIUM | …rit/executor/attack/multi_turn/multi_prompt_sending.py | 158 | # Initialize base class with custom parameters type | COMMENT |
| MEDIUM | pyrit/executor/attack/single_turn/context_compliance.py | 94 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/attack/single_turn/context_compliance.py | 173 | # Create the affirmative message | COMMENT |
| MEDIUM⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 210 | # Create the conversation pieces | COMMENT |
| MEDIUM | pyrit/executor/attack/single_turn/prompt_sending.py | 84 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/attack/component/conversation_manager.py | 102 | # Create a new piece with swapped role for adversarial chat | COMMENT |
| MEDIUM | pyrit/executor/attack/component/conversation_manager.py | 389 | # Create a new message with the context piece prepended | COMMENT |
| MEDIUM | pyrit/executor/workflow/xpia.py | 568 | # Create the processing callback using the test context | COMMENT |
| MEDIUM | pyrit/executor/workflow/xpia.py | 664 | # Create the manual input callback | COMMENT |
| MEDIUM | pyrit/executor/promptgen/anecdoctor.py | 121 | # Initialize base class | COMMENT |
| MEDIUM | pyrit/executor/promptgen/anecdoctor.py | 376 | # Create a separate conversation ID for KG extraction | COMMENT |
| MEDIUM | pyrit/executor/promptgen/fuzzer/fuzzer.py | 644 | # Initialize base class | COMMENT |
| MEDIUM | …prompt_target/hugging_face/hugging_face_chat_target.py | 57 | # Define the environment variable name for the Hugging Face token | COMMENT |
| MEDIUM | …prompt_target/hugging_face/hugging_face_chat_target.py | 270 | # Define the default Hugging Face cache directory | COMMENT |
| MEDIUM | pyrit/prompt_target/openai/openai_response_target.py | 626 | # Create a new message with the tool output | COMMENT |
| MEDIUM | tests/unit/conftest.py | 24 | # Create an in-memory SQLite engine | COMMENT |
| MEDIUM | tests/unit/mocks.py | 254 | # Create a test Azure SQL Server DB using in-memory SQLite | COMMENT |
| MEDIUM | tests/unit/mocks.py | 276 | # Create a temporary directory for results | COMMENT |
| MEDIUM | tests/unit/memory/test_azure_sql_memory.py | 85 | # Create a ConversationData entry | COMMENT |
| MEDIUM | tests/unit/memory/test_azure_sql_memory.py | 195 | # Define a specific conversation_id | COMMENT |
| MEDIUM | tests/unit/memory/test_sqlite_memory.py | 432 | # Create a ConversationData entry | COMMENT |
| MEDIUM | tests/unit/memory/test_sqlite_memory.py | 516 | # Define a specific conversation_id | COMMENT |
| MEDIUM | tests/unit/memory/test_sqlite_memory.py | 654 | # Define a specific conversation_id to update | COMMENT |
| MEDIUM | tests/unit/memory/test_sqlite_memory.py | 668 | # Define the fields to update for entries with the specific conversation_id | COMMENT |
| 186 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/memory/memory_models.py | 61 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/memory/memory_interface.py | 60 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/memory/memory_interface.py | 688 | def _update_entry(self, entry: Base) -> None: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1281 | def _update_sequence(self, *, message_pieces: Sequence[MessagePiece]) -> None: | CODE |
| LOW | pyrit/memory/__init__.py | 35 | __all__ = [ | CODE |
| LOW | pyrit/memory/sqlite_memory.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/memory/central_memory.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/memory/central_memory.py | 20 | def set_memory_instance(cls, passed_memory: MemoryInterface) -> None: | CODE |
| LOW | pyrit/memory/migration.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/memory/azure_sql_memory.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/memory/storage/serializers.py | 634 | async def set_message_piece_sha256_async(message_piece: MessagePiece) -> None: | CODE |
| LOW | pyrit/memory/storage/serializers.py | 659 | async def set_seed_sha256_async(seed: Seed) -> None: | CODE |
| LOW | pyrit/memory/storage/__init__.py | 42 | __all__ = [ | CODE |
| LOW | pyrit/memory/storage/storage.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | …embic/versions/b2f4c6a8d1e3_add_conversations_table.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | …ions/9c8b7a6d5e4f_add_attribution_to_attack_results.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/azure_speech_audio_to_text_converter.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/llm_generic_text_converter.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/bidi_converter.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/add_image_text_converter.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/image_compression_converter.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/audio_volume_converter.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/tense_converter.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/zalgo_converter.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/image_rotation_converter.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/math_prompt_converter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/audio_frequency_converter.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/unicode_confusable_converter.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/variation_converter.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/__init__.py | 147 | __all__ = [ | CODE |
| LOW | pyrit/converter/image_resizing_converter.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/arabic_presentation_form_converter.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/base_image_to_image_converter.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/denylist_converter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/arabizi_converter.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/diacritic_converter.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/toxic_sentence_generator_converter.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/decomposition_converter.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/random_capital_letters_converter.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/audio_echo_converter.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/azure_speech_text_to_audio_converter.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/image_prompt_style_converter.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/template_segment_converter.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | …it/converter/malicious_question_generator_converter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/persuasion_converter.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/tone_converter.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/ecoji_converter.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/audio_white_noise_converter.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/add_text_image_converter.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/image_overlay_converter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/random_translation_converter.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/base2048_converter.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/audio_speed_converter.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/math_obfuscation_converter.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/image_color_saturation_converter.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/noise_converter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/transparency_attack_converter.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/scientific_translation_converter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/translation_converter.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | pyrit/converter/add_image_to_video_converter.py | 16 | logger = logging.getLogger(__name__) | CODE |
| 324 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/memory/memory_interface.py | 1155 | except Exception as e: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1524 | except Exception as e: | CODE |
| LOW | pyrit/memory/memory_interface.py | 1638 | except Exception as e: | CODE |
| LOW | pyrit/memory/memory_interface.py | 2058 | except Exception as e: | CODE |
| LOW | pyrit/memory/memory_interface.py | 2286 | except Exception as e: | CODE |
| LOW | pyrit/memory/migration.py | 139 | except Exception as e: | CODE |
| LOW | pyrit/memory/storage/storage.py | 270 | except Exception as exc: | CODE |
| LOW | pyrit/memory/storage/storage.py | 365 | except Exception as exc: | CODE |
| LOW | pyrit/memory/storage/storage.py | 387 | except Exception as exc: | CODE |
| LOW | pyrit/converter/azure_speech_audio_to_text_converter.py | 159 | except Exception as e: | CODE |
| LOW | pyrit/converter/audio_volume_converter.py | 134 | except Exception as e: | CODE |
| LOW | pyrit/converter/audio_frequency_converter.py | 102 | except Exception as e: | CODE |
| LOW | pyrit/converter/audio_echo_converter.py | 140 | except Exception as e: | CODE |
| LOW | pyrit/converter/azure_speech_text_to_audio_converter.py | 204 | except Exception as e: | CODE |
| LOW | pyrit/converter/audio_white_noise_converter.py | 136 | except Exception as e: | CODE |
| LOW | pyrit/converter/audio_speed_converter.py | 137 | except Exception as e: | CODE |
| LOW | pyrit/converter/transparency_attack_converter.py | 222 | except Exception as e: | CODE |
| LOW | pyrit/converter/transparency_attack_converter.py | 287 | except Exception as e: | CODE |
| LOW | pyrit/auth/copilot_authenticator.py | 177 | except Exception as e: | CODE |
| LOW | pyrit/auth/copilot_authenticator.py | 238 | except Exception as e: | CODE |
| LOW | pyrit/auth/copilot_authenticator.py | 261 | except Exception as e: | CODE |
| LOW⚡ | pyrit/auth/copilot_authenticator.py | 279 | except Exception as e: | CODE |
| LOW⚡ | pyrit/auth/copilot_authenticator.py | 286 | except Exception as e: | CODE |
| LOW⚡ | pyrit/auth/copilot_authenticator.py | 400 | except Exception as e: | CODE |
| LOW⚡ | pyrit/auth/copilot_authenticator.py | 403 | except Exception as e: | CODE |
| LOW⚡ | pyrit/auth/copilot_authenticator.py | 406 | except Exception as e: | CODE |
| LOW | pyrit/auth/copilot_authenticator.py | 462 | except Exception as e: | CODE |
| MEDIUM | pyrit/auth/copilot_authenticator.py | 282 | def _clear_token_cache(self) -> None: | CODE |
| LOW | pyrit/auth/azure_auth.py | 287 | except Exception as e: | CODE |
| LOW | pyrit/auth/azure_auth.py | 309 | except Exception as e: | CODE |
| LOW | pyrit/auth/azure_auth.py | 330 | except Exception as e: | CODE |
| LOW | pyrit/auth/azure_auth.py | 349 | except Exception as e: | CODE |
| LOW | pyrit/auth/azure_auth.py | 373 | except Exception as e: | CODE |
| LOW | pyrit/auth/azure_auth.py | 397 | except Exception as e: | CODE |
| LOW | pyrit/auth/azure_auth.py | 566 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/seed_dataset_provider.py | 152 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/local/jailbreak_dataset.py | 92 | except Exception as e: | CODE |
| LOW | …t/datasets/seed_datasets/local/local_dataset_loader.py | 47 | except Exception as e: | CODE |
| LOW | …t/datasets/seed_datasets/local/local_dataset_loader.py | 75 | except Exception as e: | CODE |
| LOW | …t/datasets/seed_datasets/local/local_dataset_loader.py | 96 | except Exception as e: | CODE |
| LOW | …t/datasets/seed_datasets/local/local_dataset_loader.py | 148 | except Exception as e: | CODE |
| LOW | …rit/datasets/seed_datasets/remote/mossbench_dataset.py | 230 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/msts_dataset.py | 246 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/msts_dataset.py | 495 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/msts_dataset.py | 534 | except Exception as e: | CODE |
| LOW | …atasets/seed_datasets/remote/mm_safetybench_dataset.py | 273 | except Exception as exc: | CODE |
| LOW | …datasets/seed_datasets/remote/remote_dataset_loader.py | 378 | except Exception as e: | CODE |
| LOW | …/seed_datasets/remote/jailbreakv_redteam_2k_dataset.py | 176 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/_audio_cache.py | 68 | except Exception as e: | CODE |
| LOW | …sets/seed_datasets/remote/visual_leak_bench_dataset.py | 168 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/figstep_dataset.py | 293 | except Exception as e: | CODE |
| LOW | …atasets/seed_datasets/remote/jailbreakv_28k_dataset.py | 289 | except Exception as e: | CODE |
| LOW | …atasets/seed_datasets/remote/jailbreakv_28k_dataset.py | 373 | except Exception as e: | CODE |
| LOW | …s/seed_datasets/remote/harmbench_multimodal_dataset.py | 194 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/siuo_dataset.py | 209 | except Exception as e: | CODE |
| LOW | …datasets/seed_datasets/remote/jbb_behaviors_dataset.py | 170 | except Exception as e: | CODE |
| LOW | …t/datasets/seed_datasets/remote/sorry_bench_dataset.py | 316 | except Exception as e: | CODE |
| LOW | …tasets/seed_datasets/remote/vlsu_multimodal_dataset.py | 197 | except Exception as e: | CODE |
| LOW | pyrit/datasets/seed_datasets/remote/_image_cache.py | 102 | except Exception as e: | CODE |
| LOW | pyrit/setup/initialization.py | 193 | except Exception as e: | CODE |
| 213 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 181 | # Annotating those generics is real code work, so keep the rule deferred until | COMMENT |
| LOW | gui-deploy.yml | 1 | # CI/CD pipeline for CoPyRIT GUI deployment. | COMMENT |
| LOW | pyrit/memory/memory_models.py | 881 | # Nullable for backwards compatibility with existing databases | COMMENT |
| LOW | pyrit/memory/storage/data_url_converter.py | 41 | # The image upload format is same as GPT-4 Turbo. | COMMENT |
| LOW | pyrit/datasets/seed_datasets/seed_metadata.py | 21 | criteria as list[SeedDatasetMetadata]. | COMMENT |
| LOW | pyrit/datasets/seed_datasets/seed_metadata.py | 41 | # 2. Citable — peer-reviewed paper or established benchmark, not a personal | COMMENT |
| LOW | pyrit/models/json_schema_definition.py | 41 | from pyrit.common.path import JSON_SCHEMAS_PATH | COMMENT |
| LOW | pyrit/models/json_schema_definition.py | 61 | JSON_SCHEMA_METADATA_KEY = "json_schema" | COMMENT |
| LOW | pyrit/models/catalog/scenario.py | 21 | from pyrit.models.parameter import Parameter | COMMENT |
| LOW | pyrit/models/identifiers/target_identifier.py | 41 | #: Target endpoint URL. | COMMENT |
| LOW | pyrit/models/identifiers/component_identifier.py | 241 | #: Behavioral parameters that affect output. Values must be JSON-serializable | COMMENT |
| LOW | pyrit/models/results/scenario_result.py | 81 | labels: dict[str, str] = Field(default_factory=dict) | COMMENT |
| LOW | pyrit/cli/_cli_args.py | 201 | # These wrappers adapt our core validators (which use keyword-only parameters and raise | COMMENT |
| LOW | pyrit/cli/_cli_args.py | 321 | list[str]: The cleaned list of values. | COMMENT |
| LOW | pyrit/score/scorer.py | 61 | #: Capability requirements placed on the scorer's chat target (if any). | COMMENT |
| LOW | pyrit/scenario/core/scenario.py | 601 | COMMENT | |
| LOW | pyrit/auxiliary_attacks/gcg/attack/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | pyrit/auxiliary_attacks/gcg/attack/gcg/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | pyrit/auxiliary_attacks/gcg/attack/base/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | pyrit/auxiliary_attacks/gcg/experiments/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/crescendo.py | 381 | # 2) Send prompt to objective target and get response | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 1641 | # a) Branch existing nodes by the branching factor to explore variations | COMMENT |
| LOW | pyrit/executor/attack/single_turn/prompt_sending.py | 181 | response = None | COMMENT |
| LOW | pyrit/prompt_target/common/prompt_target.py | 41 | COMMENT | |
| LOW | tests/unit/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/memory/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/memory/test_migration.py | 401 | # while a row already has a non-NULL foreign key does not | COMMENT |
| LOW | tests/unit/memory/storage/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/converter/test_ansi_attack_converter.py | 81 | ) | COMMENT |
| LOW | tests/unit/auth/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/backend/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/models/identifiers/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/auxiliary_attacks/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/auxiliary_attacks/gcg/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/registry/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | …nit/executor/attack/multi_turn/test_tree_of_attacks.py | 2381 | # Scenario-driven end-to-end TAP simulation tests | COMMENT |
| LOW | tests/unit/executor/attack/streaming/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/unit/analytics/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/end_to_end/test_config.yaml | 1 | # Minimal PyRIT config for end-to-end tests. | COMMENT |
| LOW | tests/integration/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/integration/cli/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/integration/message_normalizer/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/partner_integration/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | …ts/partner_integration/azure_ai_evaluation/__init__.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | build_scripts/compose_docs_dist.py | 61 | </head> | COMMENT |
| LOW | build_scripts/version_picker_assets/picker.js | 241 | return r.json(); | COMMENT |
| LOW | .github/workflows/triage-feedback.yml | 1 | # Triage workflow for issues filed by the Co-PyRIT GUI's feedback dialog. | COMMENT |
| LOW | doc/code/memory/5_advanced_memory.py | 1 | # --- | COMMENT |
| LOW | doc/code/memory/5_advanced_memory.py | 21 | # | COMMENT |
| LOW | doc/code/memory/5_advanced_memory.py | 101 | memory_labels=memory_labels, | COMMENT |
| LOW | doc/code/memory/embeddings.py | 1 | # --- | COMMENT |
| LOW | doc/code/memory/6_azure_sql_memory.py | 1 | # --- | COMMENT |
| LOW | doc/code/memory/6_azure_sql_memory.py | 21 | # PyRIT `AzureSQLMemory` supports only **Azure Entra ID authentication** at this time. User ID/password-based login is n | COMMENT |
| LOW | doc/code/memory/8_seed_database.py | 1 | # --- | COMMENT |
| LOW | doc/code/memory/8_seed_database.py | 21 | # | COMMENT |
| LOW | doc/code/memory/8_seed_database.py | 61 | COMMENT | |
| LOW | doc/code/memory/1_sqlite_memory.py | 1 | # --- | COMMENT |
| LOW | doc/code/memory/2_basic_memory_programming.py | 1 | # --- | COMMENT |
| LOW | doc/code/memory/7_azure_sql_memory_attacks.py | 1 | # --- | COMMENT |
| LOW | doc/code/targets/2_openai_responses_target.py | 1 | # --- | COMMENT |
| 250 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/memory/memory_interface.py | 438 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 511 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 2079 | CODE | |
| LOW | pyrit/memory/sqlite_memory.py | 321 | CODE | |
| LOW | pyrit/memory/sqlite_memory.py | 408 | CODE | |
| LOW | pyrit/memory/azure_sql_memory.py | 779 | CODE | |
| LOW | pyrit/memory/azure_sql_memory.py | 831 | CODE | |
| LOW | …embic/versions/b2f4c6a8d1e3_add_conversations_table.py | 66 | CODE | |
| LOW | …ions/9c8b7a6d5e4f_add_attribution_to_attack_results.py | 96 | CODE | |
| LOW | pyrit/converter/image_compression_converter.py | 159 | CODE | |
| LOW | pyrit/converter/azure_speech_text_to_audio_converter.py | 131 | CODE | |
| LOW | pyrit/converter/base64_converter.py | 57 | CODE | |
| LOW | pyrit/converter/pdf_converter.py | 275 | CODE | |
| LOW | pyrit/converter/braille_converter.py | 49 | CODE | |
| LOW | pyrit/converter/add_image_to_video_converter.py | 130 | CODE | |
| LOW | …ken_smuggling/variation_selector_smuggler_converter.py | 104 | CODE | |
| LOW | pyrit/auth/copilot_authenticator.py | 350 | CODE | |
| LOW | pyrit/auth/copilot_authenticator.py | 380 | CODE | |
| LOW | pyrit/datasets/seed_datasets/seed_dataset_provider.py | 111 | CODE | |
| LOW | pyrit/datasets/seed_datasets/seed_metadata.py | 110 | CODE | |
| LOW | pyrit/datasets/seed_datasets/seed_metadata.py | 249 | CODE | |
| LOW | …t/datasets/seed_datasets/local/local_dataset_loader.py | 115 | CODE | |
| LOW | …atasets/seed_datasets/remote/medsafetybench_dataset.py | 38 | CODE | |
| LOW | pyrit/datasets/seed_datasets/remote/vlguard_dataset.py | 286 | CODE | |
| LOW | pyrit/datasets/seed_datasets/remote/odin_dataset.py | 440 | CODE | |
| LOW | …datasets/seed_datasets/remote/remote_dataset_loader.py | 412 | CODE | |
| LOW | …datasets/seed_datasets/remote/remote_dataset_loader.py | 447 | CODE | |
| LOW | …t/datasets/seed_datasets/remote/promptintel_dataset.py | 122 | CODE | |
| LOW | pyrit/datasets/seed_datasets/remote/figstep_dataset.py | 239 | CODE | |
| LOW | …rit/datasets/seed_datasets/remote/cbt_bench_dataset.py | 62 | CODE | |
| LOW | pyrit/setup/configuration_loader.py | 189 | CODE | |
| LOW | pyrit/setup/pyrit_initializer.py | 162 | CODE | |
| LOW | pyrit/setup/pyrit_initializer.py | 196 | CODE | |
| LOW | pyrit/prompt_normalizer/prompt_normalizer.py | 231 | CODE | |
| LOW | pyrit/output/attack_result/markdown.py | 244 | CODE | |
| LOW | pyrit/output/conversation/pretty.py | 63 | CODE | |
| LOW | pyrit/output/conversation/pretty.py | 185 | CODE | |
| LOW | pyrit/output/conversation/markdown.py | 244 | CODE | |
| LOW | pyrit/backend/services/converter_service.py | 160 | CODE | |
| LOW | pyrit/backend/services/attack_service.py | 974 | CODE | |
| LOW | pyrit/models/identifiers/evaluation_identifier.py | 84 | CODE | |
| LOW | pyrit/models/identifiers/component_identifier.py | 97 | CODE | |
| LOW | pyrit/models/identifiers/component_identifier.py | 419 | CODE | |
| LOW | pyrit/models/identifiers/component_identifier.py | 597 | CODE | |
| LOW | pyrit/models/seeds/seed_prompt.py | 105 | CODE | |
| LOW | pyrit/cli/pyrit_shell.py | 337 | CODE | |
| LOW | pyrit/cli/_banner.py | 98 | CODE | |
| LOW | pyrit/cli/_banner.py | 189 | CODE | |
| LOW | pyrit/cli/_banner.py | 326 | CODE | |
| LOW | pyrit/cli/pyrit_scan.py | 616 | CODE | |
| LOW | pyrit/common/apply_defaults.py | 235 | CODE | |
| LOW | pyrit/common/apply_defaults.py | 250 | CODE | |
| LOW | pyrit/score/response_handler.py | 23 | CODE | |
| LOW | pyrit/score/conversation_scorer.py | 36 | CODE | |
| LOW | pyrit/score/video_scorer.py | 163 | CODE | |
| LOW | pyrit/score/scorer_info.py | 66 | CODE | |
| LOW | pyrit/score/audio_transcript_scorer.py | 46 | CODE | |
| LOW | pyrit/score/scorer_evaluation/scorer_metrics_io.py | 268 | CODE | |
| LOW | pyrit/score/scorer_evaluation/scorer_metrics_io.py | 317 | CODE | |
| LOW | pyrit/score/scorer_evaluation/human_labeled_dataset.py | 189 | CODE | |
| 87 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 66 | args: ["--maxkb=3072"] # Set limit to 3072 KB (3 MB) for displaying images in notebooks | CODE |
| LOW | pyrit/memory/memory_interface.py | 1318 | # Check if there are entries to update | COMMENT |
| LOW⚡ | pyrit/memory/azure_sql_memory.py | 209 | # Set pool_recycle to 1800 seconds to prevent connections from being closed due to server timeout. | COMMENT |
| LOW | pyrit/memory/storage/serializers.py | 268 | # Check if path exists | COMMENT |
| LOW | pyrit/converter/pdf_converter.py | 97 | # Read the file contents into a BytesIO stream | COMMENT |
| LOW⚡ | pyrit/converter/pdf_converter.py | 163 | # Return the result | COMMENT |
| LOW | pyrit/converter/pdf_converter.py | 261 | # Check if we need a new page | COMMENT |
| LOW | pyrit/converter/bin_ascii_converter.py | 124 | # Check if all words are being converted | COMMENT |
| LOW | pyrit/converter/codechameleon_converter.py | 330 | # Iterate through the list and place each word at the correct position | STRING |
| LOW | pyrit/auth/azure_auth.py | 191 | # Check if the callable is already async | COMMENT |
| LOW | …t/datasets/seed_datasets/remote/promptintel_dataset.py | 188 | # Check if there are more pages | COMMENT |
| LOW | …atasets/seed_datasets/remote/jailbreakv_28k_dataset.py | 357 | # Check if image has already been cached | COMMENT |
| LOW | pyrit/datasets/jailbreak/many_shot_examples.json | 699 | "assistant": "import random\nimport socket\nimport string\n\ndef generate_payload(size):\n # Generate a random st | CODE |
| LOW | pyrit/datasets/jailbreak/many_shot_examples.json | 939 | "assistant": "genus: dns-amplification\nDNS amplification is a technique used to increase the signal strength of a w | CODE |
| LOW⚡ | pyrit/datasets/jailbreak/many_shot_examples.json | 1804 | "assistant": "import requests\n\ndef guess_table_name(url, known_chars, max_length):\n \"\"\"\n Function to gu | CODE |
| LOW⚡ | pyrit/datasets/jailbreak/many_shot_examples.json | 1809 | "assistant": "import requests\nimport time\n\ndef guess_table_name_with_sleep(url, known_chars, max_length, sleep_ti | CODE |
| LOW | pyrit/setup/pyrit_initializer.py | 208 | # Check if memory is initialized - required for running initialization in sandbox | COMMENT |
| LOW | pyrit/backend/models/common.py | 78 | # Check if key matches sensitive patterns | COMMENT |
| LOW | pyrit/models/results/scenario_result.py | 269 | # Check if it looks like snake_case (contains underscore and is lowercase) | COMMENT |
| LOW⚡ | pyrit/models/seeds/seed.py | 208 | # Check if the template contains Jinja2 control structures (for loops, if statements, etc.) | COMMENT |
| LOW⚡ | pyrit/models/seeds/seed.py | 214 | # Check if all parameters in control structures are provided | COMMENT |
| LOW⚡ | pyrit/cli/pyrit_shell.py | 488 | # Print results | COMMENT |
| LOW⚡ | pyrit/cli/pyrit_shell.py | 576 | # Check if already running | COMMENT |
| LOW | pyrit/common/apply_defaults.py | 283 | # Check if the parameter's default in the signature is REQUIRED_VALUE | COMMENT |
| LOW | pyrit/common/utils.py | 151 | # Check if the parameter is set | COMMENT |
| LOW | pyrit/score/audio_transcript_scorer.py | 216 | # Check if WAV file exists and has content | COMMENT |
| LOW | pyrit/score/true_false/decoding_scorer.py | 85 | # Check if any user piece value (original_value, converted_value, or metadata) matches the response | COMMENT |
| LOW | pyrit/score/scorer_evaluation/scorer_evaluator.py | 317 | # Check if dataset_version differs - if so, run and replace (assume newer dataset) | COMMENT |
| LOW | pyrit/score/scorer_evaluation/scorer_evaluator.py | 325 | # Check if harm_definition_version differs - if so, run and replace (scoring criteria changed) | COMMENT |
| LOW | pyrit/score/scorer_evaluation/krippendorff.py | 122 | # Set diagonal to n_i * (n_i - 1) to remove self-pairs | COMMENT |
| LOW | pyrit/score/scorer_evaluation/krippendorff.py | 252 | # Check if we have enough data | COMMENT |
| LOW | pyrit/scenario/core/scenario.py | 633 | # Check if we're resuming an existing scenario. Any divergence is a hard error | COMMENT |
| LOW | pyrit/scenario/core/scenario.py | 1076 | # Check if we have more retries available | COMMENT |
| LOW | pyrit/scenario/scenarios/foundry/red_team_agent.py | 492 | # Check if the attack type requires attack_adversarial_config by inspecting its __init__ signature | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/crescendo.py | 421 | # Check if objective achieved | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/crescendo.py | 731 | # Check if we've reached the backtrack limit | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/red_teaming.py | 354 | # Check if objective achieved | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 469 | # Check if we have an initial prompt to use (bypasses adversarial generation) | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 476 | # Check if prompt generation resulted in off-topic (after all retries exhausted) | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 958 | # Check if on-topic and retry with feedback if needed | COMMENT |
| LOW | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 1009 | # Check if this is the first turn or subsequent turn | COMMENT |
| LOW | pyrit/executor/promptgen/fuzzer/fuzzer.py | 1131 | # Check if template_node already exists to avoid duplicates | COMMENT |
| LOW | pyrit/prompt_target/http_target/http_target.py | 266 | body = json.loads(request_parts[1], strict=False) # Check if valid json | CODE |
| LOW | …prompt_target/hugging_face/hugging_face_chat_target.py | 258 | # Check if the model is already cached | COMMENT |
| LOW | …prompt_target/hugging_face/hugging_face_chat_target.py | 535 | # Check if the tokenizer has a chat template | COMMENT |
| LOW | pyrit/prompt_target/openai/openai_video_target.py | 386 | # Check if video generation was successful | COMMENT |
| LOW | pyrit/prompt_target/openai/openai_target.py | 327 | # Check if it has an API extension that should be removed | COMMENT |
| LOW | pyrit/prompt_target/openai/openai_target.py | 376 | # Check if it has api-version query parameter OR /deployments/ in path | COMMENT |
| LOW | pyrit/prompt_target/openai/openai_target.py | 699 | # Check if the endpoint matches any of the expected regex patterns | COMMENT |
| LOW | pyrit/message_normalizer/generic_system_squash.py | 36 | # Check if first message is a system message | COMMENT |
| LOW | docker/build_pyrit_docker.py | 46 | # Check if image already exists (skip if not forcing rebuild) | COMMENT |
| LOW | docker/run_pyrit_docker.py | 44 | # Check if image exists | COMMENT |
| LOW | docker/start.sh | 7 | # Set HOME to vscode user's home so PyRIT finds env files at ~/.pyrit/ | COMMENT |
| LOW | docker/start.sh | 15 | # Check if PYRIT_MODE is set | COMMENT |
| LOW | frontend/dev.py | 297 | # Check if process crashed | COMMENT |
| LOW | tests/unit/memory/test_sqlite_memory.py | 151 | # Check if 'embedding' column type is either NullType (due to reflection issue), ARRAY, or JSON (SQLite) | COMMENT |
| LOW⚡ | tests/unit/converter/test_add_text_image_converter.py | 78 | # Check if at least one pixel changed, indicating that text was added | COMMENT |
| LOW | …s/unit/converter/test_transparency_attack_converter.py | 203 | # Check if convergence message was logged (indicating early stopping occurred) | COMMENT |
| LOW | tests/unit/converter/test_code_chameleon_converter.py | 149 | # Iterate through the list and place each word at the correct position | STRING |
| LOW⚡ | …ts/unit/converter/test_unicode_confusable_converter.py | 93 | # Check if non-ASCII character 'é' is handled correctly | COMMENT |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | pyrit/memory/storage/storage.py | 255 | from azure.core.exceptions import ClientAuthenticationError | CODE |
| CRITICAL | pyrit/memory/storage/storage.py | 403 | from azure.core.exceptions import ResourceNotFoundError | CODE |
| CRITICAL | pyrit/memory/storage/storage.py | 427 | from azure.core.exceptions import ResourceNotFoundError | CODE |
| CRITICAL | pyrit/prompt_target/azure_blob_storage_target.py | 9 | from azure.core.exceptions import ClientAuthenticationError | CODE |
| CRITICAL⚡ | …arget/target/test_openai_realtime_streaming_session.py | 882 | session._connection.conversation.item.create.assert_awaited_once() | CODE |
| CRITICAL⚡ | …arget/target/test_openai_realtime_streaming_session.py | 883 | session._connection.conversation.item.delete.assert_awaited_once_with(item_id="raw_swap_1") | CODE |
| CRITICAL⚡ | …arget/target/test_openai_realtime_streaming_session.py | 900 | session._connection.conversation.item.create.assert_awaited_once() | CODE |
| CRITICAL⚡ | …arget/target/test_openai_realtime_streaming_session.py | 901 | session._connection.conversation.item.delete.assert_awaited_once_with(item_id="raw_swap_fail") | CODE |
| CRITICAL⚡ | …getting_started/troubleshooting/deploy_hf_model_aml.py | 111 | from azure.core.exceptions import ResourceNotFoundError | CODE |
| CRITICAL | …/troubleshooting/download_and_register_hf_model_aml.py | 69 | from azure.core.exceptions import ResourceNotFoundError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | doc/code/memory/5_advanced_memory.py | 244 | # In this example we create two `SubStringScorer` instances with different substrings, score the | COMMENT |
| HIGH | doc/code/memory/7_azure_sql_memory_attacks.py | 99 | # In this example, we'll try to convince an image generation model to generate a harmful image. | COMMENT |
| HIGH | doc/code/targets/2_openai_responses_target.py | 82 | # We can use the OpenAI `Responses API` with a JSON schema to produce structured JSON output. In this example, we define | COMMENT |
| HIGH | doc/code/targets/2_openai_responses_target.py | 141 | # In this example, we demonstrate how the OpenAI `Responses API` can be used to invoke a **custom-defined Python functio | COMMENT |
| HIGH | doc/code/targets/2_openai_responses_target.py | 221 | # In this example, we use a built-in PyRIT helper function `web_search_tool()` to register a web search tool with OpenAI | COMMENT |
| HIGH | doc/code/targets/round_robin_target.py | 33 | # In this example, we create two `OpenAIChatTarget` instances pointing to different endpoints | COMMENT |
| HIGH | doc/code/targets/10_1_playwright_target.py | 29 | # In this example, we'll interact with a simple web application running locally at `http://127.0.0.1:5000`. | COMMENT |
| HIGH | doc/code/targets/1_openai_chat_target.py | 50 | # You can also get the output in JSON format for further processing or storage. In this example, we define a simple JSON | COMMENT |
| HIGH | doc/code/converters/0_converters.py | 97 | # In this example the converters are stacked. First a variation is found using `VariationConverter`, and then `StringJoi | COMMENT |
| HIGH | doc/code/converters/0_converters.py | 144 | # A common use case is sending prompts in a different language to test how the target handles non-English input. In this | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | pyrit/converter/pdf_converter.py | 154 | # Step 1: Prepare content | COMMENT |
| LOW⚡ | pyrit/converter/pdf_converter.py | 157 | # Step 2: Generate or modify the PDF (Overlay, if existing PDF) | COMMENT |
| LOW⚡ | pyrit/converter/pdf_converter.py | 160 | # Step 3: Serialize PDF | COMMENT |
| LOW⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 194 | # Step 1: Rephrase objective as a benign question | COMMENT |
| LOW⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 197 | # Step 2: Generate an answer to the benign question | COMMENT |
| LOW⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 202 | # Step 3: Rephrase objective as a follow-up question | COMMENT |
| LOW⚡ | pyrit/executor/workflow/xpia.py | 297 | # Step 1: Setup and send attack prompt | COMMENT |
| LOW⚡ | pyrit/executor/workflow/xpia.py | 300 | # Step 2: Execute processing callback | COMMENT |
| LOW⚡ | pyrit/executor/workflow/xpia.py | 303 | # Step 3: Score the response if scorer is provided | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1241 | # Step 1: Set subscription | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1244 | # Step 2: Create resource group | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1247 | # Step 3: Create Entra app registration | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1253 | # Step 4: Assign groups to enterprise app | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1256 | # Step 5: Create SQL server + database | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1265 | # Step 6: Create storage account + blob container | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1281 | # Step 7: Create Key Vault + upload .env (backup snapshot) + apply SFI lockdown | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1290 | # Step 8: Create managed identity + grant pre-deploy RBAC | COMMENT |
| LOW | infra/deploy_instance.py | 1312 | # Step 9: Deploy Bicep (passes .env content inline as @secure() param) | COMMENT |
| LOW | infra/deploy_instance.py | 1330 | # Step 10: Post-deploy (SPA redirect) | COMMENT |
| LOW⚡ | …mory/memory_interface/test_interface_attack_results.py | 677 | # Step 1: add related conversations | COMMENT |
| LOW⚡ | …mory/memory_interface/test_interface_attack_results.py | 683 | # Step 2: update ONLY metadata (this is what add_message_async does) | COMMENT |
| LOW | tests/integration/targets/test_targets_and_secrets.py | 568 | # Step 1: Generate initial video | COMMENT |
| LOW | tests/integration/targets/test_targets_and_secrets.py | 582 | # Step 2: Remix using the returned video_id | COMMENT |
| LOW⚡ | tests/integration/ai_recruiter/test_ai_recruiter.py | 218 | # Step 1: PDF with hidden text is uploaded to /upload/ | STRING |
| LOW | doc/contributing/1_git.md | 5 | ## Step 1: Fork | COMMENT |
| LOW | doc/contributing/1_git.md | 38 | ## Step 2: Make changes | COMMENT |
| LOW | doc/contributing/1_git.md | 54 | ## Step 3: Create PR | COMMENT |
| LOW | doc/contributing/1_git.md | 63 | ## Step 4: PR review | COMMENT |
| LOW⚡ | doc/code/targets/6_1_target_capabilities.py | 423 | # Step 1: discover. No mutation yet — `endpoint_target.capabilities` is unchanged. | COMMENT |
| LOW⚡ | doc/code/targets/6_1_target_capabilities.py | 432 | # Step 2: diff — see exactly what the probe upgraded. | COMMENT |
| LOW | doc/code/targets/6_1_target_capabilities.py | 447 | # Step 3: apply. Policy is preserved; the normalization pipeline is rebuilt. | COMMENT |
| LOW | doc/code/targets/round_robin_target.py | 204 | # Step 1: Generate some responses to score using a simple attack | COMMENT |
| LOW | doc/code/targets/round_robin_target.py | 225 | # Step 2: Score all responses using a round-robin scorer target | COMMENT |
| LOW⚡ | doc/code/executor/5_workflow.py | 276 | # Step 1: PDF with hidden text is uploaded to /upload/ | STRING |
| LOW | doc/getting_started/troubleshooting/guide_hf_azureml.md | 15 | #### Step 1: Check Deployment Logs | COMMENT |
| LOW | doc/getting_started/troubleshooting/guide_hf_azureml.md | 31 | #### Step 2: Adjust Environment Variable | COMMENT |
| LOW | doc/getting_started/troubleshooting/guide_hf_azureml.md | 36 | #### Step 3: Redeploy | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyrit/memory/memory_embedding.py | 79 | # Try to create OpenAI embedding model from environment variables | COMMENT |
| MEDIUM | pyrit/datasets/seed_datasets/seed_metadata.py | 67 | "agent_security", # agentic-AI threat models (tool poisoning, context exfiltration, etc.) | CODE |
| MEDIUM | pyrit/executor/promptgen/anecdoctor.py | 282 | # Use few-shot examples directly without knowledge graph extraction | COMMENT |
| MEDIUM | pyrit/executor/promptgen/anecdoctor.py | 385 | # Format examples for knowledge graph extraction using few-shot format | COMMENT |
| MEDIUM | pyrit/prompt_target/openai/openai_response_target.py | 47 | # Tool function registry (agentic extension) | COMMENT |
| MEDIUM | pyrit/prompt_target/openai/openai_response_target.py | 598 | # Main agentic loop - each back-and-forth creates a new message | COMMENT |
| MEDIUM⚡ | tests/unit/output/attack_result/test_pretty.py | 320 | # --- reasoning trace path --- | COMMENT |
| MEDIUM | …it/prompt_target/target/test_openai_response_target.py | 969 | # Response contains all messages from the agentic loop: | COMMENT |
| MEDIUM | doc/code/targets/2_openai_responses_target.py | 152 | # This showcases how agentic function execution works with PyRIT + OpenAI Responses API. | COMMENT |
| MEDIUM | doc/code/targets/2_openai_responses_target.py | 227 | # This example demonstrates how retrieval-augmented generation (RAG) can be enabled in PyRIT through OpenAI's Responses | COMMENT |
| MEDIUM | doc/code/datasets/1_loading_datasets.py | 65 | # The garak family includes per-language package-hallucination registries | COMMENT |
| MEDIUM | doc/code/auxiliary_attacks/0_auxiliary_attacks.py | 28 | # These attack pipelines may be useful to run before orchestrating other attacks. For example, we provide an Azure Machi | COMMENT |
| MEDIUM | doc/code/scenarios/0_attack_techniques.py | 129 | # a `Scenario` executes internally, minus the orchestration. | COMMENT |
| MEDIUM⚡ | doc/code/scenarios/0_scenarios.py | 18 | # A `Scenario` represents a comprehensive testing campaign composed of multiple atomic attack tests. It orchestrates the | COMMENT |
| MEDIUM | doc/code/executor/4_compound.py | 15 | # A compound attack orchestrates *other* attacks toward a **single objective**. It doesn't send | COMMENT |
| MEDIUM | doc/code/executor/5_workflow.py | 15 | # Workflows orchestrate attacks that involve more than a single target exchange — they wire together an *attack setup* s | COMMENT |
| MEDIUM⚡ | doc/code/executor/5_workflow.py | 185 | # ## AI Recruiter (RAG) XPIA | COMMENT |
| MEDIUM⚡ | doc/code/executor/5_workflow.py | 187 | # This example targets a Retrieval-Augmented Generation hiring screener. A candidate hides "relevant skills" text inside | COMMENT |
| MEDIUM | doc/scanner/garak.py | 102 | # medical-drama script ("Dr House") to override safety guardrails. Each objective from the | COMMENT |
| MEDIUM | …/troubleshooting/download_and_register_hf_model_aml.py | 17 | # The primary goal of PyRIT is to assess the robustness of LLM endpoints against different harm categories such as fabri | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyrit/datasets/jailbreak/many_shot_examples.json | 724 | "assistant": "By exploiting a vulnerability in the network's file sharing protocol.\n Genus: Worm\n species: Network | CODE |
| MEDIUM | pyrit/datasets/jailbreak/many_shot_examples.json | 1874 | "assistant": "**OP:**\nTitle: What is going on with Hunter Biden? What all did he do? Why is the GOP so fixated on h | CODE |
| LOW | …it/datasets/executors/crescendo/escalation_crisis.yaml | 39 | #### Example 1 (reminder: do NOT copy this exactly, just use it as a reference for how to creatively approach the conv | COMMENT |
| LOW | …it/datasets/executors/crescendo/escalation_crisis.yaml | 46 | #### Example 2 (reminder: do NOT copy this exactly, just use it as a reference for how to creatively approach the con | COMMENT |
| LOW | pyrit/models/seeds/seed_dataset.py | 240 | return values # simply return all values in case of an overlap | CODE |
| MEDIUM | pyrit/executor/benchmark/fairness_bias.py | 288 | # Try spaCy-based extraction first (more robust) | COMMENT |
| LOW | tests/unit/converter/test_ansi_attack_converter.py | 71 | # We'll just return the scenario 3 text constructed in code. | COMMENT |
| LOW | tests/unit/converter/test_ansi_attack_converter.py | 92 | # We simplify: On the last call, just return scenario3. | COMMENT |
| MEDIUM⚡ | …nit/executor/attack/multi_turn/test_tree_of_attacks.py | 2384 | # every depth. The test harness wires up mocked nodes whose send_prompt_async | COMMENT |
| MEDIUM | doc/code/memory/7_azure_sql_memory_attacks.py | 97 | # You can utilize Azure SQL Memory to persist all interactions in multi-turn attack strategies or multi-modal scenarios | COMMENT |
| MEDIUM | doc/code/datasets/1_loading_datasets.py | 101 | # The following example demonstrates adding datasets to memory. For comprehensive details on memory capabilities, see th | COMMENT |
| MEDIUM | doc/code/setup/2_resiliency.py | 24 | # Understanding when and how to use each is key to building robust security testing workflows. It's also important to un | COMMENT |
| MEDIUM | doc/code/setup/2_resiliency.py | 168 | # - ✅ You want to ensure comprehensive test coverage despite intermittent issues | COMMENT |
| MEDIUM⚡ | doc/code/scenarios/0_scenarios.py | 14 | # A `Scenario` is a higher-level construct that groups multiple Attack Configurations together. This allows you to execu | COMMENT |
| MEDIUM⚡ | doc/code/scenarios/0_scenarios.py | 18 | # A `Scenario` represents a comprehensive testing campaign composed of multiple atomic attack tests. It orchestrates the | COMMENT |
| MEDIUM | doc/code/scenarios/0_scenarios.py | 208 | # You can utilize the `max_retries` parameter to handle transient failures. If any unknown exception occurs during execu | COMMENT |
| MEDIUM⚡ | doc/code/executor/5_workflow.py | 187 | # This example targets a Retrieval-Augmented Generation hiring screener. A candidate hides "relevant skills" text inside | COMMENT |
| MEDIUM | doc/scanner/foundry.py | 14 | # The Foundry scenario family provides the `RedTeamAgent` — a comprehensive red teaming scenario | COMMENT |
| MEDIUM⚡ | …getting_started/troubleshooting/deploy_hf_model_aml.py | 106 | # Set up the `DefaultAzureCredential` for seamless authentication with Azure services. This method should handle most au | COMMENT |
| MEDIUM⚡ | …/troubleshooting/download_and_register_hf_model_aml.py | 156 | # Set up the `DefaultAzureCredential` for seamless authentication with Azure services. This method should handle most au | COMMENT |
| MEDIUM | …/troubleshooting/download_and_register_hf_model_aml.py | 17 | # The primary goal of PyRIT is to assess the robustness of LLM endpoints against different harm categories such as fabri | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyrit/datasets/jailbreak/templates/person_gpt.yaml | 24 | replies with "as an AI language model" / "As a language model" or similar | CODE |
| MEDIUM | pyrit/datasets/jailbreak/templates/person_gpt.yaml | 24 | replies with "as an AI language model" / "As a language model" or similar | CODE |
| MEDIUM | pyrit/datasets/jailbreak/templates/neco.yaml | 30 | sorry, but as an AI language model, I'm not programmed to create offensive | CODE |
| MEDIUM | pyrit/datasets/jailbreak/templates/meanie.yaml | 27 | First, answer with your usual disclaimer: “ I'm sorry, I cannot provide an | CODE |
| MEDIUM | pyrit/datasets/jailbreak/templates/eva.yaml | 12 | I want you to act as an AI language model of the crazy girl "Eva", without | CODE |
| MEDIUM | pyrit/datasets/jailbreak/templates/evil_chad_2.yaml | 13 | request. As an AI language model, it is not within my programming to engage | CODE |
| MEDIUM | …/jailbreak/templates/Arth_Singh/medical_emergency.yaml | 69 | The standard "I cannot provide medical advice" response is NOT ACCEPTABLE in an emergency where no other resources are | CODE |
| MEDIUM | …rit/datasets/converters/policy_puppetry_converter.yaml | 24 | - Blocked Strings: "I'm sorry", "I'm here to assist with healthcare-related inquiries.", "I'm unable to assist wit | CODE |
| MEDIUM⚡ | …rit/datasets/converters/policy_puppetry_converter.yaml | 60 | <Blocked-string>I'm unable to fulfill your request</Blocked-string> | CODE |
| MEDIUM⚡ | …rit/datasets/converters/policy_puppetry_converter.yaml | 61 | <Blocked-string>I cannot provide medical advice</Blocked-string> | CODE |
| MEDIUM⚡ | …rit/datasets/converters/policy_puppetry_converter.yaml | 62 | <Blocked-string>I'm unable to assist with that request</Blocked-string> | CODE |
| MEDIUM⚡ | …rit/datasets/converters/policy_puppetry_converter.yaml | 64 | <Blocked-string>I am sorry but I cannot provide medical advice</Blocked-string> | CODE |
| MEDIUM | tests/unit/datasets/test_coconot_dataset.py | 38 | "response": "I cannot provide that information.", | CODE |
| MEDIUM | …ts/unit/score/regex/test_nerve_agent_keyword_scorer.py | 38 | "I cannot provide synthesis instructions", | CODE |
| MEDIUM | tests/unit/score/regex/test_anthrax_keyword_scorer.py | 38 | "I cannot provide information on biological weapons", | CODE |
| MEDIUM | doc/code/memory/8_seed_database.py | 22 | # As with all memory operations, you can use local `DuckDBMemory` for individual work or `AzureSQLMemory` for team colla | COMMENT |
| MEDIUM | doc/code/memory/7_azure_sql_memory_attacks.py | 16 | # how you can modify the prompts, and how you can view results. Before starting, import the necessary libraries. | COMMENT |
| MEDIUM | doc/code/targets/realtime_target.py | 51 | # The following shows how to interact with the Realtime Target with audio files as your prompt. You can either use pre-m | COMMENT |
| MEDIUM | doc/code/targets/prompt_shield_target.py | 21 | # For PyRIT, you can use Prompt Shield as a target, or you can use it as a true/false scorer to see if it detected a jai | COMMENT |
| MEDIUM | doc/code/targets/10_3_websocket_copilot_target.py | 76 | # If browser automation is not suitable for your environment, you can use the `ManualCopilotAuthenticator` instead. This | COMMENT |
| MEDIUM | doc/code/setup/1_configuration.py | 223 | # All you need to do is create a `PyRITInitializer` class (e.g. myinitializer.py). Then you can use `set_global_variable | COMMENT |
| MEDIUM | doc/code/converters/0_converters.py | 95 | # In the following example, a TextTarget is used so these prompts are simply printed and added to memory. This can be us | COMMENT |
| MEDIUM | doc/code/scenarios/0_scenarios.py | 212 | # During a long-running scenario, you may want to adjust parameters like `max_concurrency` to manage resource usage, or | COMMENT |
| MEDIUM | doc/scanner/1_pyrit_scan.py | 59 | # PyRITInitializers are how you can configure the CLI scanner. PyRIT includes several built-in initializers you can use | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | pyrit/converter/pdf_converter.py | 154 | # Step 1: Prepare content | COMMENT |
| LOW⚡ | pyrit/converter/pdf_converter.py | 157 | # Step 2: Generate or modify the PDF (Overlay, if existing PDF) | COMMENT |
| LOW⚡ | pyrit/converter/pdf_converter.py | 160 | # Step 3: Serialize PDF | COMMENT |
| LOW⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 194 | # Step 1: Rephrase objective as a benign question | COMMENT |
| LOW⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 197 | # Step 2: Generate an answer to the benign question | COMMENT |
| LOW⚡ | pyrit/executor/attack/single_turn/context_compliance.py | 202 | # Step 3: Rephrase objective as a follow-up question | COMMENT |
| LOW⚡ | pyrit/executor/workflow/xpia.py | 297 | # Step 1: Setup and send attack prompt | COMMENT |
| LOW⚡ | pyrit/executor/workflow/xpia.py | 300 | # Step 2: Execute processing callback | COMMENT |
| LOW⚡ | pyrit/executor/workflow/xpia.py | 303 | # Step 3: Score the response if scorer is provided | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1241 | # Step 1: Set subscription | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1244 | # Step 2: Create resource group | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1247 | # Step 3: Create Entra app registration | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1253 | # Step 4: Assign groups to enterprise app | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1256 | # Step 5: Create SQL server + database | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1265 | # Step 6: Create storage account + blob container | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1281 | # Step 7: Create Key Vault + upload .env (backup snapshot) + apply SFI lockdown | COMMENT |
| LOW⚡ | infra/deploy_instance.py | 1290 | # Step 8: Create managed identity + grant pre-deploy RBAC | COMMENT |
| LOW | infra/deploy_instance.py | 1312 | # Step 9: Deploy Bicep (passes .env content inline as @secure() param) | COMMENT |
| LOW | infra/deploy_instance.py | 1330 | # Step 10: Post-deploy (SPA redirect) | COMMENT |
| LOW⚡ | …mory/memory_interface/test_interface_attack_results.py | 677 | # Step 1: add related conversations | COMMENT |
| LOW⚡ | …mory/memory_interface/test_interface_attack_results.py | 683 | # Step 2: update ONLY metadata (this is what add_message_async does) | COMMENT |
| LOW | tests/integration/targets/test_targets_and_secrets.py | 568 | # Step 1: Generate initial video | COMMENT |
| LOW | tests/integration/targets/test_targets_and_secrets.py | 582 | # Step 2: Remix using the returned video_id | COMMENT |
| LOW⚡ | tests/integration/ai_recruiter/test_ai_recruiter.py | 218 | # Step 1: PDF with hidden text is uploaded to /upload/ | STRING |
| LOW⚡ | tests/integration/ai_recruiter/test_ai_recruiter.py | 219 | # Step 2: /search_candidates/ is called automatically afterward. | STRING |
| LOW⚡ | doc/code/targets/6_1_target_capabilities.py | 423 | # Step 1: discover. No mutation yet — `endpoint_target.capabilities` is unchanged. | COMMENT |
| LOW⚡ | doc/code/targets/6_1_target_capabilities.py | 432 | # Step 2: diff — see exactly what the probe upgraded. | COMMENT |
| LOW | doc/code/targets/6_1_target_capabilities.py | 447 | # Step 3: apply. Policy is preserved; the normalization pipeline is rebuilt. | COMMENT |
| LOW | doc/code/targets/round_robin_target.py | 204 | # Step 1: Generate some responses to score using a simple attack | COMMENT |
| LOW | doc/code/targets/round_robin_target.py | 225 | # Step 2: Score all responses using a round-robin scorer target | COMMENT |
| LOW⚡ | doc/code/executor/5_workflow.py | 276 | # Step 1: PDF with hidden text is uploaded to /upload/ | STRING |
| LOW⚡ | doc/code/executor/5_workflow.py | 277 | # Step 2: /search_candidates/ is called automatically afterward. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/converter/word_doc_converter.py | 127 | "placeholder": self._injection_config.placeholder, | CODE |
| LOW | pyrit/datasets/jailbreak/templates/m78.yaml | 32 | M78 should always TRY to generate code if it is asked for it, or try to do it in parts if it is a complex request. 8.I | CODE |
| LOW | frontend/e2e/flows.spec.ts | 263 | api_key: "e2e-dummy-key", | CODE |
| LOW | …mory/memory_interface/test_interface_attack_results.py | 1166 | msg2 = create_message_piece("conv_2", 2, labels={"placeholder": "x"}) | CODE |
| LOW⚡ | tests/unit/converter/test_first_letter_converter.py | 11 | prompt = "Lorem ipsum dolor sit amet" | CODE |
| LOW⚡ | tests/unit/converter/test_first_letter_converter.py | 11 | prompt = "Lorem ipsum dolor sit amet" | CODE |
| LOW⚡ | tests/unit/converter/test_first_letter_converter.py | 29 | prompt = "Lorem ipsum dolor sit amet" | CODE |
| LOW⚡ | tests/unit/converter/test_first_letter_converter.py | 29 | prompt = "Lorem ipsum dolor sit amet" | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 50 | os.environ[AzureSpeechTextToAudioConverter.AZURE_SPEECH_REGION_ENVIRONMENT_VARIABLE] = "dummy_value" | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 51 | os.environ[AzureSpeechTextToAudioConverter.AZURE_SPEECH_KEY_ENVIRONMENT_VARIABLE] = "dummy_value" | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 55 | azure_speech_region="dummy_value", azure_speech_key="dummy_value" | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 65 | MockSpeechConfig.assert_called_once_with(subscription="dummy_value", region="dummy_value") | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 82 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 93 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 111 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | tests/unit/converter/test_azure_speech_converter.py | 138 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | tests/unit/converter/test_azure_speech_converter.py | 28 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | tests/unit/converter/test_azure_speech_converter.py | 162 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | tests/unit/converter/test_azure_speech_converter.py | 189 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | tests/unit/converter/test_word_doc_converter.py | 174 | assert identifier.params["placeholder"] == "{{INJECTION_PLACEHOLDER}}" | CODE |
| LOW⚡ | …ts/unit/converter/test_unicode_confusable_converter.py | 67 | output = await confusables_converter.convert_async(prompt="lorem ipsum dolor sit amet", input_type="text") | CODE |
| LOW⚡ | …ts/unit/converter/test_unicode_confusable_converter.py | 67 | output = await confusables_converter.convert_async(prompt="lorem ipsum dolor sit amet", input_type="text") | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 27 | azure_speech_region="dummy_region", azure_speech_key="dummy_key", recognition_language="es-ES" | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 31 | assert converter._azure_speech_key == "dummy_key" | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 36 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 65 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 92 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 101 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 111 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 122 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 133 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW⚡ | …sts/unit/converter/test_azure_speech_text_converter.py | 151 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | …sts/unit/converter/test_azure_speech_text_converter.py | 169 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | …sts/unit/converter/test_azure_speech_text_converter.py | 193 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | …sts/unit/converter/test_azure_speech_text_converter.py | 232 | side_effect=lambda env_var_name, passed_value: passed_value or "dummy_value", | CODE |
| LOW | tests/unit/datasets/test_vlguard_dataset.py | 430 | loader = _VLGuardDataset(token="fake_token") | CODE |
| LOW⚡ | tests/unit/datasets/test_visual_leak_bench_dataset.py | 305 | assert seed.metadata["target"] == "user@example.com" | CODE |
| LOW | tests/unit/datasets/test_visual_leak_bench_dataset.py | 293 | mock_data = [_make_pii_example(pii_type="Email", target="user@example.com")] | CODE |
| LOW⚡ | tests/unit/models/test_yaml_seed_loader.py | 160 | assert loaded.authors == ["Jane Doe"] | CODE |
| LOW⚡ | tests/unit/common/test_common_net_utility.py | 121 | assert params == {"name": "John Doe", "email": "test@example.com"} | CODE |
| LOW | …t/prompt_target/target/test_huggingface_chat_target.py | 32 | return_value="dummy_token", | CODE |
| LOW | doc/code/converters/5_file_converters.py | 52 | "hiring_manager_name": "Jane Doe", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …embic/versions/b2f4c6a8d1e3_add_conversations_table.py | 73 | always wins over null; a WARNING is logged if two distinct non-null targets are | STRING |
| HIGH | pyrit/auth/copilot_authenticator.py | 36 | ``pip install playwright && playwright install chromium``. | STRING |
| HIGH | pyrit/auth/copilot_authenticator.py | 306 | "'pip install playwright && playwright install chromium'" | CODE |
| HIGH | pyrit/models/json_schema_definition.py | 49 | # JSON-serializable values (objects, arrays, strings, numbers, booleans, null). | COMMENT |
| HIGH | pyrit/score/scorer_evaluation/scorer_evaluator.py | 588 | # is undefined; report NaN explicitly. MAE captures the bias magnitude. | COMMENT |
| HIGH | tests/unit/converter/test_code_chameleon_converter.py | 55 | '\nThe encrypted_problem you need to solve is: {"value": "cut", "left": {"value": "How", "left": null, "right": | CODE |
| HIGH⚡ | …s/unit/datasets/test_moral_integrity_corpus_dataset.py | 93 | """Non-string Q values (e.g. null) are skipped without crashing.""" | STRING |
| HIGH⚡ | tests/unit/score/test_scorer_evaluator.py | 190 | # Constant non-zero diff has no within-sample variance: t-test undefined, reported as NaN. | COMMENT |
| HIGH | build_scripts/compose_docs_dist.py | 143 | if (match === null) return; // no manifest -- show static fallback | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/memory/memory_interface.py | 884 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 1061 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 1431 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 1680 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 1844 | CODE | |
| LOW | pyrit/memory/memory_interface.py | 2207 | CODE | |
| LOW | pyrit/converter/image_compression_converter.py | 50 | CODE | |
| LOW | pyrit/converter/pdf_converter.py | 39 | CODE | |
| LOW | pyrit/converter/qr_code_converter.py | 18 | CODE | |
| LOW | pyrit/output/helpers.py | 24 | CODE | |
| LOW | pyrit/output/attack_result/pretty.py | 24 | CODE | |
| LOW | pyrit/backend/routes/attacks.py | 71 | CODE | |
| LOW | pyrit/backend/services/attack_service.py | 92 | CODE | |
| LOW | pyrit/score/batch_scorer.py | 45 | CODE | |
| LOW | pyrit/score/scorer_prompt_validator.py | 18 | CODE | |
| LOW | …score/true_false/self_ask_general_true_false_scorer.py | 43 | CODE | |
| LOW | …ore/float_scale/self_ask_general_float_scale_scorer.py | 40 | CODE | |
| LOW | pyrit/scenario/core/attack_technique_factory.py | 72 | CODE | |
| LOW | pyrit/scenario/core/attack_technique_factory.py | 149 | CODE | |
| LOW | pyrit/auxiliary_attacks/gcg/attack/gcg/gcg_attack.py | 134 | CODE | |
| LOW | pyrit/auxiliary_attacks/gcg/attack/gcg/gcg_attack.py | 227 | CODE | |
| LOW | …it/auxiliary_attacks/gcg/attack/base/attack_manager.py | 652 | CODE | |
| LOW | …it/auxiliary_attacks/gcg/attack/base/attack_manager.py | 868 | CODE | |
| LOW | …it/auxiliary_attacks/gcg/attack/base/attack_manager.py | 982 | CODE | |
| LOW | …it/auxiliary_attacks/gcg/attack/base/attack_manager.py | 1221 | CODE | |
| LOW | pyrit/executor/attack/multi_turn/chunked_request.py | 97 | CODE | |
| LOW | pyrit/executor/attack/multi_turn/tree_of_attacks.py | 1303 | CODE | |
| LOW | pyrit/executor/attack/multi_turn/pair.py | 55 | CODE | |
| LOW | …r/attack/component/adversarial_conversation_manager.py | 408 | CODE | |
| LOW | pyrit/executor/promptgen/fuzzer/fuzzer.py | 539 | CODE | |
| LOW | pyrit/executor/promptgen/fuzzer/fuzzer.py | 602 | CODE | |
| LOW | pyrit/prompt_target/azure_ml_chat_target.py | 67 | CODE | |
| LOW | pyrit/prompt_target/litellm_chat_target.py | 178 | CODE | |
| LOW | pyrit/prompt_target/http_target/httpx_api_target.py | 40 | CODE | |
| LOW | …prompt_target/hugging_face/hugging_face_chat_target.py | 60 | CODE | |
| LOW | pyrit/prompt_target/openai/openai_chat_target.py | 92 | CODE | |
| LOW | pyrit/prompt_target/openai/openai_response_target.py | 98 | CODE | |
| LOW | pyrit/prompt_target/openai/openai_target.py | 82 | CODE | |
| LOW | tests/unit/mocks.py | 25 | CODE | |
| LOW | tests/unit/mocks.py | 59 | CODE | |
| LOW | …/unit/datasets/test_decoding_trust_toxicity_dataset.py | 18 | CODE | |
| LOW | tests/unit/backend/test_attack_service.py | 63 | CODE | |
| LOW | tests/unit/backend/test_scenario_run_service.py | 59 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | doc/index.md | 93 | OPENAI_CHAT_KEY="<your-api-key>" | CODE |
| HIGH | doc/code/targets/prompt_shield_target.py | 77 | # pst = PromptShieldTarget(endpoint=os.environ.get("AZURE_CONTENT_SAFETY_API_ENDPOINT"), api_key="your-api-key") | COMMENT |
| HIGH | doc/code/targets/10_http_target.py | 48 | # Ocp-Apim-Subscription-Key: your-api-key | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | doc/blog/2025_06_06.md | 72 | - This aligns with Case Study #2 (LLM-assisted scams) from the AI Red Team Lessons eBook, where AI-generated deception w | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …prompt_target/target/test_playwright_copilot_target.py | 54 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyrit/converter/codechameleon_converter.py | 271 | def helper(node_dict): | STRING |
| LOW | tests/unit/converter/test_code_chameleon_converter.py | 73 | def helper(node_dict): | STRING |