Skip to content

trace_path returns empty for all functions despite traversable CALLS edges (v0.8.1, macOS arm64) #480

@mattiagggg

Description

@mattiagggg

Summary

trace_path returns an empty result for every function/method I tried — callers or callees, plain or fully-qualified name, any depth — even though the underlying CALLS edges exist and are traversable via query_graph. The tool only ever echoes back {"function":...,"direction":...} with no paths/nodes.

This makes the headline call-graph traversal tool effectively non-functional in v0.8.1, at least on macOS arm64.

Environment

  • Version: codebase-memory-mcp 0.8.1
  • Platform: Darwin arm64 (macOS)
  • Repo indexed: large polyglot repo (Python 569 files, Go 190, TS 20, …) → 15,915 nodes / 67,668 edges, status:"indexed". Index reports 15,945 CALLS edges.

Repro

Index any multi-language repo, then:

$ codebase-memory-mcp cli trace_path '{"project":"<proj>","function_name":"read_file_status","direction":"callers","depth":1}'
{"function":"read_file_status","direction":"callers"}

Empty — no paths. But the edges clearly exist:

$ codebase-memory-mcp cli query_graph '{"project":"<proj>","query":"MATCH (a)-[:CALLS]->(b:Function) RETURN b.name, count(a) AS callers ORDER BY callers DESC LIMIT 8"}'
{"columns":["b.name","callers"],"rows":[["get",380],["info",374],["main",169],["load",112],["read_file_status",88],["save_files_from_dict",87],["WithTimeout",72],["keys",63]]}

read_file_status is a Function node with 88 incoming CALLS edges, yet trace_path finds nothing.

What I ruled out

  • Not a label issue. Tried both Method nodes (create) and Function nodes (read_file_status, save_files_from_dict, main, run_cmd) — all empty.
  • Not direction. callers and callees both empty.
  • Not name resolution. Bare name and fully-qualified (agentsv2.base_agent.BaseAgent.create) both empty.
  • Not missing data. The exact CALLS edges traverse fine via query_graph, so the graph is populated correctly — only the trace_path start-node lookup (or its traversal) appears to fail.

Expected

trace_path should return the caller/callee paths for read_file_status (88 callers exist), matching what query_graph can already walk.

Workaround

Use query_graph with a Cypher MATCH ... -[:CALLS*]-> ... instead; the graph data itself is correct.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions