# Reported issues for better-code-review-graph

Pod holds 16 of 17 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [better-code-review-graph](/mcp/better-code-review-graph).

## Most discussed

### Auto-truncate `impact` output to avoid token-limit overflow

## Problem

`impact` output for shared hooks/utils routinely exceeds conversation token limits. Observed sizes: 7.6M chars, 12M chars. Large LLM clients drop the response; smaller ones fail to process it at all.

## Current workaround (field-use)

Always wrap `impact` in a subagent with summarisation. Cap `max_depth=1` by default.

## Suggestion

Return a truncated payload by default when result size exceeds a threshold, with a structured hint:

```json
{
  "results_truncated": true,…

[Read the thread](https://github.com/n24q02m/crg/issues/315) · 2026-04-19 · closed · external user · 4 comments

### `callers_of` response should auto-flag same-file `asyncio.to_thread` / `functools.partial` / decorator references (dynamic-dispatch blind spots)

## Problem

`mcp__code-review-graph__query action=callers_of` is structurally correct — it returns AST-edged callers. But in Python repos, several common dispatch patterns are invisible to the AST edge: `asyncio.to_thread(func, ...)`, `asyncio.ensure_future(func, ...)`, `map(func, ...)`, `functools.partial(func, ...)`, decorator-based routing, and dict-of-`Callable` registries. The response reads as authoritative ("these are all callers"), but the true call-site set is larger than what's…

[Read the thread](https://github.com/n24q02m/crg/issues/331) · 2026-04-20 · closed · external user · 2 comments

### Every `search` / `query` response should include `embeddings_count` and `keyword_only: true|false` in the response header (auto-compliance with RESULT-block discipline)

## Problem

Consumers of `mcp__code-review-graph__search` and `mcp__code-review-graph__query` currently have to call `config action=status` separately to know whether the response came from semantic-similarity search (`embeddings_count > 0`) or keyword-substring fallback (`embeddings_count == 0`). Result: agents that should record the mode in their audit trail (SST3 AP #19 MUST-record discipline) forget to do it because the mode isn't surfaced at the point of use.

## Reproduction (field…

[Read the thread](https://github.com/n24q02m/crg/issues/330) · 2026-04-20 · closed · external user · 2 comments

### `graph update` response should include reviewer-oriented summary (functions_impacted / nodes_changed) alongside raw edge counts

## Problem

`mcp__code-review-graph__graph action=update` currently returns raw edge-count metrics (e.g. "4 files / 629 edges"). For a reviewer deciding swarm scope at Stage 5/6, raw edge counts are a weak signal. The reviewer wants to know: which functions changed? Which modules are newly impacted?

## Reproduction (field evidence, round-4 SST3 `/Leader 4-6` agent 2, frontend-JS repo)

- `graph update` × 2 incremental calls (4 files, 629 edges).
- Agent's follow-up reaction: "A `nodes_changed`…

[Read the thread](https://github.com/n24q02m/crg/issues/329) · 2026-04-20 · closed · external user · 2 comments

### `graph update` misses local-only commits on solo branches (incremental-detection heuristic gap)

## Problem

`mcp__code-review-graph__graph action=update` appears to miss local-only commits that have not yet been pushed / fetched. On a solo branch with several local commits, `graph update` reported incremental-detection based on a `last_updated` timestamp that predated the first local commit.

## Reproduction (field evidence, round-4 SST3 `/Leader 4-6` agent 1, Python repo)

- Agent on a solo branch with 7 local-only commits touching `src/` files.
- `mcp__code-review-graph__graph…

[Read the thread](https://github.com/n24q02m/crg/issues/328) · 2026-04-20 · closed · external user · 2 comments

### Auto-resolve single-candidate File+Function ambiguity for caller/callee/impact queries

## Problem

When `callers_of <symbol>` matches both a File node AND a Function node with the same name (common when a module name equals a function name), the File target is meaningless for the caller/callee/impact question — the user almost always wanted the Function.

Currently the tool either asks for disambiguation or returns ambiguous mixed results. Either way, the user is forced to manually qualify the target.

## Current workaround (field-use)

Always use fully-qualified…

[Read the thread](https://github.com/n24q02m/crg/issues/316) · 2026-04-19 · closed · external user · 2 comments

### Not Working: Failed to persist capabilities cache

**Describe the bug**
In Claude Code: Failed to reconnect to plugin:better-code-review-graph:better-code-review-graph.  
I manually run `uvx --python 3.13 better-code-review-graph` in Powershell:
```
2026-04-29 02:51:58.798 | INFO     | better_code_review_graph.credential_state:resolve_credential_state:113 - No credentials found -- server starting in awaiting_setup mode
2026-04-29 02:51:58.835 | INFO     | mcp_core.transport.local_server:run_local_server:458 - Credentials already configured for…

[Read the thread](https://github.com/n24q02m/crg/issues/384) · 2026-04-28 · closed · external user · 1 comment

### Orphan daemon + lock-format-version-skew causes 401 on stdio-proxy reconnect

## Summary

`better-code-review-graph --stdio` proxy crashes with HTTP 401 when it picks up a lock file written by an older `mcp_core` (which lacks the bearer-token line on line 3) while a previously-spawned daemon from that older version is still alive. Repeats whenever `uvx` resolves a newer minor/patch while a daemon spawned by the previous version is still running. Surfaces in Claude Code as `MCP error -32000: Connection closed`.

## Mechanism

1. `--stdio` runs `run_smart_stdio_proxy()`…

[Read the thread](https://github.com/n24q02m/crg/issues/365) · 2026-04-25 · closed · external user · 1 comment

## Most recent

### Promote `callers_of`/`impact`/`search` from `pattern=` parameter to first-class `action=` values

**Summary**: current MCP signature is `query action=query pattern=callers_of target=<x>`. The `action=query` + `pattern=` indirection is a recurring trip-hazard — multiple round-5 agents hit `Unknown action 'callers_of'` before realising `callers_of` is a `pattern` value, not an `action` value.

### Field evidence — round-5 (hoiung/dotfiles#427 P1.18 / P2.8 / N50)

- agent6 N50: first attempt `mcp__code-review-graph__query action=callers_of` → `Unknown action 'callers_of'`
- Implied pattern…

[Read the thread](https://github.com/n24q02m/crg/issues/341) · 2026-04-21 · closed · external user · 1 comment

### `review`/`tests_for` untested-function list over-reports on cross-language + integration-test repos — add language filter or test-framework heuristic

**Summary**: `review` and `tests_for` produce untested-function false positives on two common repo shapes:

1. **Cross-language test coverage**: Python implementation + JavaScript/TypeScript E2E tests (Jest / Vitest / Playwright). The Python `tests_for` view doesn't see JS test files → JSX/TSX implementations get flagged as "untested".
2. **Integration-test-style coverage**: Python implementation + pytest integration tests using fixture-based dependency injection. The AST-call-graph heuristic…

[Read the thread](https://github.com/n24q02m/crg/issues/340) · 2026-04-21 · closed · external user · 1 comment

### `callers_of`/`callees_of` `not_found` response is ambiguous — "symbol not indexed" vs "zero callers" look identical

**Summary**: `callers_of` and `callees_of` returning `{"status": "not_found"}` conflates three distinct failure modes:

1. Target misspelled
2. Target not indexed (instance method called without `Class.` qualifier, Pydantic validator, framework-decorator-registered route)
3. Genuine zero callers

The same `not_found` response for all three forces the caller to guess which one they're looking at — often via spending hours on wrong-direction debugging before grep confirms.

### Field evidence —…

[Read the thread](https://github.com/n24q02m/crg/issues/339) · 2026-04-21 · closed · external user · 0 comments

### Add `renamed_in_diff` query (or similar) — track symbols whose callsite lines shifted vs base ref

## Summary

Feature request for a query pattern that reports symbols whose **callsite line numbers shifted** between the current graph and a base ref (analogous to how `review base=<ref>` works today but for line-position drift rather than blast radius).

## Use-case (Stage 6 Final Review, multi-file refactors)

When auditing a large refactor diff, it matters to know which callers physically moved — not just which symbols were added/removed. Today the graph reports **current** file:line…

[Read the thread](https://github.com/n24q02m/crg/issues/320) · 2026-04-20 · closed · external user · 1 comment

### Add `spot_check` action — return source snippets for N random callsites from last `callers_of` result

## Problem

Mechanical per-query spot-check discipline (read one source line per graph result to confirm it wasn't a false positive) is important for avoiding the \"trust structured JSON without verifying\" failure mode.

Currently an agent has to manually do N \`Read\` calls after each \`callers_of\` / \`callees_of\` / \`impact\` / \`inheritors_of\` to implement this discipline — N file fetches per graph query.

## Current workaround (field-use)

Documented manual discipline: after each graph…

[Read the thread](https://github.com/n24q02m/crg/issues/318) · 2026-04-19 · closed · external user · 1 comment

### Warn at `search` when `embeddings_count=0` AND query is not a literal identifier

## Problem

\`search\` silently degrades to keyword-substring matching when \`embeddings_count=0\`, but gives no warning at query time. A careful agent catches this by checking \`config status\` before each \`search\`; a less-careful one trusts what look like semantic results but are actually keyword-fallback — which can return garbage on verb-phrase or multi-word queries.

## Current workaround (field-use)

Agent discipline: always check \`config status\` BEFORE \`search\`. Documented in an…

[Read the thread](https://github.com/n24q02m/crg/issues/317) · 2026-04-19 · closed · external user · 1 comment

### Claude Code plugin stuck at v3.8.0 while PyPI is at v3.9.0 — MCP server fails

## Description

The Claude Code plugin (installed via `n24q02m/claude-plugins` marketplace) is stuck at version 3.8.0 while the PyPI package is at 3.9.0. Running "Update now" in Claude Code says "already at the latest version (3.8.0)".

This causes the plugin's MCP server to fail because:
- The plugin config was written for FastMCP 2.x (v3.8.0)
- But `uvx` resolves the PyPI package to v3.9.0 which uses FastMCP 3.x
- The MCP server launches in HTTP mode instead of stdio, causing Claude Code to…

[Read the thread](https://github.com/n24q02m/crg/issues/268) · 2026-04-13 · closed · external user · 1 comment

### Startup crash: fakeredis 2.35.0 breaks docket import (released 2026-04-09)

## Description

Since 2026-04-09, any fresh install of `better-code-review-graph` via `uvx` crashes on startup. The root cause is `fakeredis 2.35.0` (released 2026-04-09) which removed `FakeConnection` from `fakeredis.aioredis`. The `docket` library (pulled in via FastMCP → pydocket) still imports the old name.

**Root cause:** [chrisguidry/docket#380](https://github.com/chrisguidry/docket/issues/380) — fix in progress via [PR #382](https://github.com/chrisguidry/docket/pull/382)

## Error

```…

[Read the thread](https://github.com/n24q02m/crg/issues/259) · 2026-04-10 · closed · external user · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/n24q02m/crg.git/issues).
