
One year of Opengrep: What we built and what’s next
Aikido Security recaps the first year of Opengrep, the LGPL-licensed fork of Semgrep created by a consortium of security vendors to keep advanced static analysis open source. It details engine work (OCaml 5 migration with shared-memory parallelism, intrafile cross-function taint analysis via --taint-intrafile, native Windows support, new language support for Visual Basic/Apex/Elixir/Clojure), performance gains (25-74% faster scans, 2x faster taint analysis), adoption metrics, and a maintainer Q&A that admits a PyPI package-hijack risk from an unsecured package name/misconfiguration. It closes with a roadmap toward interfile taint analysis and full removal of the Python wrapper.
What it is
Opengrep is an open-source fork of Semgrep's SAST engine, maintained by Dimitris Mostrous, Maciej Piróg, and Corneliu Hoffman under LGPL-2.1. This post gives the concrete deltas versus Semgrep CE after one year — the specific features, flags, and one security incident that the summary omits.
How it works / What's different
Opengrep ships as a self-contained binary with no Python dependency, native Windows support, and telemetry/proprietary service dependencies removed. It runs on OCaml 5 with shared-memory parallelism (Semgrep has since followed with its own OCaml 5 and Windows work).
Capabilities not in Semgrep CE at fork time:
- Cross-function (intrafile) taint analysis, enabled with the
--taint-intrafileflag, including higher-order functions across multiple languages. - Added languages: Visual Basic, Apex, Elixir, plus Clojure taint support.
- Operational features: per-rule timeouts, dynamic timeouts based on file size, configurable ignore annotations.
Claimed measurements (vendor's own numbers): 25–74% faster full-ruleset scans on large repos; up to 2× faster taint analysis; better multi-hop taint detection (cited example: 25 findings vs 5 on ComfyUI). 1.74M binary downloads, 2,000+ GitHub stars, 10 companies in production.
What to do
If you already run Semgrep rules, Opengrep is described as fully compatible with existing rules and configurations, so it's a low-friction A/B test. To exercise the differentiating feature:
opengrep --taint-intrafilePrefer the GitHub release binary over the pypi package — see the caveat below.
Caveats
- PyPI package-hijack exposure (self-reported). The maintainers state they did not secure the package name on PyPI and distributed wheels on release; combined with a misconfiguration, this "created a pathway for a malicious user to hijack the package." The post does not say it was exploited, nor that it's fully resolved. Treat the PyPI distribution path with caution and verify what you install.
- Numbers are the vendor's. All performance and detection figures come from Aikido/the maintainers; no independent reproduction is cited.
- Contribution barrier is high. ~200k lines of OCaml; only 17 external contributors / 29 PRs in year one. Most development is the three core maintainers — a bus-factor consideration if you depend on it long-term.
- The determinism argument (same code + rules → same findings, unlike probabilistic AI scanners) is a positioning claim relevant if you need reproducible CI/CD or compliance output.
Technologies named here
Techniques named here
- Cross-function taint analysis
- Interfile taint analysis
- Package name hijacking
Related in AppSec
Flowise MCP Security Bypass Enables RCE
Inside an Oracle Database SQL Injection Attack | Huntress
OASIS
