releases.shpreview
Home/Semgrep
Semgrep

Semgrep

$npx @buildinternet/releases get semgrep
May 7, 2026
Release v1.162.0

1.162.0 - 2026-05-07

### Added

  • pro: Improved support for tracking taint through nested functions. (LANG-95)
  • Added indexes to file targeting to improve performance of semgrepignore matching. (gh-27830)

### Changed

  • Faster JSON rule parsing: rule files in JSON format now parse roughly 5x faster end-to-end (measured ~134s → ~28s on a 382MB rule pack) by going through a new hand-written RFC 8259 parser instead of the previous JS-parser-based chain. (ENGINE-2725)
  • Scala projects are now identified for Supply Chain only by their root build.sbt, rather than treating each build.sbt as a different subproject. (SC-3293)
  • MCP semgrep_findings tool: added a refs parameter to filter findings by branch (defaults to the primary branch when not specified), and made autotriage_verdict optional so that findings without an AI verdict can also be returned. (engine-2723)

### Fixed

  • jsonnet: import and importstr now reject paths that resolve outside the rule file's parent directory. (ENGINE-2727)
  • semgrep ci: redact URL-embedded credentials and Authorization header values from git error messages and from the captured tracebacks sent to the fail-open telemetry endpoint, preventing leaks of secrets like CI_JOB_TOKEN from a failed git fetch in GitLab CI. Also closes ENGINE-2731 (raw, unsanitized tracebacks in fail-open telemetry). (ENGINE-2728)
  • semgrep ci no longer transmits SCM tokens to the Semgrep Platform. (ENGINE-2729)
  • semgrep CLI: the on-disk log file (~/.semgrep/semgrep.log or $SEMGREP_LOG_FILE) now respects the requested log level instead of always being written at DEBUG. This narrows the surface for credentials to land on disk via CI runner filesystems or job artifacts; pass --debug to restore the previous behavior. (ENGINE-2730)
  • jsonnet rules: bound recursion in both rule loading and evaluation so a malicious rule can no longer hang semgrep via mutually-recursive imports or runtime function calls that recurse forever. (ENGINE-2727-dos)
  • Scala: Merging consecutive top-level package declarations into a single package path. (LANG-374)
  • Fixed PHP parse errors during highly-parallel parsing. (gh-6197)
  • Fixed Scala parse errors during highly-parallel parsing. (gh-6198)
  • Surface a clearer error from the MCP scan tool when metrics is off and auto config is specified (gh-11649)
  • Fixed unknown option error when spawning the MCP daemon (gh-11660)
Apr 22, 2026
Release v1.161.0

1.161.0 - 2026-04-22

### Added

  • Scala 3.4+ trait parameters are now parsed correctly. (lang-73)

### Fixed

  • Semgrep's HTTP requests no longer log URLs above the debug level; full request details remain available when running with SEMGREP_LOG_SRCS=cohttp.client. (ENGINE-2712)
Apr 16, 2026
Release v1.160.0

1.160.0 - 2026-04-16

### Added

  • Scala: Added tree-sitter parser for improved parsing accuracy with pfff fallback. (LANG-255)
  • pro: taint: Improved support for variadic functions (LANG-375)

### Fixed

  • Fixed performance issues during parsing Semgrep rules containing emoji or other non-BMP Unicode characters. (gh-6070)
  • Emit a warning when semgrep-core rule validation fails and falls back to JSON schema validation, alongside details of the failure. (gh-6071)
Apr 10, 2026
Release v1.159.0

1.159.0 - 2026-04-10

### Fixed

  • Semgrep now reports an error instead of silently returning zero findings when target file discovery fails (e.g., due to a git ls-files failure). (ENGINE-2626)

Release notes include the changes, fixes, and additions in specific versions of Semgrep.

Release v1.158.0

1.158.0 - 2026-04-09

### Added

  • Added support for a supply chain hook for the Semgrep Plugin (supply-chain-hook)
  • Computing taint configs, ~1/4-1/2 of the semgrep-core time in interfile scans, is now done in parallel according to the number of jobs (ENGINE-2649)
  • Semgrep Pro interfile engine (--pro) taint analysis has been redesigned, significantly improving performance (estimated 20-40% improvement). This improvement introduces a slight change in how findings are generated, that may result in more true positives, or less false positives. To revert to previous behavior, pass --no-x-run-taint-once as a flag. (engine-2468)

### Changed

  • semgrep-core macOS binaries are now dynamically linked to the system's libraries. (macos-binary-build)
  • semgrep-core manylinux binaries are now dynamically linked to the system's glibc on glibc systems. This introduces a minimum glibc version requirement of >=2.35, which is satisfied in Ubuntu >=22.04, Debian >=12, RHEL >=10, and other glibc distributions with at least glibc 2.35. Linux systems running an older glibc will need to upgrade their OS. (manylinux-binary-build)
  • The manylinux wheel is now tagged as manylinux_2_35_<arch>, reflecting a minimum requirement of glibc version 2.35. (manylinux-wheel-tag)
  • semgrep-core musllinux binaries are now dynamically linked to the system's musl libc on musl systems. (musllinux-binary-build)
  • The musllinux PyPI wheel is now tagged as musllinux_1_2_<arch>, reflecting a requirement of musl libc version 1.2. (musllinux-wheel-tag)
  • The LSP and MCP servers now use the v2 config download endpoint by default when fetching rules from Semgrep AppSec Platform. Set SEMGREP_DISABLE_CONFIG_DOWNLOAD_V2=1 to fall back to the legacy endpoint. (SMS-2284)

### Fixed

  • Fixed IDE login issues where network errors during token verification were incorrectly clearing the saved token. The LSP now distinguishes 401 Unauthorized (invalid token) from other errors (e.g. network failures), surfacing appropriate messages instead. (ide-login)
  • Fixed SARIF taint trace output: step locations now use the correct file URI, and the full taint sink call trace is included in codeFlows. (engine-2570)
  • The --x-mem-policy flag now propagates to the RPC subprocess, fixing memory tuning for dependency resolution and other RPC-based operations. (pylon-20772)
Mar 31, 2026
Release v1.157.0

1.157.0 - 2026-03-31

### Added

  • pro: Improved taint tracking through lambda calls. (LANG-268)
  • It is now possible to match a class name like in $C.getInstance(...), and then use metavariable-type on $C to check its type. (LANG-271)
  • pro: Improve cross-file taint tracking for globals. (LANG-275)

### Changed

  • Pro: Reduces redundant recomputation during inter-file taint analysis by serializing intermediate results to disk. (ENGINE-2582)
  • pro: Improved golang module resolution. (code-9225)
  • Supply Chain Analysis of npm package lock files now uses a proprietary OCaml-based parser, replacing the old Python version. The supply-chain functionality for these files is now available only to Semgrep Pro users. (gh-5658)

### Fixed

  • Fix Rust parsing of "&raw" where "raw" is an identifier. (rust-parser-updated)
  • Errors during target file discovery (e.g., permission errors, git failures) are now surfaced as warnings instead of being silently ignored. (ENGINE-2627)
  • kotlin: Fixed bug parsing FQNs in metavariable-type. (LANG-271)
  • Fixed requirements.txt parser silently dropping pinned dependencies that followed unpinned package names. (SC-3379)
  • Prevented certain deeply nested aliengrep matches from segfaulting semgrep-core. (engine-2628)
  • Fix Python parsing for files that contains empty strings (or quotes in docstrings) along with match statements. (gh-11287)
  • Fix rule paths.include/paths.exclude filtering when a single file is passed as a scan target. Previously, path patterns like '/src/test//*.java' would not match because only the filename was used for filtering instead of the full project-relative path. (gh-11560)
  • Pro: Improved type resolution in Scala (lang-79)
  • Pro: Improved call resolution in Scala for parameterless methods (lang-80)
Mar 17, 2026
Release v1.156.0

1.156.0 - 2026-03-17

### Changed

  • The Kotlin tree-sitter parser has been updated to the latest available grammar significantly improving Kotlin support in Semgrep. (kotlin-parser)

### Fixed

  • Pro: Experimental interfile tainting for Ruby now disambiguates between variable accesses and zero-argument method calls. (engine-2556)
  • Pro: Memoize tsconfig.json parsing to avoid redundant re-parsing across a project hierarchy. (engine-2596)
  • Fixed a crash in semgrep ci when run in a git repo with no remote origin set (gh-11342)
Mar 11, 2026
Release v1.155.0

1.155.0 - 2026-03-11

### Added

  • Added support for (agentic) hooks in Windsurf. (windsurf-hooks)
  • scala: Improved support for Scala 3's optional braces. (LANG-218)
  • Added PowerShell language support (beta) with parsing and pattern matching (lang-233)

### Changed

  • Removed the experimental and undocumented command semgrep install-ci. (osemgrep-install-ci)

  • Migrate from publishing a single Linux wheel with the platform tag musllinux_1_0_<arch>.manylinux2014_<arch> to publishing two separate wheels:

    • A wheel with the platform tag musllinux_1_0_<arch>
    • A wheel with the platform tag manylinux2014_<arch>

    (pypi-linux-tag)

### Fixed

  • When performing parallel operations over a small number of input items, the engine no longer spawns more OCaml domains than we have items to process. This assists with resource utilisation. (engine-2588)
  • Fixed: Prevent SessionStart hook crash when inject-secure-defaults receives empty stdin (JSONDecodeError). (engine-2592)
  • Semgrep secret validation now times out after 30 seconds instead of 15 minutes. Additionally this timeout is configurable via the --secrets-timeout flag. (engine-2593)
  • Fixed permission errors during lockfileless Java (Gradle) dependency resolution by invoking gradlew via sh when the executable bit is not set (gh-5747)
Mar 6, 2026

Release notes include the changes, fixes, and additions in specific versions of Semgrep.

Mar 4, 2026
Release v1.154.0

1.154.0 - 2026-03-04

### Fixed

  • Fix crash on Windows when running semgrep ci with --debug and no blocking findings. The Windows subprocess path incorrectly raised an exception for all pysemgrep exit codes (including 0), which was silently swallowed in normal mode but propagated as a fatal error when --debug was active. (ENGINE-2491)
  • Changed default memory policy from "eager" to "balanced". Scan times should noticably improve; however, scans may use 5-10% additional memory. If running in a resource-constrained environment, consider setting the memory policy back to "aggressive". (engine-2055)
  • When Semgrep decides which files to scan (targeting), it can take a long time (over 5 minutes) on very large repos (> 10k files). Semgrep will now parallelize this work according to the number of jobs passed (-j) (engine-2512)
  • Fixed a performance issues where passing many scannign roots on the command line (e.g. semgrep scan $(git ls-files '*.py')) caused one semgrep-core subprocess to be spawned per file. Roots that are not directories are now handled directly in Python without any subprocess overhead. (gh-11404)
  • Scala: Restored parse rate after mistaken bug introduced by implicit block parsing fix (lang-215)
Feb 25, 2026
Release v1.153.0

1.153.0 - 2026-02-25

### Added

  • Semgrep core is now optimized with flambda (flambda)
  • Scala: Support for for-yield (LANG-193)

### Fixed

  • Scala: Fixed a parsing bug where subsequent calls in an implicit block would not be considered at the same scope, e.g.
    def f (a: t) =
      foo()
      bar()
    ``` (lang-194)
Feb 18, 2026
Release v1.152.0

1.152.0 - 2026-02-17

### Added

  • Hooks (for both Claude Code and Cursor) now pull custom rules from the registry (custom-rules-hooks)

  • Turned on DNS rebinding protection for the MCP server (dns-check)

  • Environment variables can now be passed to third-party package managers invoked as part of --allow-local-builds dependency resolution via the environment variable SEMGREP_LOCAL_BUILD_ENV, which accepts a JSON object with string keys and string values. (SC-3163)

  • Memory management policies

    A memory policy defines how OCaml's garbage collector should be configured for a scan. There are two initial policies: "aggressive", the current behaviour, which trades longer scan times for lower memory use, and "balanced", which finds a middle ground between reclaiming heap memory in short order while limiting how often the garbage collector runs. The policy can be configured via the --x-mem-policy CLI flag for the pro engine; this flag is unused in the OSS engine. (engine-2055)

  • Added experimental support for the OpenFGA authorization language. Thanks to Alex Useche (@hex0punk) for the contribution! (gh-11347)

  • Allows case insensitive string comparisons using lower() and upper() like this:

    - metavariable-comparison:
        metavariable: $VALUE
        comparison: upper(str($VALUE)) == "SEMGREP"

    (gh-11502)

  • Blocking findings that are outputted in the CI output are now labelled as such. (#4394)

### Changed

  • pro: There should be fewer FNs when the max number of fields to track per object is reached. (code-9224)
  • Remove legacy combined symbol analysis computation and upload in favor of per-subproject symbol analysis (sc-3153)

### Fixed

  • pro: Improved accuracy of taint tracking through assignments, this will help reduce FPs in some cases. (code-9220)
  • When receiving a 429 or 5xx from the Semgrep app, the CLI will wait for a longer period of time before retrying the request, to spread out requests during periods of app instability. (engine-2550)
Feb 4, 2026
Release v1.151.0

1.151.0 - 2026-02-04

Added

  • Added progress indicators for symbol analysis calculation and upload during CI scans (sc-3103)

Fixed

  • bumped glom to at least version 23.3, which includes a fix to a SyntaxWarning warning log. (gh-11460)
  • Semgrep no longer prints info log lines from semgrep-core RPC calls when --trace is passed and --debug isn't (loglines)
  • Fixed the README not appearing in built wheels. (wheelreadme)

Release notes include changes, fixes, and additions for specific Semgrep versions.

Jan 29, 2026
Release v1.150.0

1.150.0 - 2026-01-29

Added

  • Connecting to the Semgrep MCP server via streamableHttp now requires OAuth. (saf-2453)

Changed

  • Migrated from pipenv to uv for ./cli package management (uv)

Fixed

  • pro: Improved virtual method resolution in Scala (code-9213)
  • Improved performance for supply chain scans by reducing pre-computation when printing the scan status. This results in slightly less information being displayed in the case that there are no rules to run. (gh-5436)
  • Supply Chain Analysis: fixed version range matching for NPM packages with versions containing a prerelease identifier such as -alpha in 1.2.3-alpha. (sc-3001)
Jan 21, 2026
Release v1.149.0

1.149.0 - 2026-01-21

Added

  • Added a warning in --debug mode when a user runs a parallel scan with a larger value for -j/--jobs than the number of CPUs we detect the host has made available to Semgrep. Additionally, a suggested starting value for -j/--jobs is reported to give the user a place to start tuning their scan. (saf-2474)
  • Upload symbol analysis on a per-subproject basis during supply chain scans. (sc-3038)

Changed

  • The MCP server no longer supports SSE transport. (saf-2462)

Fixed

  • pro: Improved virtual method resolution in Java (code-9210)
  • pro: Improved virtual method resolution in Scala (code-9212)
  • Improve performance of scan planning, a part of the Python CLI, by reducing the cost of re-hashing Target objects. Performance should improve on large repo scans proportionally to the number of files in the repo. (gh-5407)
  • semgrep ci no longer applies autofixes to disk, even when the "Suggest autofixes" toggle in the app is enabled. (saf-2446)
Jan 15, 2026
Release v1.148.0

1.148.0 - 2026-01-14

Added

  • Performance: subproject discovery in Supply Chain scans is no longer significantly slowed down by the presence of Git-untracked files resulting in faster diff scans in such cases. (sc-subproject-speedup)

Fixed

  • pro: Improved virtual method resolution in Java (code-9174)
  • pro: Improved handling of parse errors during inter-file analysis. Now, these errors should be adequately reported back to users and in the JSON output. (code-9216)
  • Dataflow now accounts for Python for/else and while/else loops. (gh-8405)
  • Fix rare "bad file descriptor" when performing Git operations on Windows (saf-2358)
Jan 13, 2026

Release notes include the changes, fixes, and additions in specific versions of Semgrep.

Jan 7, 2026
Release v1.147.0

1.147.0 - 2026-01-07

Added

  • Gradle lockfiles of the form gradle*.lockfile are now supported. Previously, only lockfiles named exactly gradle.lockfile were supported. (SC-2999)
  • semgrep login now supports a --force flag, which ignores existing tokens and starts a new login session. The MCP setup workflow has been updated to use --force too. (saf-2392)

Fixed

  • Deduplication should now pick the exact same findings across scans. Previously, findings were always equivalent, but not guaranteed to be exactly the same (e.g. metavariable bindings could differ). Depending on the rule and target code, this could cause findings' fingerprints to change from one scan to another, thus leading to finding flakiness and "cycling" in Semgrep App. Note that when upgrading to this Semgrep version, you may see different (but equivalent) findings wrt your current Semgrep version in the first scan, one more time. However, in subsequent scans/upgrades, this problem should go away or at least be greatly reduced. (saf-2304)
Last Checked
17m ago
Domain
semgrep.dev
Accounts
semgrep
Tracking since Feb 9, 2024