2026-03-06

sqry v4.6.3 → v4.8.16

sqry v4.8.16 covers three months of releases since v4.6.3. This post summarizes everything new across the v4.7.x and v4.8.x cycles.

GitHub Action

sqry now ships a GitHub Action (verivus-oss/sqry@v1) that runs analysis in CI. It indexes your codebase, runs a chosen analysis command, and posts results as file-level annotations and PR comments — with an optional gate that fails the build when issues are found.

Supported commands: unused, cycles, duplicates, diff, stats, and index.

name: sqry analysis
on: [pull_request]

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Dead code detection
        uses: verivus-oss/sqry@v1
        with:
          command: unused
          args: "--scope public --limit 100"
          fail-on-findings: true

      - name: Semantic diff
        uses: verivus-oss/sqry@v1
        with:
          command: diff
          args: "${{ github.event.pull_request.base.sha }} ${{ github.sha }}"
          comment: true

The action auto-detects the runner platform (Linux x86_64, Linux ARM64, macOS ARM64, Windows x86_64), caches the binary across runs, and outputs structured JSON for downstream steps.

See the GitHub Action docs for the full input/output reference.

VSCode Extension

The new VSCode extension (verivus.sqry) connects to the sqry LSP server and brings the full code graph into your editor:

code --install-extension verivus.sqry

See the VSCode docs for settings and commands.

MCP Response Redaction

When connecting sqry to cloud-hosted AI assistants, MCP tool responses can contain absolute file paths, source code, and workspace layout details. The new sqry-mcp-redaction library filters these before they reach the model.

It uses a whitelist-first security model — every JSON field is redacted unless explicitly allowed. Four presets cover common scenarios:

PresetPathsCodeDocsUse case
noneLocal tools (Claude Code, local Codex)
minimalredactedkeptkeptCloud LLMs that need code context
standardredactedredactedkeptCloud LLMs, code is confidential
strictredactedredactedredactedUntrusted external services

Configure via environment variables when launching sqry-mcp:

SQRY_REDACTION_PRESET=standard SQRY_REDACT_WORKSPACE=1 sqry-mcp

See the MCP Redaction docs for the full variable reference, whitelist customization, and JSONPath-based field exemptions.

Interactive Shell

sqry shell starts a REPL that keeps the index loaded in memory. Every query after startup runs at warm-cache latency (~4ms) with no per-query startup cost.

$ sqry shell
sqry v4.8.16 — 42,318 nodes, 67,204 edges
sqry> kind:function AND async:true
  src/api/routes.rs:42     handle_request
  src/auth/middleware.rs:18 validate_token
  ... (38 more results)

sqry> direct-callers validate_token
  src/api/routes.rs:45     handle_request
  src/tests/auth_test.rs:12 test_auth_flow

Graph commands work without the sqry graph prefix. History persists across sessions with Ctrl+R search.

Batch Processing

sqry batch executes a file of queries in a single invocation, sharing the loaded index. Queries run in parallel by default.

# queries.txt
kind:function AND async:true
callers:authenticate
unused:true AND kind:function AND lang:rust
sqry batch queries.txt . --output json --stats --continue-on-error

Output wraps each query’s results in a structured array with execution timings. Useful for CI pipelines and automated reports.

Workspace Management

Workspaces group multiple repositories under one root for cross-repo queries:

sqry workspace init /srv/repos/myteam --name "backend-services"
sqry workspace scan /srv/repos/myteam --mode git-roots
sqry workspace add /srv/repos/myteam /srv/repos/myteam/auth-service --name auth

# Query across all repos
sqry workspace query /srv/repos/myteam "callers:authenticate" --repo auth

# Dead code across the entire workspace
sqry workspace query /srv/repos/myteam "unused:true AND kind:function"

Results include the repository name alongside file paths. Aggregate stats are available via sqry workspace stats.

Diagnostics & Troubleshooting

New commands for debugging and maintaining sqry installations:

Cross-Language Edge Expansion

Pass 5 cross-language detection now covers additional edge types beyond the initial FFI and HTTP support:

Edge typeDescription
grpc_callgRPC stub to service method
web_socketWebSocket emit/on across client and server
graphql_operationGraphQL query/mutation to resolver
message_queueMessage producer to consumer by topic
process_execShell exec/spawn to external binary
file_ipcFile-based inter-process communication
web_assembly_callWebAssembly module imports and exports

FFI detection now covers 11 languages (Rust extern, Go CGo, Java JNI/JNA, Python ctypes/cffi, and more).

Configuration & Aliases

New config commands avoid manual JSON editing:

sqry config init           # Initialize with defaults
sqry config get indexing.max_file_size
sqry config set indexing.max_file_size 20971520
sqry config validate       # Check file integrity

Query aliases save frequently-used queries:

sqry config alias set dead-code "unused:true AND kind:function AND visibility:public"
sqry query @dead-code

Aliases support local (per-project) and global (--global) scopes, with export/import for sharing across teams.

Shell Completions

sqry completions generates scripts for Bash, Zsh, Fish, and PowerShell. Completions cover all subcommands, flags, and valid enum values (--kind, --lang, --format, --scope). Zsh and Fish show descriptions alongside candidates.

sqry completions bash >> ~/.bashrc
sqry completions zsh > ~/.zfunc/_sqry
sqry completions fish > ~/.config/fish/completions/sqry.fish

Upgrading

cargo install sqry-cli
sqry --version
# sqry 4.8.16

Existing indexes are forward-compatible. No rebuild required.

← All releases