StackQL's MCP server now signs every approval it asks for, so a yes counts only for the exact call it was given for. This release also installs natively on Windows ARM64, and lets joins skip the API calls your WHERE clause would discard.
StackQL's MCP server now signs every approval it asks for, so a yes counts only for the exact call it was given for. This release also installs natively on Windows ARM64, and lets joins skip the API calls your WHERE clause would discard.
Slide text
StackQL v0.12.824: signed MCP approvals
and a native Windows ARM64 install
Plus joins that skip the API calls your WHERE clause would
discard.
github.com/stackql/stackql
In safe and delete_safe modes, gated calls wait for your approval. That prompt now carries a request state the client must send back with its answer. It holds the tool, a SHA-256 digest of the arguments and SQL, the session, a one-time nonce, and a ten-minute expiry, all signed with HMAC under a server key.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
Every MCP approval prompt now carries a signed request state
Toolthe tool that asked
DigestSHA-256 of the arguments and SQL
Sessionwhen the transport has one
Nonceaccepted once
Expiry10 minutes
signed with HMAC-SHA256 under a server key
v0.12.824
Contributed by @aeoess · #848
If any part of it doesn't match, the answer is refused before the backend runs. That covers a state that is missing, altered, expired, already used, or issued for a different call. A dishonest client can still approve its own prompt, though. For clients you don't trust, use read-only mode, or narrow the enabled tools.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
A mismatched answer is refused before the backend runs
refusedState missing
refusedState altered
refusedOlder than 10 minutes
refusedAlready used
refusedIssued for a different call
Limit: a dishonest client can still accept its own prompt.
For untrusted clients, use read_only
mode or narrow the enabled tools.
v0.12.824
On Windows ARM64, the PowerShell installer used to fetch the x64 build and run it under emulation. Now it reads the real architecture from the registry, even from emulated x64 PowerShell, and installs the ARM64 zip. The MCP server has a Windows ARM64 bundle too, and the npm, PyPI, Rust, Go and .NET launchers pick it automatically.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
The Windows installer now picks ARM64 natively
WindowsARM64
PS> irm https://get-stackql.io/install.ps1 | iex
Downloading stackql_windows_arm64.zip ...
Installed .\stackql.exe (Windows/ARM64).
MCP server bundle and launchers
stackql-mcp-windows-arm64.mcpbnpmPyPIRustGo.NET
v0.12.824
#842 · #844
When one table feeds another in a join, StackQL calls the dependent API once per source row. Now, WHERE conditions on the source table's own columns run first. Repo 2 is filtered out here, so StackQL skips its collaborators request. Snake-case column aliases in joins also map to the right API field now.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
Join filters now run before the per-row API calls
select r.name, col.login
from github.repos.collaborators col
inner join github.repos.repos r
on col.repo = r.name
where col.owner = 'joinfaultorg'and r.org = 'joinfaultorg'andr.id <> 2order by r.name;
r.id <> 2 drops repo 2 before StackQL asks
for its collaborators.
Also fixed: snake_case aliases in joins, like
target.vpc_id, map to the API field
VpcId.
v0.12.824 · #845 · #846
When a paged API fails partway, table output now keeps the rows that already arrived, then prints the error. Streamed objects come out as JSON text instead of Go map syntax, and big numbers stop switching to exponent form. A new upstream errors flag also lets reads ignore chosen status codes, like 5xx.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
Table output keeps the rows that arrived before a failed page
OmniSDK, the next-generation query engine, is still behind the preview flag. Its infrastructure-as-code relations gained destroy beside run, so a collection you converged can be torn down from SQL. Streaming, metadata discovery, views and query planning improved too, and a new CI report tracks how ready it is for adoption.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
The OmniSDK preview can now destroy what it converged
StackQL now builds on Go 1.27.3, up from 1.25.3. After the eMudhra certificate authority incident, affected dependencies and toolchains were updated, and the npm MCP launcher now warns when Node.js predates the October security releases. Every file on this release also has a SHA-256 checksum beside it.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
The build moved to Go 1.27.3, and every release file has a
checksum
Go 1.27.3up from 1.25.3, across StackQL and its components
Node.jsnpm MCP launcher wants
^22.23.4 || ^24.22.1 || >=26.12.1 and warns
on older builds
.sha256beside every asset on the v0.12.824 release
eMudhra CA incident: affected build dependencies and toolchains
updated · klauspost/compress 1.18.7 · certifi 2026.10.19
v0.12.824 · #855 · #862 · #863
Upgrading is the usual one-line install. Check three setups first. Several stateless HTTP instances need one shared approval key. The npm launcher wants a patched Node.js. And the bundled MCP client dropped its skip-verify and promote-leaf TLS options. That's StackQL 0.12.824: signed approvals, and a native install on Windows ARM64.
Slide text
ApprovalsARM64QueriesPreviewSupply chainUpgrade
Upgrade with the one‑line installer
macOS and Linux
$ curl -fsSL https://get-stackql.io/install.sh | sh
Windows
PS> irm https://get-stackql.io/install | iex
Several stateless HTTP MCP instances?Give them one shared key with
server.approval_key_env_var, 32 bytes or more.
Using the npm MCP launcher?Update to a patched Node.js release.
Scripting the bundled MCP client over TLS?It now reads only ca_file and
server_name.
github.com/stackql/stackql/releases/tag/v0.12.824
New contributors: @RyoKusnadi and @aeoess