Skip to content

trace_path silently accepts invalid direction values and returns empty results #480

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcypherCypher query language parser/executor bugsparsing/qualityGraph extraction bugs, false positives, missing edgespriority/highNeeds near-term maintainer attention; high-impact bug, regression, safety issue, or release blocker.stability/performanceServer crashes, OOM, hangs, high CPU/memoryux/behaviorDisplay bugs, docs, adoption UX

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions