mrkeyoor.com_
Fri 16 Oct 19:46 UTC
AI Toolsevaluationupdated 03 Oct 2026

Graft review

Graft builds a local map of a codebase so coding agents can find relevant systems, files, and call relationships without rediscovering the project on every task. The fast map uses source parsing, while an optional deeper pass uses your chosen language model to write summaries and group code into concepts.

+256stars / 7d
Verdict

Our Graft run installed 88 packages in 42 seconds and passed all 1,266 tests, but npm audit still found 1 high-severity vulnerability. Use it if repeated codebase exploration is wasting agent turns and you can review the configuration files it writes. Hold it back from worktree-based reviews and non-Latin deep graphs until the open context bugs are resolved.

We ran it

Lab card: what happened when we ran GraftScreenshot of Graft (trailhq.com/graft)
Install✓ · 42s88 packages · 443 MB
Build✓ · 8s
Tests✓ · 135s1266 passed · 0 failed of 1266 (node:test)
Known vulns10 critical · 1 high · 0 moderate · 0 low (npm audit)
Repo343 files~60,638 lines of source · 44.7 MB · 6 CI workflows · Dockerfile · tests dir

Answers from our run

Does Graft build from source?

Dependencies installed in 42 seconds (88 packages), and the build succeeded in 8 seconds. We cloned commit 80692e5 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Graft's tests pass?

Yes: 1266 of 1266 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Does Graft have known vulnerabilities in its dependencies?

npm audit flagged 1 known advisory in the dependency tree at the time of our run.

Who should not use Graft?

Security-sensitive teams that require a clean dependency audit: our sandbox found 1 high-severity npm vulnerability at commit 80692e5.

What are the alternatives to Graft?

Claude Context, CodeGraphContext, Continue. Our Graft run installed 88 packages in 42 seconds and passed all 1,266 tests, but npm audit still found 1 high-severity vulnerability.

Setup4/542-second install; init writes project and user agent config
Docs5/5Commands, write paths, providers, telemetry, and removal are documented
Community5/5Pushed October 3 with same-day issue and pull request activity
Maturity4/51,266 tests passed, though active context and uninstall bugs remain

Discussed on

  1. hnShow HN: Graft – Claude Code hooks that cut grep tokens by 42%39 points
  2. hnGraft6 points
  3. hnShow HN: Graft – Give coding agents a semantic map instead of grep3 points
  4. hnShow HN: Claude Code kept ignoring our MCP tools, so we used hooks instead3 points

Who it’s for

Developers who use Claude Code, Codex, Cursor, Gemini, or another supported coding agent across a large repository.
Teams willing to generate a local code map for each checkout and commit the small agent wiring files.
Engineers who want MCP tools for code search, callers, file APIs, and dependency impact.
Polyglot teams whose main languages appear in Graft's 23-language parser list.

Who it’s NOT for

Security-sensitive teams that require a clean dependency audit: our sandbox found 1 high-severity npm vulnerability at commit 80692e5.
Review workflows that run subagents in separate Git worktrees: open issue 515 says the MCP server stays fixed to the parent session's checkout and can return context from the wrong commit.
Repositories that depend on non-Latin concept names in the deep graph: open issue 543 shows different names collapsing into the same generated node.
Developers who do not want an initializer editing project files and user-level agent settings: the README lists writes to AGENTS.md, agent-specific files, Codex config, hooks, and MCP registration.
Organizations that prohibit anonymous product telemetry or local reading of agent transcript tails, even with the documented opt-out.

Setup reality

Our sandbox installed commit 80692e5 in 42 seconds, adding 88 packages and using 443 MB on disk. The build passed in 8 seconds. All 1,266 node:test cases passed in 135 seconds, while npm audit reported 1 high-severity vulnerability.

Node 20 or newer is required. The structural graph needs no model key, but the deep summaries require a provider, model, and API key or a compatible local endpoint. graft init asks which agents to wire and can register MCP, hooks, and a Claude Code status line.

The graph is a per-checkout cache under graft/, and Graft adds that path to .gitignore. Selecting Codex can also change files under ~/.codex; use the dry run and --no-global if those user-level edits are outside your setup policy.

Graft turns a codebase into files an agent can browse

Graft maps source files, symbols, imports, and calls into a local graft/ directory. Coding agents can query that map through six MCP tools or the CLI instead of opening files until they stumble onto the right subsystem. The generated material is ordinary files, so there is no search server to keep alive. Graft supports 23 languages across its full and broad parsing tiers, with optional language-server edges for Rust, C, C++, Go, Python, TypeScript, and JavaScript.

That design is most useful when the same repository appears in many agent sessions. A structural build records per-symbol relationships with tree-sitter. Commands such as ask, grep, callers, skeleton, and map refresh against the working tree before answering. The map includes uncommitted edits because freshness is based on file contents, not the current commit. Each teammate creates a separate cache rather than checking generated graph files into Git.

The fast graph is local, while deeper summaries need a model key

The basic graph and freshness check run without a key or network request. A deep build is different: it sends code through a model to summarize individual files, group them into concept nodes, and add per-symbol summaries. Graft accepts OpenAI-compatible services, Anthropic's API, LiteLLM, OrcaRouter, and local endpoints through provider, model, key, and base URL settings. That keeps vendor choice open, but the privacy boundary depends on the endpoint you select.

The README presents the concept layer as linked Markdown with summaries, source references, and typed relationships. Handwritten notes below the generated block survive regeneration. One detail deserves care: the README says the code crux currently ships in the per-symbol deep graph, while inserting it into the Markdown concept nodes is described as next. Buyers should treat the current output as the product and avoid budgeting around that aspiration.

What happened when we ran it

Our sandbox installed commit 80692e5 in 42 seconds. The checkout contained 343 files, roughly 60,638 lines of source, and occupied 44.7 MB before installation. npm added 88 packages and brought disk use to 443 MB. The TypeScript build then completed successfully in 8 seconds. We used 3 CPUs, 8 GB of RAM, Node 22, no secrets, and an unprivileged container.

The test suite passed all 1,266 node:test cases in 135 seconds with 0 failures. That is strong evidence for the repository mechanics we exercised. It does not measure whether Graft finds the right context in a customer's codebase, saves tokens, or improves patch quality. Those product claims require a representative repository and agent workload. npm audit also reported 1 known high-severity vulnerability, so the otherwise clean run does not clear a strict dependency gate.

graft init edits project files and user agent settings

The two-command quick start hides a meaningful permission decision. graft init can write agent instructions, an MCP file, Claude Code hooks, and a status line in the project. Selecting the generic agents host can also register an MCP server in ~/.codex/config.toml, place a hook shim under ~/.codex/hooks/, and update ~/.codex/hooks.json. The documented --dry-run, --no-global, --no-mcp, and --no-hooks switches let you narrow that scope before writing anything.

Removal also deserves a check. Open issue 546 reports that version 0.19.0 can leave an orphaned Codex MCP environment table after uninstall, causing Codex to reject its config until the file is edited by hand. The current package file says 0.21.1, but the issue remained open on October 3. Take a copy of shared agent settings, inspect the dry run, and verify both install and uninstall on one workstation before a team rollout.

Worktrees and non-Latin concepts expose context risks

Open issue 515 describes a serious review failure: an MCP server started in the main checkout cannot be pointed at a subagent's separate worktree. In the reported experiment, Graft returned code from the main checkout while reviewers were examining another commit. The CLI started inside the worktree was the stated workaround. A context tool that answers from the wrong tree can make a confident review less accurate, so worktree-heavy teams should test this exact path.

Language coverage also has a text boundary. Issue 543 reports that deep synthesis in version 0.21.1 strips non-Latin characters while making filenames, which can merge distinct concepts into one node. The report covers Cyrillic and says the same rule affects CJK, Arabic, and Greek names. This concerns generated concept labels, not whether the listed source languages parse. Repositories using non-English concept names should inspect the resulting node count and names after every deep build.

An October 3 push outweighs the missing release page

GitHub reported 9,539 stars and 209 open issues and pull requests on October 3, 2026, and the repository was pushed that day. New issues and pull requests were also arriving on October 3, including fixes and reports around Python call resolution, Codex uninstall behavior, and non-Latin concept synthesis. There was no latest GitHub release returned by the API, but same-day code and issue activity show that the project is being worked on.

Official npm builds send anonymous, opt-out usage events, and the telemetry document names every allowed field. It also says a stop hook locally reads the tail of an agent transcript after a Graft-using turn to count whether the response mentioned token savings; no transcript text is stored or sent. That disclosure is unusually specific. Teams with strict monitoring rules still need to disable telemetry or build from source before letting Graft touch private repositories.

Alternatives

ProjectWhat it isPick it when
Claude ContextAn MCP code-search service that uses embeddings and a vector database to retrieve source context.pick this instead when semantic retrieval matters more than a readable file-and-symbol graph.
CodeGraphContextA CLI and MCP server that indexes local code in a graph database for agent queries.pick this instead when you want a persistent graph database and can operate that extra service.
Continue gh↗An open-source coding agent with editor and terminal workflows rather than a context layer for existing agents.pick this instead when you want to adopt the coding agent as well as its codebase context system.

Sources

  1. Graft README
  2. Graft repository facts
  3. Graft telemetry contract
  4. Worktree MCP context issue 515
  5. Non-Latin concept issue 543
  6. Codex uninstall issue 546

More ai tools reviews

universal-modder · DeepEP-Ascend · DeepGEMM-Ascend · hypoarena · jeeves · faster-whisper · the whole board →