StackQL v0.12.824: signed MCP approvals and a native Windows ARM64 install

56 minutes ago

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.

Ask about this presentation

Chapters

  1. 0:00Signed approvals, native Windows ARM64
  2. 0:17The signed request state
  3. 0:38What gets refused
  4. 0:58Native Windows ARM64
  5. 1:24Joins skip filtered rows
  6. 1:45Partial results and cleaner values
  7. 2:06OmniSDK preview
  8. 2:28Go, Node.js and checksums
  9. 2:52Upgrade, and what to check
Show transcript
  1. 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

    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
  2. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    Every MCP approval prompt now carries a signed request state

    Tool the tool that asked
    Digest SHA-256 of the arguments and SQL
    Session when the transport has one
    Nonce accepted once
    Expiry 10 minutes
    signed with HMAC-SHA256 under a server key
    v0.12.824
    Contributed by @aeoess · #848
  3. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    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
  4. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    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.mcpb npm PyPI Rust Go .NET
    v0.12.824
    #842 · #844
  5. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    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'
      and r.id <> 2
    order 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
  6. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    Table output keeps the rows that arrived before a failed page

    Objects
    map[k:v] → JSON text
    in streamed responses
    Large numbers
    1e+07 → 10000000
    10 million and up, no exponent form
    New flag: reads can ignore chosen upstream errors
    --upstream.errors='{"http": {"ignoreStatusCodes": ["5xx"]}}'
    v0.12.824 · #851 · #865
  7. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    The OmniSDK preview can now destroy what it converged

    behind --preview
    --preview '{"unstable":true,"staging":true,"omni":"all"}'
    stackql_preview.iac.run
    stackql_preview.iac.destroyNEW
    Also improved in the preview
    streaming metadata discovery views query planning CI readiness report
    v0.12.824 · #850 · #852 · #865
  8. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    The build moved to Go 1.27.3, and every release file has a checksum

    Go 1.27.3 up from 1.25.3, across StackQL and its components
    Node.js npm MCP launcher wants ^22.23.4 || ^24.22.1 || >=26.12.1 and warns on older builds
    .sha256 beside 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
  9. 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
    StackQL Approvals ARM64 Queries Preview Supply chain Upgrade

    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

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️