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.
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.
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.
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:
| Preset | Paths | Code | Docs | Use case |
|---|---|---|---|---|
none | — | — | — | Local tools (Claude Code, local Codex) |
minimal | redacted | kept | kept | Cloud LLMs that need code context |
standard | redacted | redacted | kept | Cloud LLMs, code is confidential |
strict | redacted | redacted | redacted | Untrusted 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.
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.
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.
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.
New commands for debugging and maintaining sqry installations:
sqry troubleshoot — generates a sanitized diagnostic bundle (system info, config, recent errors, usage events)sqry insights — local-only usage analytics: query frequency, latency, cache hit rates, predicate usagesqry history — query history with search, stats, and time-based pruningsqry repair — fixes corrupted indexes without a full rebuild (orphan removal, dangling edge cleanup, checksum recomputation)sqry analyze — precomputes CSR adjacency matrices, strongly connected components, condensation DAGs, and 2-hop interval labels for faster graph queriesPass 5 cross-language detection now covers additional edge types beyond the initial FFI and HTTP support:
| Edge type | Description |
|---|---|
grpc_call | gRPC stub to service method |
web_socket | WebSocket emit/on across client and server |
graphql_operation | GraphQL query/mutation to resolver |
message_queue | Message producer to consumer by topic |
process_exec | Shell exec/spawn to external binary |
file_ipc | File-based inter-process communication |
web_assembly_call | WebAssembly module imports and exports |
FFI detection now covers 11 languages (Rust extern, Go CGo, Java JNI/JNA, Python ctypes/cffi, and more).
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.
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
cargo install sqry-cli
sqry --version
# sqry 4.8.16
Existing indexes are forward-compatible. No rebuild required.