who changed my repo

A record of what happened, and who caused it.

FluxGit keeps a per-repository log of the operations it performed: what ran, who caused it — you, or the agent that proposed it — the restore point captured first, and whether it succeeded or failed. It is a hash chain, so a deleted or edited entry is detectable.

The problem: your own tools were the least accountable thing in the repo.

Git records commits. It does not record that something discarded your uncommitted work, or that an agent asked to reset a branch and you said yes at 1am. The FluxGit command log lived in memory and died with the window. So the actions most worth reviewing were the ones nothing kept.

Honest limit

The agent id is self-declared over MCP. The log attributes; it does not authenticate. And a hash chain is tamper evidence, not tamper proofing: anyone who can write the file can rewrite the whole chain. What it guarantees is that they cannot rewrite part of it and have the rest still verify.

A proposal you rejected is not here, on purpose: nothing happened to the repository, so it belongs to the approval record rather than to the history of the code.

How it works.

chain

Deletion is detectable, not just editing

Signatures prove an entry was not modified. They say nothing about one that was removed: drop a line and the rest still verify. Each entry therefore carries the hash of the one before it, and the panel leads with "chain intact" or "breaks at entry N".

attribution

Human and agent, in one history

The local operations that can destroy work are recorded — discarding a hunk, discarding a file's changes, deleting paths, deleting a branch, dropping a stash, resetting, removing a remote or a submodule — each with the handle that brings it back: the stash commit, the branch tip, the checkpoint ref, the remote URL. So is every agent operation approved through the MCP handshake — merge, rebase, discard, reset, patch, plan, worktree, commit, push, branch. Written at completion, so a failed run is recorded too.

outside

It never touches your history

The log lives in FluxGit's data directory, keyed by repository — deliberately not in refs or notes. A governance record that changes what you publish, or that propagates on push, is not acceptable.

non-blocking

Recording can never fail the operation

A full disk is not a reason to refuse a merge. Writing the record is best-effort and reports whether it landed, so a degraded state is visible rather than assumed away.

Privacy and security posture.

Local-first. The log is a file on your machine; FluxGit does not send it anywhere. It records operation names, a short summary, the restore point and the outcome — not your diffs.

Related features.