microsoft/PyRIT - Open Source PR Review Scorecard

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.

C-Rank Grade: S (Elite) - 71/100

External PR Merge Rate: 78%

Response Time: -

First Timer Success: 65%

Frequently Asked Questions

Is microsoft/PyRIT welcoming to first-time open-source contributors?

microsoft/PyRIT has a recorded first-timer success rate of 64.5%. Repositories ranked S typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in microsoft/PyRIT respond to incoming external pull requests in approximately 0.0 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 71.1 C-Rank™ score (S Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 71.1 places microsoft/PyRIT in the S tier.

What is the external contributor pull request merge rate for microsoft/PyRIT?

The external contributor pull request merge rate for microsoft/PyRIT is 77.7%, based on public PR activity from non-core contributors.

Are there Good First Issues available in microsoft/PyRIT?

microsoft/PyRIT currently has 11 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

microsoft
microsoft/PyRITS•Elite4.6k
GitHub
Back to Explorer
microsoft

microsoft/PyRIT

4,607
Active (30d)S•Elite(71/100)Python

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.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Welcoming Community Builder

Warmth Score
8.8/10
Patience Score
8.6/10
Nitpick Rate
45%

Highly welcoming maintainers in microsoft/PyRIT. Prompt code reviews with positive guidance for new contributors.

Top PR Submission Do's

  • •Ensure code complies with the project coding style
  • •Keep PRs scoped to a single concern
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit PRs without linking an issue
  • •Do not break existing tests without fixing them
  • •Do not mix unrelated refactors in a single PR
Response Velocity
-
No reviewer activity recorded

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
77.7%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
64.5%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
85 core
Highly collaborative maintainer core
Diagnostic Health HUD
77.7%
Merge Gauge
64.5%
1st-Timer
Community Vibe50/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for microsoft/PyRIT
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/microsoft/PyRIT)](https://getmerged.abhishekco.de/microsoft/PyRIT?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Is your feature request related to a problem? Please describe. PyRIT now requires Python >=3.11 (currently <3.15), and Ruff targets py311. We can use Python 3.11 features consistently across supported versions, simplify older compatibility patterns, and improve typing, diagnostics, and async lifecycle management. Some features are already partially adopted; the opportunities below are investigations, not instructions to replace every existing pattern. Describe the solution you'd like How to participate: ONE opportunity at a time Claim exactly ONE checklist item at a time by commenting on this issue thread with its ID (for example, P311-01) and a short description of what you intend to investigate. Do not start multiple items or claim a bundle. Wait for confirmation here before treating the item as reserved. Claims are processed in comment order, and this issue is checked approximately every three hours. You must open a PR within five days (120 hours) of your claim comment. The confi

📅 Opened Oct 13, 2026💬 2 comments
Quality: 55/100Contribute

Is your feature request related to a problem? Please describe. Scenario progress exposes flat result rows, producer roles, parent-relative indexes, and stored child IDs. Generic attack APIs expose one attack's details and conversations, but do not resolve a Scenario's parent/child hierarchy in a bounded read. A client would otherwise have to reconstruct relationships and fetch children individually, with unclear behavior for missing legacy records. The producer-side failure-link prerequisite was fixed in #3048, which closed #3039. For example, an error envelope can retain a completed child's ID followed by the failed child's confirmed persisted ID. The read contract still needs to present those ordered edges, nested envelopes, and unresolved children without inventing lineage or equating a producer role with a physical target invocation. Describe the solution you'd like Add a consumed, typed, bounded Scenario result hierarchy projection using existing async memory reads, generic atta

📅 Opened Oct 12, 2026💬 2 comments
Quality: 75/100Contribute

Is your feature request related to a problem? Please describe. Current main records producer roles but does not use them for target-attempt rollups. The shared analytics helper, progress, and history SQL count attempts without a producer-role predicate. Thus their existing logical-unit/raw-history counts must not be presented as target-attempt counts. For example, two target-facing child results plus one Sequential envelope are three historical result rows, but only two target-facing producer attempts. The envelope can still complete one outer planned logical unit. A preparation error may also have a target-facing role, so this role alone does not prove a target request occurred. This check inspected code; it did not run an attack. Describe the solution you'd like Add a consumed typed target-facing accounting projection using the existing AttackResultMetadata contract and shared Scenario analytics/identity policy. Keep planned logical progress, raw historical attempts, and target-fac

📅 Opened Oct 8, 2026💬 3 comments
Quality: 50/100Contribute

Describe the bug garak.web_injection can use datasets that are not included in an explicit --dataset-names selection. As a result, the same command fails with empty memory but succeeds when load_default_datasets has already populated memory. For example, task_xss requires both garak_xss_normal_instructions and garak_web_html_js. Selecting normal instructions and example domains omits the HTML/JavaScript payload dataset. The scenario does not validate this missing dependency before reading all four web-injection source datasets directly from memory. The missing dataset in the command is a configuration error. The bug is that preloading datasets hides that error and changes the command's behavior, despite --dataset-names being documented as replacing the scenario defaults. Steps/Code to Reproduce Use a configured openai_chat target and a fresh backend with memory_db_type: in_memory. Do not include load_default_datasets in the backend configuration initially. Run: pyrit_scan run garak.w

📅 Opened Oct 5, 2026💬 1 comment
Quality: 50/100Contribute

Is your feature request related to a problem? Please describe. Scenario progress does not explicitly distinguish a result that represents orchestration from one that represents a target-facing attack. It also lacks the planned group's semantic kind. For example, a SequentialAttackResult has no target conversation of its own. Its child results own the conversations, and their ordered IDs already survive storage in the parent's metadata. Without an explicit role, progress consumers have to interpret names or result details themselves. That makes later hierarchy rendering and target-attempt accounting harder to keep consistent. Conceptually, an Adaptive execution can look like this: One planned execution unit SequentialAttack parent: orchestration child attempt 0: target-facing child attempt 1: target-facing Those child results must not silently turn one planned unit into two. A target-facing role also does not, by itself, prove that a request reached the objective target. Thi

📅 Opened Oct 5, 2026💬 1 comment
Quality: 50/100Contribute
Looking for more Python beginner tasks?Explore Python GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for microsoft/PyRIT

When evaluating whether to contribute to microsoft/PyRIT, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of microsoft/PyRIT acknowledge new external contributions in approximately -. Out of all submitted pull requests from non-core authors in the last 180-day window, 77.7% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to microsoft/PyRIT

01

Is microsoft/PyRIT welcoming to first-time open-source contributors?

microsoft/PyRIT has a recorded first-timer success rate of 64.5%. Repositories ranked Elite typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~-. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 71.1 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 71.1 places microsoft/PyRIT in the Elite tier.

04

What is the external contributor pull request merge rate for microsoft/PyRIT?

The external pull request merge rate is 77.7%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in microsoft/PyRIT?

Yes, microsoft/PyRIT currently has 11 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for microsoft/PyRIT are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.