What's New in v0.5.6
search_code v2 — Graph-Augmented Code Search
The search_code tool has been completely rewritten with a 4-phase pipeline that combines grep speed with knowledge graph intelligence:
- 3 output modes:
compact(default — function names + match lines),full(complete function bodies with highlighted matches),files(file list with match counts) - Graph ranking: results ranked by structural importance (definitions first, popular functions next, tests last)
- Block expansion: grep matches automatically expanded to containing function boundaries — no more fragmented line snippets
path_filter: scope searches to specific directories (e.g.,src/only)contextlines: configurable context around matches in full mode- Directory distribution summary: shows which directories contain matches
Falls back gracefully to raw grep when the project isn't indexed.
Kubernetes & Kustomize Indexing
Full infrastructure-as-code support for Kubernetes manifests:
- Parses Deployments, Services, ConfigMaps, Secrets, Ingress, CronJobs, and 20+ resource types
- Kustomize overlay resolution (base → overlay relationships)
- Resource nodes appear in the knowledge graph with labels, namespaces, and container specs
- New
Resourcenode label in graph schema
User-Defined Extension Mappings
Custom file extension → language mappings via .codebase-memory.json (project-level) or $XDG_CONFIG_HOME/codebase-memory-mcp/config.json (global):
{"extra_extensions": {".blade.php": "php", ".mjs": "javascript"}}Project config takes priority over global config.
Security Fixes
- SQL injection in store search/BFS and argument injection in HTTP server (#124 — @map588)
- Use-after-free in
handle_manage_adrget path (#126 — @halindrome) - Ghost .db file prevention: query handlers now verify project exists before opening SQLite — prevents empty database files from accumulating (#120)
- Binary replacement: new
cbm_replace_binarywith unlink-before-write pattern, handles read-only targets and Windows rename-aside fallback (#114)
Stability & Compatibility Fixes
- MCP stdio buffering: fixed
poll()/getline()FILE* mismatch that causedtools/listto hang on some clients (#99 — @halindrome) - SQLite WAL busy_timeout: set before
journal_mode=WALto preventSQLITE_BUSYon lock contention (#117 — @halindrome) - Import parser O(N²) → O(N): replaced indexed
ts_node_child()loop withTSTreeCursorwalk — fixes quadratic slowdown on files with many imports (#107 — @halindrome) - Session project name mismatch:
detect_sessionnow uses samecbm_project_name_from_path()as pipeline - Windows: UI zip filename fix,
setenv/unsetenvcompat wrappers,USERPROFILEfallback whenHOMEunset - Linux: add
-D_GNU_SOURCEforstrcasestrvisibility (#111 — @trollkotze) - libgit2: fix
-Wmissing-field-initializersbuild error (#91 — @jsyrjala) - Memory leak:
resolve_storeleaked SQLite connection when querying unlinked.dbafterdelete_project
Comprehensive Smoke Tests
Expanded from 4 phases to 7, covering the full binary lifecycle:
- Phase 5: MCP stdio transport — initialize handshake, tools/list, tool call round-trip, Content-Length framing (OpenCode compatibility)
- Phase 6: CLI subcommands — install/uninstall/update
--dry-run, config set/get/reset, simulated binary replacement with read-only edge case - Phase 7: MCP advanced tool calls — search_code v2, get_code_snippet via JSON-RPC
Smoke tests now run in Docker test infrastructure (test-infrastructure/run.sh smoke) and in CI on all 10 platform×variant combinations.
Update Command Improvements
--dry-runflag: shows what would happen without downloading or modifying files--standard/--uiflags: skip interactive variant prompt (CI-friendly)- Restart reminder after successful update
CI & Infrastructure
- Pinned GitHub Actions to commit SHAs (dependabot: VirusTotal 5.0.0, setup-node 6.3.0, cosign-installer, attest-build-provenance)
- Docker test infra:
smokeandsmoke-amd64services for local cross-platform smoke testing - Cleaned up Go-era artifacts, updated THIRD_PARTY.md for pure C project
Contributors
A huge thank you to everyone who contributed to this release:
- @halindrome — Outstanding contributions across the board: K8s/Kustomize indexing, user-defined extension mappings, MCP stdio fix, WAL ordering fix, ghost .db prevention, use-after-free fix, O(N²) import parser fix, and WAL journal mode fix. The backbone of this release.
- @map588 — Critical SQL injection and argument injection security fix
- @trollkotze — Linux build fix for
strcasestrvisibility - @jsyrjala — Build fix for libgit2 field initializers
- @bingh0 — VS Code compatibility fixes (schema validation, install registration, protocol negotiation)
Thank you all for making codebase-memory-mcp better!
Security Verification
All release binaries have been independently verified:
VirusTotal — scanned by 70+ antivirus engines:
| Binary | Scan |
|---|---|
| codebase-memory-mcp-windows-amd64.exe | View Report |
| codebase-memory-mcp-ui-windows-amd64.exe | View Report |
| codebase-memory-mcp-ui-linux-arm64 | View Report |
| codebase-memory-mcp-ui-linux-amd64 | View Report |
| codebase-memory-mcp-ui-darwin-arm64 | View Report |
| codebase-memory-mcp-ui-darwin-amd64 | View Report |
| codebase-memory-mcp-linux-arm64 | View Report |
| codebase-memory-mcp-linux-amd64 | View Report |
| codebase-memory-mcp-darwin-arm64 | View Report |
| codebase-memory-mcp-darwin-amd64 | View Report |
| LICENSE | View Report |
| Build Provenance (SLSA) — cryptographic proof each binary was built by GitHub Actions from this repo: |
gh attestation verify <downloaded-file> --repo DeusData/codebase-memory-mcp
Sigstore cosign — keyless signature verification:
cosign verify-blob --bundle <file>.bundle <file>
Native antivirus scans — all binaries passed these scans before this release was created (any detection would have blocked the release):
- Windows: Windows Defender with ML heuristics (the same engine end users run)
- Linux: ClamAV with daily signature updates
- macOS: ClamAV with daily signature updates
SBOM — Software Bill of Materials (sbom.json) lists all vendored dependencies.
See SECURITY.md for full details.