Twelve prompts.
One clean commit.

Kwizmo Plynth records every prompt Claude Code runs, checks what it changed, and lets you keep only the parts you want — underneath your git repository, without ever touching it.

No pip, no npm, no build step· Runs entirely on your machine· Stores no credentials

The Plynth timeline: five prompts, one failing its checks with the PHP parse error shown, one tagged as a hand edit, and a notice that the next message will tell Claude what was rejected.

The problem

By the time you commit, it is one undifferentiated diff

Agents are fast enough that an ordinary session produces a dozen changes before anything is committed. Git cannot help you: none of it exists in history yet.

You cannot tell what did what

Five prompts touched the same file. Which one added the line you are staring at?

Undo is all or nothing

The third prompt went wrong, but the ninth built on top of it. Now you are unpicking both by hand.

Good work gets thrown out with bad

Four fifths of that change was right. Rejecting the whole prompt means asking for the good part again.

Your own edits get overwritten

You fixed a line by hand. The agent still believes it wrote something else there, and quietly puts it back.

Every prompt, on its own

A timeline you can actually read

Each prompt becomes a numbered entry, coloured by what happened to it. Open one and you get the model's summary, the tool calls it made, the checker's output and a line-numbered diff of what that prompt — and only that prompt — changed.

  • Checks run automatically after every prompt
  • A red entry offers Ask Claude to fix, with the error attached
  • Files you marked off limits are flagged before you commit
  • Anything you edited by hand is kept separate, and credited to you
Timeline entries: one passing its checks, one tagged as a hand edit, and one failing with the PHP parse error shown beneath it.

Keep what is right

Approve a change hunk by hunk

By default a prompt runs in a throwaway copy of your repository — nothing on disk changes until you say so. You get the diff split into individual hunks and tick the ones you want.

  • Take three edits and leave the fourth
  • Pull one change back out of a prompt that already landed
  • Neighbouring hunks and other prompts stay exactly as they are
  • Say why, and it becomes a standing rule in your CLAUDE.md
Review dialog: three files, each hunk with its own checkbox and diff, and a box asking why the change is being dropped.

Something git cannot do

Blame that names the prompt

Pick a file and see which request produced each line — including work you have not committed, where ordinary git blame has nothing to point at.

  • Three weeks later, "why does this exist" has an answer
  • Bisect across prompts to find the one that broke it
  • Search every prompt by wording or by the file it touched
  • Replay a sequence of prompts into another repository
Blame: most lines marked as committed, with individual lines attributed to the prompts that added Slovenia and Croatia.

How it works

One decision, and the rest follows

Before and after every prompt, Plynth writes your whole working tree into git's object database using plumbing commands and a throwaway index. Those snapshots are real commits on a private ref.

GIT_INDEX_FILE=<tmp>  git read-tree HEAD
GIT_INDEX_FILE=<tmp>  git add -A
GIT_INDEX_FILE=<tmp>  git write-tree      -> tree
git commit-tree <tree> -p <previous>      -> commit
git update-ref refs/kwizmo/snapshots <commit>
Because they are git objectsYou get
git diff before afterthe exact diff for one prompt
git blameblame that names the prompt, not the commit
the commits already existbisect across prompts
git apply --cachedcommit some prompts and not others
a ref keeps them reachablenothing is ever garbage collected

git status, git log, your branch and your staging area are never touched. Remove Plynth and your repository is exactly as you left it.

Also included

The rest of it

Your edits are protected

Every hand edit is described to Claude before your next request, with an instruction not to restore an earlier version or rewrite the file.

Variants

Run one prompt up to four ways at once, each in its own copy, and compare the results before adopting one.

Selective commit

Untick prompts and the commit is rebuilt from the rest. The schema change need not ride along with the UI change.

Commit messages

Written from the prompts you actually sent. You described the change before making it; that beats guessing from a diff.

Secret scanning

Private keys, cloud credentials, tokens and database URLs with passwords are caught before the commit, not after the push.

Folders without git

Not a repository? Plynth tracks it anyway, keeping the history outside your files. No .git, no marker, nothing added.

Built-in editor

Syntax highlighting for 62 file extensions, so a two-line fix is something Plynth knows about the moment you make it.

Recipes

The prompt you run every month with one word changed, saved with placeholders and reusable across repositories.

Costs and search

What you have spent, how long you waited, which files the agent keeps returning to, and every prompt you have ever sent.

Requirements

Three programs, no dependencies

Plynth is Python standard library only. There is nothing to compile, nothing to install into your project, and nothing to configure before it runs.

Locked-down machine? The paths to git and Claude Code can be set in the interface or through environment variables when PATH cannot be changed.

What it is not

Under the hood

Small enough to read in an afternoon

5,300lines of application code
0third-party dependencies
175tests, running in two seconds
62file types highlighted

Every test runs against a real git repository in a temporary directory. The whole tool is a thin layer over git plumbing, and a mocked git would only prove the mock does as it was told. They concentrate on the places where a silent break would cost real work: that snapshots never touch your branch, that undo restores binary files byte for byte and refuses cleanly when it cannot, and that pulling one hunk out of the middle leaves its neighbours alone.

Start with one repository

Unzip it, point it at a folder, send one prompt as a dry run — then undo it, so you have watched the safety net work before you rely on it.

  1. Unzip anywhere and run Kwizmo.bat, or python kwizmo.py.
  2. Press Browse and pick a folder. It does not have to be a git repository.
  3. Choose your language preset in Settings, and list any paths that are off limits.
  4. Write a CLAUDE.md. It does more for output quality than anything in the app.