CodeQL 2.27.3 (2026-10-20)¶
This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the code scanning section on the GitHub blog, relevant GitHub Changelog updates, changes in the CodeQL extension for Visual Studio Code, and the CodeQL Action changelog.
Security Coverage¶
CodeQL 2.27.3 runs a total of 498 security queries when configured with the Default suite (covering 170 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE).
CodeQL CLI¶
Breaking Changes¶
With the release of macOS 27 and Xcode 27, Apple stopped shipping multi-architecture x86-64/arm64 binaries. These binaries are required by CodeQL to perform traced analysis. For this reason, CodeQL’s
autobuildandmanualbuild modes will not be supported for compiled languages on macOS 27 with any Xcode version, and on macOS 26 when Xcode 27 is selected.
Bug Fixes¶
Fixed a bug that caused database downgrades to fail for GitHub Actions databases.
Improvements¶
Data extension files now support JSON syntax, with the same structure as existing YAML data extensions. Java-style comments (
// ...and/* ... */) are also supported. Files using the.jsonextension will be parsed as JSON, while all other files will continue to be parsed as YAML.The
codeql test runfeature to load a data extension named<test>.ext.ymlwhen running<test>.qlor<test>.qlrefhas been updated to support JSON data extensions, and files named<test>.ext.jsonwill now also be loaded automatically.
Query Packs¶
Minor Analysis Improvements¶
C/C++¶
The
cpp/resource-not-released-in-destructorquery now recognizes resources released through local aliases, reducing false-positive results.
C#¶
The
cs/simplifiable-boolean-expressionquery now produces fewer false-positive results when type information is incomplete.
Language Libraries¶
Breaking Changes¶
GitHub Actions¶
The GitHub Actions control flow graph (CFG) now uses the shared CFG library. The CFG includes explicit before and after nodes and uses the shared entry and exit node representations. Existing code that relies on specific CFG nodes, edges, textual representations, or basic block boundaries may need to be updated. The legacy
Completion,NormalCompletion,SimpleCompletion,BooleanCompletion, andReturnCompletionclasses have been removed because completions are no longer part of the Actions CFG API. Code that inspected completions should inspect CFG edge labels such asDirectSuccessor,BooleanSuccessor, andReturnSuccessorinstead.
Minor Analysis Improvements¶
C/C++¶
Added flow summaries for the BlazingMQ
BloombergLP::bmqa::MessageandMessagePropertiesclasses and their iterators.
C#¶
Avoid logging warnings when there are no explicit or inherited feeds to check for reachability.
The subprocess for the NuGet CLI is now provided with the proxy and certificate environment variables needed to access private registries if any are configured.
Added support for data flow through positional patterns in
isexpressions andswitchcases.
Java/Kotlin¶
The queries
java/ssrfandjava/unvalidated-url-redirectionrecognize case-insensitive comparisons ofURI.getHost()with fixed string allowlist entries, as well as equality and case-insensitive comparisons when the host is stored in a local variable.
Python¶
Updated the
py/xxe,py/xml-bomb, andpy/nosql-injectionqueries to respect the configured threat model when selecting untrusted data sources. The default behavior remains unchanged and uses remote flow sources. As a side effect, these queries now correctly include sources modeled using data extensions.Added taint-flow modeling for
unicodedata.iter_graphemes, introduced in Python 3.15.Added data-flow modeling for
threading.serialize_iteratorandthreading.concurrent_tee, introduced in Python 3.15.Added modeling for the Base32, Base85, and Ascii85 encoding and decoding functions introduced in Python 3.15’s
binasciimodule, including taint flow through custom alphabets.Added support for the
frozendictandsentinelbuiltins introduced in Python 3.15, and data-flow modeling forfrozendictconstruction.The Python extractor now supports unary plus in
matchliteral patterns, introduced in Python 3.15.The Python extractor now supports Unicode 17 identifiers, introduced in Python 3.15.
Added modeling for the
extra_response_headersconstructor argument and instance attribute ofhttp.server.SimpleHTTPRequestHandler, introduced in Python 3.15.Added modeling for Python 3.15’s
re.prefixmatchandre.Pattern.prefixmatch, matching the existing support for theirmatchcounterparts.Added taint-flow modeling for
bytearrayconstruction and Python 3.15’sbytearray.take_bytesmethod.
Rust¶
The Rust extractor has been upgraded to use
rust-analyzerversion 0.0.357. As a result, the AST exposed by the Rust libraries now includes theCfgPredExprandCfgPredPatclasses.
New Features¶
C/C++¶
Added support for C23 bit-precise integers (
_BitInt(N)).
Ruby¶
Added modeling for
Grape::API‘srequestsub-accessors (body.read,body.string,params,GET,POST,cookies,env,query_string, andpath_info) as remote flow sources.