Semgrep

Developer Tools

A fast static-analysis engine for finding bugs and enforcing code standards across languages.

Latest v1.173.0 · by Semgrep, Inc.Websitesemgrep/semgrep

Release activity

Release activity — 10 releases across 10 days since May 27, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before May 27, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026
MondayNo releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 20261 release on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
Wednesday1 release on May 27, 20261 release on Jun 3, 2026No releases on Jun 10, 20261 release on Jun 17, 20261 release on Jun 24, 2026No releases on Jul 1, 20261 release on Jul 8, 20261 release on Jul 15, 20261 release on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026
ThursdayNo releases on May 28, 2026No releases on Jun 4, 20261 release on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 20261 release on Aug 13, 2026
FridayNo releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026
SaturdayNo releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026

10 releases since May 27, 2026

Changelog

v1.173.0Latest

Release v1.173.0

Added 2
  • semgrep-core -version now reports the git commit that the binary was built from
  • Pro: Added a no_disk_cache memory policy (--x-mem-policy no_disk_cache) to trade higher memory usage for not caching intermediary scan data structures on disk
Changed 5
  • File targeting now submits path-filtering work to worker domains in batches removing multithreaded synchronization overhead for very large repos
  • Parallel rule parsing for large rulesets now shards rules into files sized by bytes rather than by worker count, stabilizing memory allocations at parse-time and improving parsing throughput
  • Updated the Solidity parser for newer language features (transient storage, named mapping parameters, layout at, assembly flags, global using-directives, EVM Cancun builtins) and corrected ternary/?: vs member-access precedence
  • Pro: Unsupported patterns in case expressions are now handled more robustly, with improved error recovery during taint analysis — branch bodies are no longer dropped from the dataflow intermediate language when a pattern can't be compiled
  • Improved performance in highly parallel scans with many target files, running on systems using the musl libc implementation
Fixed 5
  • When the internal semgrep-core RPC subprocess is terminated by a signal, Semgrep now logs a clear error naming the signal, instead of the misleading "Expected a number, got ''" message
  • A target file whose path filtering failed was silently omitted from the scan, appearing in neither the results nor the list of skipped targets. Such paths are now retried, and any that still fail are reported as skipped targets
  • Fixed a bug where a capture-group metavariable-regex or a binding-introducing metavariable-pattern would emit a duplicate finding on the same range whose message still contained the raw metavariable instead of the substituted value
  • Fixed fully-qualified name resolution for Rust symbols imported via a braced grouped use with a nested path
  • Fixed an issue where MCP mode could fail to scan UTF-8 files containing multibyte characters on systems using a non-UTF-8 locale such as cp932. Files are now read as UTF-8, with undecodable bytes replaced so a single unusual file does not fail the entire scan
1.173.0 - 2026-08-12
### Added
  • semgrep-core -version now reports the git commit that the binary was built from. (core-version-git-sha)
  • Pro: Added a no_disk_cache memory policy (--x-mem-policy no_disk_cache) to trade higher memory usage for not caching intermediary scan data structures on disk. (no-disk-cache-memory-policy)
### Changed
  • File targeting now submits path-filtering work to worker domains in batches removing multithreaded synchronization overhead for very large repos. (ENGINE-2854)
  • Parallel rule parsing for large rulesets now shards rules into files sized by bytes rather than by worker count, stabilizing memory allocations at parse-time and improving parsing throughput. (ENGINE-2920)
  • Updated the Solidity parser for newer language features (transient storage, named mapping parameters, layout at, assembly flags, global using-directives, EVM Cancun builtins) and corrected ternary/?: vs member-access precedence. (LANG-207)
  • Pro: Unsupported patterns in case expressions are now handled more robustly, with improved error recovery during taint analysis — branch bodies are no longer dropped from the dataflow intermediate language when a pattern can't be compiled. Pattern matching in statement position also now benefits from the same compilation as expression position. (LANG-598)
  • Improved performance in highly parallel scans with many target files, running on systems using the musl libc implementation. (pcre2-match-data-reuse)
### Fixed
  • When the internal semgrep-core RPC subprocess is terminated by a signal (for example an out-of-memory kill or a segfault), Semgrep now logs a clear error naming the signal, instead of the misleading "Expected a number, got ''" message. When debug logging is enabled, the tail of the subprocess's stderr is included as well. (rpc-subprocess-death-diagnostics)
  • A target file whose path filtering failed was silently omitted from the scan, appearing in neither the results nor the list of skipped targets. Such paths are now retried, and any that still fail are reported as skipped targets so they show up in the scan report. (ENGINE-2854)
  • Fixed a bug where a capture-group metavariable-regex or a binding-introducing metavariable-pattern would emit a duplicate finding on the same range whose message still contained the raw metavariable (e.g. a hash $ALG was detected) instead of the substituted value. Only the correctly-substituted finding is now reported. (ENGINE-2932)
  • Fixed fully-qualified name resolution for Rust symbols imported via a braced grouped use with a nested path (e.g. use a::b::C). It was wrongly being resolved as b::a::C. (LANG-234)
  • Fixed an issue where MCP mode could fail to scan UTF-8 files containing multibyte characters, including Japanese text, on systems using a non-UTF-8 locale such as cp932. Files are now read as UTF-8, with undecodable bytes replaced so a single unusual file does not fail the entire scan. (gdn-168)
View originalPermalink
How v1.173.0 went
v1.172.0

Release v1.172.0

Added 1
  • Added support for the OpenTofu .tofu file extension, which are now automatically detected and scanned as Terraform
Changed 2
  • Updated the Ruby parser to tree-sitter-ruby v0.23.1, improving support for !=, case/when expressions with line breaks, and element references that take a block
  • Extended the window for collecting git contributor information during semgrep ci from the last 30 days to the last 90 days
Fixed 5
  • Semgrep now prints richer error messages on segfaults when --debug is NOT passed, matching the segfault error output when --debug is passed
  • Fixed rare, nondeterministic crashes and incorrect results caused by an OCaml compiler bug by building against a compiler fork that backports the upstream fix
  • Fixed excessive heap growth after explicit major garbage collections by building against an OCaml compiler that improves garbage collection duty cycle pacing
  • Improved the Scan Status output when no code rules will run by removing the confusing '0 Code rules' message and explicitly stating whether code scanning is not enabled or there are no code rules to run
  • Fixed lockfileless Gradle dependency resolution failing with 'Parsing dependency output failed' by pinning the github-dependency-graph-gradle-plugin to 1.4.1
1.172.0 - 2026-07-28
### Added
  • Added support for the OpenTofu .tofu file extension. Because OpenTofu uses the same HCL grammar as Terraform, .tofu files are now automatically detected and scanned as Terraform, so they are picked up by recursive scans and Terraform rulesets (e.g. p/terraform) with no extra configuration. (ENGINE-2884)
### Changed
  • Updated the Ruby parser to tree-sitter-ruby v0.23.1, improving support for !=, case/when expressions with line breaks, and element references that take a block. (LANG-206)
  • The window for collecting git contributor information during semgrep ci has been extended from the last 30 days to the last 90 days, to match the updated usage policy. (contributor-window-90-days)
### Fixed
  • Semgrep will now print richer error messages on segfaults when --debug is NOT passed, matching the segfault error output when --debug is passed (engine-segv)
  • Fixed a source of rare, nondeterministic crashes and incorrect results caused by an OCaml compiler bug. Semgrep now builds against a compiler fork that backports the upstream fix. (ocaml_codegen_fix)
  • Fixed excessive heap growth after explicit major garbage collections. Semgrep now builds against an OCaml compiler that improves garbage collection duty cycle pacing. (ocaml_gc_pacing_fix)
  • Improved the Scan Status output when no code rules will run (e.g. a Secrets-only or Supply-Chain-only scan). The summary line no longer reports a confusing "0 Code rules", and the "Code Rules" section now states explicitly either that code scanning is not enabled or that there are no code rules to run, instead of printing an empty table. (ENGINE-2878)
  • Fixed lockfileless Gradle dependency resolution failing with "Parsing dependency output failed (Resolve_gradle.gradle_resolved_dependency)". The github-dependency-graph-gradle-plugin used during resolution was fetched unpinned, and its 1.4.2 release renamed keys in its JSON output. The plugin is now pinned to 1.4.1. (sc-3738)
View originalPermalink
How v1.172.0 went
v1.171.0

Release v1.171.0

Added 1
  • Added support for the OpenTofu .tofu file extension, which is automatically detected and scanned as Terraform with no extra configuration
Changed 1
  • Extended the window for collecting git contributor information during semgrep ci from the last 30 days to the last 90 days
Fixed 4
  • Fixed rare nondeterministic crashes and incorrect results caused by an OCaml compiler bug by building against a compiler fork that backports the upstream fix
  • Fixed excessive heap growth after explicit major garbage collections by building against an OCaml compiler that improves garbage collection duty cycle pacing
  • Improved Scan Status output when no code rules will run to explicitly state whether code scanning is not enabled or there are no code rules to run instead of printing a confusing summary
  • Fixed lockfileless Gradle dependency resolution failing with parsing errors by pinning the github-dependency-graph-gradle-plugin to version 1.4.1
1.171.0 - 2026-07-22
### Added
  • Added support for the OpenTofu .tofu file extension. Because OpenTofu uses the same HCL grammar as Terraform, .tofu files are now automatically detected and scanned as Terraform, so they are picked up by recursive scans and Terraform rulesets (e.g. p/terraform) with no extra configuration. (ENGINE-2884)
### Changed
  • The window for collecting git contributor information during semgrep ci has been extended from the last 30 days to the last 90 days, to match the updated usage policy. (contributor-window-90-days)
### Fixed
  • Fixed a source of rare, nondeterministic crashes and incorrect results caused by an OCaml compiler bug. Semgrep now builds against a compiler fork that backports the upstream fix. (ocaml_codegen_fix)
  • Fixed excessive heap growth after explicit major garbage collections. Semgrep now builds against an OCaml compiler that improves garbage collection duty cycle pacing. (ocaml_gc_pacing_fix)
  • Improved the Scan Status output when no code rules will run (e.g. a Secrets-only or Supply-Chain-only scan). The summary line no longer reports a confusing "0 Code rules", and the "Code Rules" section now states explicitly either that code scanning is not enabled or that there are no code rules to run, instead of printing an empty table. (ENGINE-2878)
  • Fixed lockfileless Gradle dependency resolution failing with "Parsing dependency output failed (Resolve_gradle.gradle_resolved_dependency)". The github-dependency-graph-gradle-plugin used during resolution was fetched unpinned, and its 1.4.2 release renamed keys in its JSON output. The plugin is now pinned to 1.4.1. (sc-3738)
View originalPermalink
How v1.171.0 went
v1.170.0

Release v1.170.0

Added 3
  • Pro C/C++ scans now skip code inside statically-dead preprocessor branches such as `#if 0 ... #else ... #endif`
  • Restored backtrace printing in semgrep-core and semgrep-core-proprietary when receiving a fatal signal such as SIGSEGV
  • semgrep install-semgrep-pro now sends usage metrics to track installation errors, with ability to disable via `--metrics off` or `SEMGREP_SEND_METRICS=off`, and includes the installation method in metric payloads
Changed 3
  • Increased the timeout for dynamic dependency resolution subprocesses from 600 to 900 seconds
  • Pro C/C++ `#if 0` filtering now handles cases where the directive splits a syntactic unit such as function signatures
  • Updated ocaml-tree-sitter-core dependency to fail loudly on parser/runtime ABI mismatch, stamp generated parser.c with tree-sitter version, and changed paths where tree-sitter versions are installed
Fixed 3
  • Fixed crash at startup with error "Fatal error: Failed to allocate signal stack for domain 0" when running on systems with musl 1.2.6 on recent Intel CPUs
  • Fixed Dockerfile parse errors on `RUN` instructions that use heredoc syntax with `<<EOF`, `<<-EOF`, or quoted delimiters
  • Fixed `metavariable-type` to support fully qualified type names in languages where qualified names in type position parse as expressions when using type inference
1.170.0 - 2026-07-15
### Added
  • Pro C/C++ scans now skip code inside statically-dead preprocessor branches (for example, #if 0 ... #else ... #endif). Patterns that would otherwise match against intentionally-disabled code no longer report on it. (cpp-if-zero-filter)
  • Restored obackward: semgrep-core and semgrep-core-proprietary once again print a backtrace when receiving a fatal signal (e.g. SIGSEGV) (obackward)
  • semgrep install-semgrep-pro now sends usage metrics so that installation errors can be tracked. Metrics can be disabled with --metrics off or SEMGREP_SEND_METRICS=off. Metrics payloads also now include the method used to install the Semgrep CLI (pip, homebrew, docker, or unknown), detected heuristically. See metrics.md for more details of what exactly is sent. (engine-2858)
### Changed
  • Increased the timeout for dynamic dependency resolution subprocesses from 600 to 900 seconds, giving large projects more time to resolve dependencies before timing out. (SC-3699)
  • Pro C/C++ #if 0 filtering now also handles cases where the directive splits a syntactic unit. For example, a function signature toggle like #if 0 void foo(int i) { #else void foo(uint32_t i) { #endif. (engine-994)
### Fixed
  • Fixed a crash at startup (Fatal error: Failed to allocate signal stack for domain 0) when running Semgrep on systems with musl 1.2.6 (e.g. Alpine 3.24) on recent Intel CPUs whose kernel-reported minimum signal-stack size exceeds musl's build-time SIGSTKSZ (notably AMX-capable Xeons). (ENGINE-2863)

  • Dockerfile: Fixed parse errors on RUN instructions that use heredoc syntax (<<EOF, <<-EOF, quoted delimiters). (LANG-263)

  • metavariable-type now supports fully qualified type names in languages where a qualified name in type position parses as an expression (e.g. Python's types: [a.b.C]) when the metavariable's type is determined by type inference, such as Pro engine cross-file type resolution. (LANG-583)

  • Updated the ocaml-tree-sitter-core dependency to the latest main.

    • Fails loudly on a parser/runtime ABI mismatch
    • Stamps every generated parser.c with the tree-sitter version that produced it.
    • Changed paths where tree-sitter versions are installed (lang-591)
View originalPermalink
How v1.170.0 went
v1.169.0

Release v1.169.0

Changed 1
  • Updated Dart parser to a more recent upstream version
1.169.0 - 2026-07-08
### Infra/Release Changes
  • Updated Dart parser to a more recent upstream version. (LANG-579)
View originalPermalink
How v1.169.0 went
v1.168.0

Release v1.168.0

Added 1
  • Add an experimental --x-dependency-paths flag to scan and ci that includes the full dependency path(s) for transitive supply-chain findings in --json and --sarif output
Changed 4
  • Malicious supply chain rules are now labeled "Malicious" instead of "Basic" in the scan analysis summary table
  • semgrep-core no longer depends on libpcre 8.x; libpcre2 10.x is now the sole regex engine
  • Aliengrep (generic mode) now uses the maintained libpcre2 10.x regular-expression library instead of the deprecated libpcre 8.x
  • The metavariable-regex and metavariable-comparison (re.match()) runtimes now use the maintained libpcre2 10.x library instead of the deprecated libpcre 8.x
1.168.0 - 2026-06-24
### Added
  • Added an experimental --x-dependency-paths flag to scan and ci that includes the full dependency path(s) for transitive supply-chain findings in --json and --sarif output. (SC-3547)
### Changed
  • Malicious supply chain rules are now labeled "Malicious" instead of "Basic" in the scan analysis summary table. (SC-3504)
### Infra/Release Changes
  • semgrep-core no longer depends on libpcre 8.x; libpcre2 10.x is now the sole regex engine. (drop-libpcre)
  • Aliengrep (generic mode) now uses the maintained libpcre2 10.x regular-expression library instead of the deprecated libpcre 8.x. Matching behavior is unchanged. (aliengrep-pcre2)
  • The metavariable-regex and metavariable-comparison (re.match()) runtimes now use the maintained libpcre2 10.x library instead of the deprecated libpcre 8.x. Matching behavior is unchanged. (eval-generic-pcre2)
View originalPermalink
How v1.168.0 went
v1.167.0

Release v1.167.0

Added 3
  • Added support for more operators for folding for constant propagation, including subtraction, division, bit ops, bit shifts, comparisons, and more
  • Added a nosemgrep_disabled field to the scan configuration so the platform can disable nosemgrep inline ignore comments org-wide for a scan
  • Semgrep now skips binary files (images, archives, compiled executables, etc.) during scanning by default, detected via matching file extensions to known file-format magic bytes, with --no-exclude-binary-files flag to scan binary files as before
Changed 1
  • Updated the ocaml-tree-sitter-core submodule to the latest upstream main, providing improved thread-safety and bumping the tree-sitter CLI option used from 0.20.6 to 0.20.8
Fixed 1
  • semgrep ci with --sarif now correctly populates the output's ignores field with nosemgrep-suppressed findings, in accordance with other output formatters
1.167.0 - 2026-06-17
### Added
  • Added support for more operators for folding for constant propagation, including subtraction, division, bit ops, bit shifts, comparisons, and more. (const-folding)
  • Added a nosemgrep_disabled field to the scan configuration so the platform can disable nosemgrep inline ignore comments org-wide for a scan. (APPEX-1122)
  • Semgrep now skips binary files (images, archives, compiled executables, etc.) during scanning by default, detected via matching file extensions to known file-format magic bytes Pass --no-exclude-binary-files to scan binary files as before. (ENGINE-2708)
### Fixed
  • semgrep ci with --sarif now correctly populates the output's ignores field with nosemgrep-suppressed findings, in accordance with other output formatters. (gh-6651)
### Infra/Release Changes
  • Updated the ocaml-tree-sitter-core submodule to the latest upstream main, providing

    • improved thread-safety
    • bumps the tree-sitter CLI option used from 0.20.6 to 0.20.8.

    (ocaml-tree-sitter-core-bump)

View originalPermalink
How v1.167.0 went
v1.166.0

Release v1.166.0

Added 2
  • Added experimental cross-file (interfile) analysis for Gosu, enabling taint tracking across multiple Gosu source files
  • Added support for more operators for folding for constant propagation, including subtraction, division, bit ops, bit shifts, comparisons, and more
Fixed 4
  • Fixed parsing of integer literals with an underscore immediately after the radix prefix
  • Python parsing now preserves type parameters on def and class definitions
  • Semgrep no longer stores the API token in ~/.semgrep/settings.yml's stored token when the current scan's token is supplied via the SEMGREP_APP_TOKEN envvar
  • semgrep ci scans originating from a pre-commit hook will no longer fail with 'Unable to create '<tmp>/.git/index.lock': Not a directory' in certain cases
1.166.0 - 2026-06-11
### Added
  • Pro: Added experimental cross-file (interfile) analysis for Gosu, enabling taint tracking across multiple Gosu source files. (gosu-interfile)
  • Added support for more operators for folding for constant propagation, including subtraction, division, bit ops, bit shifts, comparisons, and more (ENGINE-2789)
### Fixed
  • Fixed parsing of integer literals with an underscore immediately after the radix prefix (e.g. 0x_dead_beef, 0o_755, 0b_1010_1010). (LANG-533)
  • Python parsing now preserves type parameters on def and class definitions. (LANG-536)
  • Semgrep no longer stores the API token in ~/.semgrep/settings.yml's stored token when the current scan's token is supplied via the SEMGREP_APP_TOKEN envvar. (SEC-2240)
  • semgrep ci scans originating from a pre-commit hook will no longer fail with Unable to create '<tmp>/.git/index.lock': Not a directory in certain cases. (engine-2736)
### Infra/Release Changes
  • Added parsing tests covering Python language features (Python 3.0–3.12). (LANG-531)
View originalPermalink
How v1.166.0 went
v1.165.0

Release v1.165.0

Added 1
  • Added `--max-match-context-size` option to limit the number of characters of source code included as context for each match in the output, with a default value of 0 for unlimited
Changed 2
  • Replaced `--x-no-python-schema-validation` with a value-taking `--x-rule-validation=full|core-only|none` flag, where `full` is the default and preserves existing Python rule validation behavior
  • Updated Python grammar
Fixed 2
  • Added bit shift operations to metavar comparison in addition to standard arithmetic operators and logical bit ops
  • Reduce intermittent `validation_error` results on HTTP secret validators by retrying transient network failures
1.165.0 - 2026-06-03
### Added
  • Added --max-match-context-size option to limit the number of characters of source code included as context for each match in the output. This prevents matches in minified files (e.g., minified JavaScript where the entire file is a single line) from producing enormous output Set to 0 for unlimited, which is the default value. (ENGINE-2117)
### Changed
  • Replaced --x-no-python-schema-validation with a value-taking --x-rule-validation=full|core-only|none flag. The default (full) preserves existing Python rule validation behavior; core-only matches the old flag's semantics (disables Python rule validation and uses semgrep-core RPC validation only); none skips both pre-validation passes, surfacing rule errors at scan-time. --x-no-python-schema-validation is still accepted as a no-op with a deprecation warning, and will be removed in a future release. (x-rule-validation)
  • Python: Updated Python grammar (LANG-201)
### Fixed
  • Added bit shift operations to metavar comparison in addition to already present standard arithmetic operators and logical bit ops. (ENGINE-2448)
  • Reduce intermittent validation_error results on HTTP secret validators (Facebook, Slack, Stripe, Google, Cloudflare, etc.) by retrying transient network failures, mirroring the retry behavior already present for AWS validators. (SCRT-965)
View originalPermalink
How v1.165.0 went
v1.164.0

Release v1.164.0

Added 1
  • Dart: typed metavariables ($X as T) and metavariable-type, metavariable binding inside string interpolations, and function-definition patterns that match Dart function definitions
Changed 2
  • The default memory limit for Pro interfile scans on Linux now adapts to the container's cgroup memory limit (90% of it) instead of the previous fixed 5 GiB, with an 8 GiB fallback when no cgroup limit is detected
  • Lower the glibc constraint from >=2.35 to >=2.34, allowing users on distros that ship glibc 2.34 (e.g RHEL 9 & AL2023) to install the semgrep wheel
Fixed 7
  • Baseline diff scans no longer treat every finding on a file as newly introduced when rule(s) failed during the baseline run, and per-rule failures now hide only that rule's matches on that file from the new vs baseline comparison
  • Fixed a yarn.lock parse error on Yarn Berry entries written in YAML explicit-key form
  • The SBT resolver with --allow-local-builds now correctly identifies dependencies as part of the Maven ecosystem
  • Fixed --sarif-output and --sarif causing nosemgrep-suppressed findings to be reported in CLI scan output and to block scans
  • Fixed a bug that could cause unreliable target filtering in parallel scans
  • Dart: improved parser fidelity for Dart 3 grammar features and routed pattern parsing for statements beginning with await, rethrow, and other statement keywords
  • Fixed dynamic library lookup for semgrep-core-proprietary on macOS so the binary works when semgrep install-semgrep-pro is invoked and semgrep is installed via Homebrew
1.164.0 - 2026-05-26
### Added
  • Dart: typed metavariables ($X as T) and metavariable-type, metavariable binding inside string interpolations, and function-definition patterns that match Dart function definitions. (gh-11678)
### Changed
  • The default memory limit for Pro interfile scans on Linux now adapts to the container's cgroup memory limit (90% of it) instead of the previous fixed 5 GiB, with an 8 GiB fallback when no cgroup limit is detected. (ENGINE-2568)
  • Lower the glibc contraint from >=2.35 to >=2.34, allowing users on distros that ship glibc 2.34 (e.g RHEL 9 & AL2023) to install the semgrep wheel. (gh-11622)
### Fixed
  • Baseline diff scans (semgrep ci and --baseline-commit) no longer treat every finding on a file as newly introduced when rule(s) failed during the baseline run.

    Per-rule failures (for example a timeout for a single rule) on baseline analysis now hide only that rule's matches on that file from the "new vs baseline" comparison. Other rules on the same file are still taken in comparison for the "new vs baseline" comparison.

    Per-file, rule-independent failures now hide all findings on that file from the "new vs baseline" comparison. (LANG-515)

  • Fixed a yarn.lock parse error on Yarn Berry entries written in YAML explicit-key form. Affected lockfiles previously failed to parse. (SC-3479)

  • The (beta) SBT resolver with --allow-local-builds now correctly identifies dependencies as part of the Maven ecosystem. (SC-3522)

  • Fix --sarif-output and --sarif causing nosemgrep-suppressed findings to be reported in CLI scan output and to block scans. Suppressed findings are now correctly excluded from terminal text output, the scan-summary count, and the CLI's exit code. (engine-1824)

  • Fixed a bug that could cause unreliable target filtering in parallel scans. (gh-6313)

  • Dart: improved parser fidelity for Dart 3 grammar features and routed pattern parsing for statements beginning with await, rethrow, and other statement keywords. Eliminates a large class of PartialParsing errors on real-world pub.dev packages. (gh-11678)

### Infra/Release Changes
  • pro: macOS: Fixed dynamic library lookup for semgrep-core-proprietary so the binary works when semgrep install-semgrep-pro is invoked, and semgrep is installed via Homebrew. (pro-binary-homebrew)
  • Pro: Added optional <case>.named_ast.expect golden files for tests/intrafile/maturity/ fixtures, exercised by Unit_maturity_named_asts. (LANG-287)
View originalPermalink
How v1.164.0 went
View all

Discussion

If you publish Semgrep, you can claim this product by proving you administer its repository.