Skip to main content
pikopod fix is opt-in twice over. It needs your own model key, and it sends excerpts of your source to that provider. It is the least mature part of pikopod, and this page says so plainly.

What it does

1

Impact scan (deterministic)

Derives search terms from the drift event: the drifted field’s leaf name, or the literal segments of the endpoint. Then scans your repository for source files that contain them, literally and case-sensitively, skipping node_modules, vendor, dist, build, target, testdata and hidden directories. At most 12 files, 5 matched regions per file, 4 lines of context either side.
2

Bounded patch from your model

Sends the drift event and the numbered excerpts, never whole files, and asks for the smallest change. The reply is untrusted: an edit to a file outside the impact set, an ambiguous or oversized edit, or more than 20 edits is refused. Each edit’s find text must occur exactly once in the file.
3

Apply, then check

Applies the edits in your working tree. With --check, runs the command in the repository. If it fails, every edit is reverted byte for byte, and the command’s output is shown whole.
4

Optionally open a pull request

With --pr: branch, commit, push, and open a PR whose body carries the drift table, the summary, and the check that gated it.

Flags

The argument is a fingerprint from the local event log or an incident bundle.

Known limitation, stated plainly

The impact scan matches source text literally and case-sensitively. A client that spells the field differently (accountNumber for account_number), indexes it dynamically, or forwards the payload untouched is invisible to it. When the scan finds nothing, pikopod reports UNVERIFIABLE and exits 2 rather than reporting a clean result: it will not hand your CI a green gate on a silent miss.
Treat a zero-impact answer as “look yourself”, not as proof the field is unused.

Without a key

The impact scan still runs; it is the deterministic half. The patch step refuses and says so. See Configuration for the key.

Not available over MCP

fix edits code with a model. It stays a human-operated command and is deliberately absent from the MCP tools.