This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+5 more
Affected surfaces
ReleasePort's take
Moderate signalThe `graphify update` command on Windows now cleans up stale nodes after file moves or deletions. XML project files are pre‑screened for `<!DOCTYPE`/`<!ENTITY` to stop billion‑laughs DoS attacks.
Why it matters: Prevents resource exhaustion from malicious XML (severity 90) and eliminates leftover graph nodes on Windows updates, improving reliability.
Summary
AI summaryFixed stale nodes after file deletion on Windows and hardened against XML DoS attacks.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
Pre-screen XML project files for `<!DOCTYPE`/`<!ENTITY` to prevent billion-laughs DoS. Pre-screen XML project files for `<!DOCTYPE`/`<!ENTITY` to prevent billion-laughs DoS. Source: llm_adapter@2026-05-26 Confidence: high |
— |
| Feature | Low |
Extract MCP configuration files (`.mcp.json`, `mcp.json`, etc.) into the knowledge graph. Extract MCP configuration files (`.mcp.json`, `mcp.json`, etc.) into the knowledge graph. Source: llm_adapter@2026-05-26 Confidence: high |
— |
| Bugfix | Medium |
`graphify update` on Windows no longer leaves stale nodes after moving/deleting files. `graphify update` on Windows no longer leaves stale nodes after moving/deleting files. Source: llm_adapter@2026-05-26 Confidence: high |
— |
| Bugfix | Medium |
Dart child node IDs no longer embed absolute paths; use `_file_stem` instead. Dart child node IDs no longer embed absolute paths; use `_file_stem` instead. Source: llm_adapter@2026-05-26 Confidence: high |
— |
| Bugfix | Low |
`cluster-only` label alignment now matches `graphify update` behavior for stable community labels. `cluster-only` label alignment now matches `graphify update` behavior for stable community labels. Source: llm_adapter@2026-05-26 Confidence: high |
— |
Full changelog
Bug fixes & security
Ghost nodes after file deletion fully fixed
graphify update on Windows no longer leaves stale nodes after moving/deleting files. Two root causes resolved:
_relativize_source_filesnow runs on the existing graph before eviction, not afterdeleted_paths/evict_sourcesnow use.as_posix()for consistent forward-slash paths on all platforms- Symlinked scan roots now handled correctly via
.resolve()inbuild_merge(#1007)
Security: XML DoS hardening
extract_csproj and extract_lazarus_package now pre-screen for <!DOCTYPE / <!ENTITY before parsing — blocks billion-laughs memory exhaustion on malicious project files. Zero false positives on real MSBuild/Lazarus files. extract_lpk also gains the previously missing 2 MiB size cap.
Dart node ID fix
Dart child node IDs no longer embed absolute paths — now uses _file_stem consistent with all other extractors. Existing Dart graphs should be rebuilt with graphify extract --force. (#999)
cluster-only label alignment
cluster-only now applies remap_communities_to_previous matching the behaviour of graphify update, so community labels stay stable across re-clusterings (#1028)
New features
MCP config extractor
.mcp.json, mcp.json, mcp_servers.json, claude_desktop_config.json are now extracted into the knowledge graph — captures server nodes, npm/pip package references, and env var requirements. Env values are discarded to prevent secret leakage.
Install / upgrade
pip install --upgrade graphifyy
Security Fixes
- XML DoS hardening added to extract_csproj and extract_lazarus_package
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About graphify
AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, OpenClaw, Factory Droid, Trae). Turn any folder of code, docs, papers, images, videos, or YouTube links into a queryable knowledge graph
Beta — feedback welcome: [email protected]