Freedom251 › Static Application Security Testing Software
Pysa

What Pysa is
Pysa is a Python static analysis tool that uses taint analysis to flag potential security issues. It follows data from configured sources toward dangerous sinks, such as user-controlled request data reaching an eval call. Teams configure sources, sinks, features, and rules in taint.config, and can annotate code with .pysa model files. Pysa includes models and rules for built-in and commonly used Python libraries, plus ways to model sanitizers that clear taint from parameters or return values.
Pysa analyzes the target repository and directories specified in search_path; dependency source outside those locations is not included. It requires Python 3.9 or later and currently relies on type information from Pyrefly. A GitHub Action can run it in CI and display findings in GitHub's Security code scanning UI. The documented results workflow uses SAPP to ingest findings and show them in a local web interface. Pysa is free, MIT-licensed software for self-hosted use, with a listed price of $0.
Who it suits
Pysa suits Python teams looking for taint-based security analysis in a repository or CI workflow. It is relevant to teams able to configure analysis paths and models, and provide adequate memory for analysis.
What it does well
- Tracks data from sources to potentially dangerous sinks.
- Includes models for built-in and common Python libraries.
- GitHub Action can show results in Security code scanning.
- SAPP provides a local interface to view and filter findings.
What to know first
- Dependency source outside configured paths is not analyzed.
- Inaccessible function source can lead to false positives.
- Analysis may freeze when the machine lacks enough memory.
- Default SAPP filters can trade false positives for false negatives.
Limits
The free plan is the MIT-licensed open-source software, priced at $0. No quota or feature cap is listed for that plan.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Free (MIT-licensed open-source software) | Python static analysis; install with pip | Free |
As pyre-check.org lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- Create a Python virtual environment.
- Install Pysa with `pip install pyre-check`.
- Configure analysis paths and taint rules in `taint.config`.
- Annotate code with `.pysa` model files as needed.
- Run analysis locally or through the GitHub Action.
- Use SAPP to ingest results and view or filter issues.
Pysa is a Python-focused static analyzer that follows potentially unsafe data through an application. It best suits security-minded Python teams that can maintain their own analysis configuration and CI environment. Its strongest fit is configurable, self-hosted taint checking; teams with opaque dependencies or limited build memory should be cautious.
Overview
Pysa traces values from declared sources to dangerous sinks, such as request data reaching an eval call. That data-flow view can expose vulnerabilities spanning multiple functions, rather than only matching isolated code patterns. The project says it can analyze codebases with millions of lines, but large analyses still depend on adequate machine memory.
Scanning covers the target repository and directories named in search_path. Source for dependencies outside those paths is not analyzed, which can hide behavior at package boundaries. Pysa requires Python 3.9 or later and currently depends on type information from Pyrefly.
Key features
Tunable taint rules
Teams define sources, sinks, features, and rules in taint.config, then add code-specific models in .pysa files. Built-in models for Python's standard and common libraries provide a foundation, while custom models let a security team represent its own frameworks. Sanitizer definitions can mark return values or parameters as clean, so legitimate validation points can be reflected in the analysis.
Developer and findings workflow
Pyre supports the Language Server Protocol, and its VSCode extension connects to a running server. The documented workflow sends Pysa output to SAPP, whose local web interface supports viewing and filtering findings. That combination is practical for teams that want findings close to code and a separate triage view, but it adds services to operate.
Automation
A GitHub Action runs Pysa in CI and publishes results in GitHub's Security code scanning interface. Its default SAPP filters favor higher-signal output, a useful way to reduce alert volume that can also miss some true issues. Pysa is self-hosted and distributed under the MIT license. The Pyre repository was archived on June 26, 2026; Pysa has moved to its own repository, so teams should track that separate project for ongoing maintenance.
Pricing
| Plan | Price | What it includes |
|---|---|---|
| Free (MIT-licensed open-source software) | free | Python static analysis installed with pip |
There are no seat charges or usage quotas attached to this plan. It fits individuals and organizations able to run and maintain their own Python tooling. In exchange for the zero price, you provide the infrastructure, configuration work, model maintenance, and result triage; there is no hosted service tier described for teams that want those responsibilities managed.
Platforms
Pysa is available as an extension and runs on Linux, macOS, Windows, and self-hosted deployments. Installation starts with pip install pyre-check inside a Python virtual environment. CI use is supported through the GitHub Action, while the editor path is centered on VSCode and a running server.
Who it's for
Pysa is a strong choice for Python application teams with security engineers who can write taint models, include relevant source directories, and operate CI and local findings services. It is particularly appropriate when tracing user-controlled input to high-risk operations is more valuable than broad language coverage.
Look elsewhere if your risk analysis depends heavily on third-party code that cannot be added to search_path, if build machines have tight memory limits, or if you need a managed scanner rather than self-hosted components. Unavailable function source can lead Pysa to assume returned data remains tainted, creating false positives that require model tuning.
Pros and cons
- Pro: Source-to-sink tracking targets exploitable data flows, including input reaching calls such as eval.
- Pro: Custom configuration, library models, and sanitizer annotations let teams adapt checks to their own frameworks.
- Pro: GitHub Actions and Security code scanning provide a direct CI reporting path.
- Pro: Free MIT-licensed software avoids subscription cost and supports self-hosting.
- Con: Dependencies outside configured search paths are invisible, limiting cross-package analysis.
- Con: Missing function source can produce false positives; high-signal filtering may instead trade toward false negatives.
- Con: Insufficient memory can freeze analysis on projects of similar scale, adding infrastructure planning to adoption.
Alternatives
Skylos is worth choosing when you want a freemium option with local CLI scans plus a cloud project, stored scans, and history. Snyk Open Source fits teams seeking hosted software-composition analysis with a free monthly plan and paid collaboration tier. Horusec provides a free Apache-licensed CLI and platform for a broader self-hosted security workflow. MobSF is the better match for Android and iOS application testing. Puma Scan offers a free open-source community edition alongside a paid annual end-user license. Semgrep Code is preferable when you need hosted code and supply-chain scanning with repository and contributor limits on its free edition. Flawfinder is a free GPL-licensed option for its supported scanning approach. Microsoft DevSkim suits teams wanting a free MIT-licensed library, CLI, and IDE extensions. Browse the Static Application Security Testing Software directory for more choices.
Verdict
Choose Pysa if you want no-cost, self-hosted Python taint analysis that can be tailored to application-specific sources, sinks, and sanitizers and enforced in GitHub CI. Choose another tool when dependency visibility, managed operation, predictable memory use, or lower tuning overhead matters more than deep control of Python data-flow rules.
Verdict
Pysa offers configurable taint analysis, CI support, and a local findings workflow at no cost. Check its analysis scope, memory needs, and potential false positives against your codebase before adopting it.
Questions
How much does Pysa cost?
The listed Free plan costs nothing. Pysa is open source and licensed under MIT.
Which Python versions does Pysa require?
Pysa requires Python 3.9 or later and relies on type information from Pyrefly.
Which platforms are listed?
The listed platforms are extension, Linux, macOS, self-hosted, and Windows.
Can Pysa run in CI?
Yes. A GitHub Action can run Pysa in CI and show results in GitHub's Security code scanning UI.
How can teams view Pysa findings?
The documented workflow uses SAPP to ingest results and display them in a local web interface for viewing and filtering.
Who makes Pysa, and where are security issues reported?
Pysa moved to its own repository after the Pyre repository was archived on June 26, 2026. Its security policy directs reports through Meta's Bug Bounty program.
Facts from Pysa's own pages
- Analysis limitation
- Pysa analyzes code in the repository and configured search paths, but does not see dependency source code outside those paths. · pyre-check.org, 8 Oct 2026
- Analysis scope
- Pysa analyzes code in the target repository and directories listed in the configuration search_path; it does not see dependency source code otherwise. · pyre-check.org, 4 Oct 2026
- Built-in coverage
- Pysa includes pre-written models and rules for built-in and common Python libraries. · pyre-check.org, 8 Oct 2026
- CI integration
- A GitHub Action can run Pysa in CI and show results in GitHub's Security code scanning UI. · github.com, 8 Oct 2026
- Codebase scale
- The Pysa repository says it can analyze codebases with millions of lines of code. · github.com, 8 Oct 2026
- Data flow analysis
- Pysa tracks data from sources to dangerous sinks, such as user-controlled request data reaching an eval call. · pyre-check.org, 4 Oct 2026
- Editor integration
- Pyre supports the Language Server Protocol and provides a VSCode extension that connects to a running server. · pyre-check.org, 4 Oct 2026
- Filtering trade-off
- The Pysa Action documentation says its default SAPP filters aim for higher-signal results and may trade false positives for false negatives. · github.com, 8 Oct 2026
- Installation
- Pysa is currently distributed as part of the pyre-check package and can be installed with pip install pyre-check. · github.com, 8 Oct 2026
- Known limitation
- When Pysa encounters a function whose source it cannot access, it assumes the function's return value has the same taint, which can cause false positives. · pyre-check.org, 4 Oct 2026
- Known trade-off
- The documentation says Pysa may produce false positives when it lacks a function's source and assumes the return value retains taint. · pyre-check.org, 8 Oct 2026
- License
- Pysa is licensed under the MIT license. · github.com, 8 Oct 2026
- Maintenance status
- The Pyre repository says it was archived on June 26, 2026, and that Pysa moved to its own repository. · github.com, 4 Oct 2026
- Models and rules
- Users configure sources, sinks, features, and rules in taint.config and model files with the .pysa extension. · pyre-check.org, 8 Oct 2026
- Platforms
- The installation page recommends its PyPI binary distribution for macOS and Linux; it says Windows use via WSL has worked but is not officially supported. · pyre-check.org, 4 Oct 2026
- Purpose
- Pysa is a security-focused static analysis tool for Python that tracks data flows to find security and privacy issues. · github.com, 8 Oct 2026
- Requirements
- Pysa requires Python 3.9 or later and currently relies on type information from Pyrefly. · github.com, 8 Oct 2026
- Resource needs
- The quickstart says Pysa may freeze during analysis on projects of similar size when the machine does not have enough memory. · pyre-check.org, 4 Oct 2026
- Results interface
- The documented quickstart uses SAPP to ingest Pysa results and view and filter issues in a local web UI. · pyre-check.org, 8 Oct 2026
- Results workflow
- The quickstart uses SAPP to ingest Pysa results and provides a web UI for viewing and filtering issues. · pyre-check.org, 4 Oct 2026
- Sanitizers
- Pysa models sanitizers that remove taint from data, including annotations for sanitizing return values and parameters. · pyre-check.org, 4 Oct 2026
- Security reporting
- The Pysa security policy asks users to report security issues through Meta's Bug Bounty program rather than public GitHub issues or pull requests. · github.com, 8 Oct 2026
- Taint analysis
- Pysa tracks data from sources to dangerous sinks, such as user-controlled input reaching an eval call. · pyre-check.org, 8 Oct 2026
