v1.0.1
[1.0.1] - 2026-06-13
New Features
- New
codegraph daemoncommand (aliasdaemons) — an interactive manager for the background daemons. It shows what's running (your current project's daemon first, pre-selected), and you arrow-key to one and press enter to stop it, or pick "Stop all". Previously the only way to shut a daemon down was to hunt for its pid andkillit by hand. (colbymchenry#845) - Checking your installed version is now easy to reach however you guess at it:
codegraph version,codegraph -v, andcodegraph -versionall print it, alongside the existingcodegraph --version. (colbymchenry#864) - The CodeGraph MCP server now self-heals if its main thread ever locks up. A lightweight watchdog notices when the process has stopped responding and stops it so a fresh one starts on your next request — it can no longer sit pinned at 100% CPU with no way to recover. Tune the detection window with
CODEGRAPH_WATCHDOG_TIMEOUT_MS, or turn it off entirely withCODEGRAPH_NO_WATCHDOG=1. (colbymchenry#850)
Fixes
-
Git worktrees nested inside your project — like the
.claude/worktrees/that Claude Code creates — are no longer indexed as duplicate copies of your whole codebase. CodeGraph deliberately indexes genuine embedded repos (a real second project checked out inside yours), but a worktree is just another working view of a repo it already indexed, so each one was multiplying every symbol — one report went from ~1,850 files to over 24,000, with search andexploreflooded by stale duplicates. CodeGraph now recognizes worktrees and skips them, while still indexing real embedded repos and submodules. Thanks @tphakala. (colbymchenry#848) -
Running
codegraph serve --mcpby hand no longer just hangs in silence. That command is the MCP server your AI agent starts for itself — not a step you run directly — and in a terminal it used to sit there waiting for input that never comes, looking broken. It now recognizes when a person runs it and explains what to do instead (codegraph status,codegraph daemon), and it's been dropped from the command listing so it stops looking like something you need to launch. -
Cross-file static method calls like
ClassName.staticMethod()now resolve correctly. CodeGraph was linking the call to the class instead of the method (and recording it as a construction), socallersandimpactfor a static method came back empty — a real blind spot in TypeScript and JavaScript codebases that lean on static utility classes (Python and other languages with the same call shape benefit too). The call now links to the method itself. Thanks @contextFlow-lab. (colbymchenry#825) -
codegraph affectednow accepts./-prefixed and absolute file paths, not just bare project-relative ones. Passing./src/x.tsor an absolute path — common when the file list comes from another tool — used to silently match nothing and report no affected tests. Thanks @contextFlow-lab. (colbymchenry#825) -
The CodeGraph MCP server no longer risks getting stuck at 100% CPU after an unexpected internal error. Previously such an error was logged but the process was left running in a broken state, where it could spin a CPU core indefinitely and had to be killed by hand. The server now logs the error and exits cleanly, so a fresh one starts on the next request. Thanks @songhlc. (colbymchenry#850)
-
CodeGraph no longer indexes your entire home directory by accident. Running the installer — or
codegraph init/codegraph index— from your home folder or a filesystem root would index everything underneath it (caches,Library, every other project), producing a multi-gigabyte index and constant file-watching churn. CodeGraph now refuses these roots and points you at a specific project instead; pass--forceif you genuinely mean to. (Combined with the macOS file-descriptor fix already in 1.0.0, this closes the report of a runaway watcher exhausting the system file limit.) Thanks @ligson. (colbymchenry#845) -
The Rust installer instructions now show the
codegraphshell command users install, so copied examples work as written. -
The Rust MCP
codegraph_callersandcodegraph_calleestools now honor theirlimitargument, andcodegraph_impactnow reports symbols that depend on the target instead of downstream calls, so edit-planning output matches the established TypeScript-era behavior. -
npm package removal no longer runs a lifecycle cleanup hook, so
npm uninstallcannot be held up by missing platform binaries; runcodegraph uninstallexplicitly when you want CodeGraph removed from agent configs. -
codegraph indexnow rebuilds the full graph from scratch, so it produces the same result as a freshcodegraph initinstead of reporting "0 nodes, 0 edges" and looking like it wiped your index. Previously, re-runningindexon an unchanged project skipped every file (their contents hadn't changed) and showed an empty-looking summary; it now clears and re-indexes for an honest, complete rebuild every time. Usecodegraph syncfor fast incremental updates between full rebuilds. Thanks @Arc-univer. (colbymchenry#874) -
The file watcher that auto-syncs the graph now fails cleanly when live watching can no longer be trusted, instead of looking healthy while the index quietly goes stale. If the operating system runs out of file-watch resources, or another process holds the write lock far longer than a normal save, CodeGraph now disables auto-sync once — with a single clear message telling you to run
codegraph sync(or rely on the git sync hooks) to refresh — rather than retrying forever or repeating the same error on a loop. And while auto-sync is disabled, CodeGraph's tool responses (andcodegraph status) now say so plainly, so your AI agent knows to read files directly instead of trusting a frozen index. This mostly matters for long-running MCP/daemon sessions, which could otherwise keep serving stale results while appearing to work. Thanks @thismilktea. (colbymchenry#876) -
On Linux, hitting the kernel's inotify watch limit on a large project no longer silently leaves half the tree unwatched. CodeGraph now tells you once — naming the exact setting to raise (
fs.inotify.max_user_watches, e.g.sudo sysctl fs.inotify.max_user_watches=1048576) — and keeps live-watching the directories it could register whilecodegraph sync(or the git sync hooks) covers the rest. (colbymchenry#876)