pi-codegraph-fix

Pi coding agent extension that wires codegraph as an MCP sidecar — with ctx.cwd fix for cross-project sessions

Packages

Package details

extension

Install pi-codegraph-fix from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-codegraph-fix
Package
pi-codegraph-fix
Version
1.1.1
Published
Jul 7, 2026
Downloads
497/mo · 73/wk
Author
gdwhisper
License
MIT
Types
extension
Size
17.1 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-codegraph-fix

npm

The CodeGraph plugin for pi that actually works.

中文版


Features

  • Switch projects freely — uses ctx.cwd instead of process.cwd(), no more silent tool loss when you change projects
  • Zero zombie processes — cleanup on session shutdown, process exit, and SIGTERM/SIGHUP. No more pile-up
  • Lazy start — spawns codegraph only when you first use it, doesn't slow down session launch
  • Multi-project friendly — each project gets its own MCP client, switches automatically
  • No misleading hints — injects CodeGraph instructions only when tools are actually ready

Quick Install

pi install npm:pi-codegraph-fix

You also need CodeGraph CLI (npm install -g @colbymchenry/codegraph) and your project indexed (codegraph init).


The Problems

1. CodeGraph goes silent when you switch projects

You pi session=<other-project> or launch pi from ~ instead of your project root. Suddenly codegraph tools disappear. No error, just nothing.

Why: The original plugin used process.cwd() to find .codegraph/codegraph.db. That always points to wherever pi was first launched — not your current session's project. Wrong project → no DB → no tools → silent failure.

2. Zombie process pile-up

Every time you close pi, the codegraph serve --mcp subprocess doesn't die. After a few sessions you have a dozen of them fighting over the same socket — causing "server disconnected" errors on every codegraph call.

Real case: 12 zombie processes accumulated over 9 hours across 6 sessions. Every codegraph call spun the roulette wheel on which zombie had the socket lock.


The Fix

Two changes from the originals (codegraph-pi, pi-codegraph):

ctx.cwd instead of process.cwd() — reads the current session's working directory from pi, so it works no matter where or how you launched pi.

Three-path cleanup — kills the MCP subprocess on normal exit, crash, or terminal close:

Path When
session_shutdown pi exits normally
process.once("exit") Node process ends
SIGTERM / SIGHUP Terminal close, kill

No more zombies. No more "server disconnected".


Features

Feature Source
ctx.cwd instead of process.cwd() pi-codegraph-fix
spawn with explicit cwd pi-codegraph-fix
Multi-project MCP clients (one per CWD) SeanPedersen/pi-codegraph
Dynamic tool discovery via MCP tools/list SeanPedersen/pi-codegraph
Process cleanup hooks (exit, SIGTERM, SIGHUP) SeanPedersen/pi-codegraph
Self-contained single file SeanPedersen/pi-codegraph
before_agent_start system prompt injection colbymchenry/codegraph-pi
.codegraph/codegraph.db exact check colbymchenry/codegraph-pi

How It Works

  1. On session_start, check if ctx.cwd/.codegraph/codegraph.db exists (instant file check)
  2. On first codegraph tool call, spawn codegraph serve --mcp in background (lazy, doesn't block session)
  3. Discover available tools via MCP tools/list protocol
  4. Register all tools with pi.registerTool()
  5. Inject usage instructions into system prompt via before_agent_start after tools are ready
  6. On session_shutdown or process exit, clean up all MCP clients

Credits