Skip to main content

Minos

The changes you were asked about, separated from the ones you were not.

Minos (Μίνως) is the king whose palace is the labyrinth at Knossos, and one of the three judges of the dead. The court he sits in weighs what a life actually did rather than what it says it did.

What he does

A long session ends with a working tree you did not watch fill up. Claude Code stopped and asked you about a few of those changes. It applied most of them without asking, because the session was running in acceptEdits, and a good number were applied inside a subagent whose diff never rendered in your terminal.

Minos reads the transcripts Claude Code already writes and sorts every change into one of those three classes. He also reports the work that did not survive the session: a change made at 19:02 and overwritten at 19:41 by a later turn on another subject is invisible in the final diff, because the final diff only holds the last state.

The Minos report for the session that built Minos: 57 files changed, none of them decided, 54 of them applied inside a subagent, and 28 changes that did not survive the session

Times are rendered in the timezone Minos runs in rather than the transcript's UTC, and a +1d marks a time that falls on the calendar day after the session began.

What he will not tell you

Minos reports whether Claude Code put a change to you as a decision. He does not report whether you read it. Nothing on your machine records that, so a change you approved in half a second counts as one you were asked about.

He is no softer on himself. A decided label is inferred from the permission mode alone, never from a recorded approval, so a standing allow rule can mean a default turn put nothing on screen at all. The report says so under its own figures, and names the allow rules it found in force at the moment you ran it.

That boundary matters more than any feature under it. A tool that implies it knows what your eyes did is worth less than one that says plainly where his knowledge stops.

The three classes

ClassWhat it means
decidedThe prompt this change descends from was submitted in default or plan mode, so Claude Code would have stopped and asked. Read off the mode, never off an approval
autoSubmitted under acceptEdits, bypassPermissions or auto, the mode most real changes run under. A mode Minos does not recognise, or one the transcript never recorded, is counted here too, rather than guessed in your favour
subagentApplied inside a subagent. No diff reached your terminal in any form

subagent wins over the other two, because even in default mode a subagent's edits are never rendered to you. No change is counted twice. A file changed under more than one class is counted under each, so those three file counts overlap on purpose, and the report repeats that where it prints them.

What he can see at all is what the transcript holds, which is the Edit, Write and NotebookEdit tools. A file rewritten by a shell command, by MultiEdit or by an MCP server of your own leaves nothing for him to read and appears in none of the counts.

The changes that did not survive

Three shapes, each reported by name. Overwritten: what an earlier operation introduced is gone after a later one. Reverted: a later edit is the exact inverse of the earlier one, putting back the text it had replaced. Discarded: a later whole-file Write no longer carries what an earlier operation introduced.

Each one names both times, and the prompt on either side wherever the transcript allows it, because what you want to read is that what you asked for in prompt 4 did not survive prompt 9. A change that cannot be traced back to a prompt is marked (unattributed) rather than guessed at, and subagent operations often are.

Detection works on the text of the changes themselves, so read it as a strong indication rather than a proof. A file whose final state cannot be reconstructed can produce a finding that does not hold, and text that turns up again elsewhere in a file can hide one that does.

minos file src/report.ts: six changes that did not survive, above the 23 operations that touched the file, every one of them inside a subagent

minos file puts one file's whole history in that session in front of you.

Getting started

In Claude Code, install the plugin and ask for the report with /minos:

bash
claude plugin marketplace add https://aranea-development.nl/plugins/marketplace.json
claude plugin install minos@aranea

The command line is the same tool without the harness around it. Minos is pre-release and not on npm yet, so you install him from the repository, and he needs Bun 1.1 or newer:

bash
bun install -g github:AraneaDev/minos
minos report

Nothing has to be installed before the session you want to read. Minos runs against the transcript store as it stands, so he answers for sessions that happened weeks earlier, for as long as Claude Code still keeps their transcripts on disk.

The commands

text
minos report        the default; the latest session for this directory
minos file <path>   one file's operation history in that session
minos undone        the changes that did not survive, on their own
minos sessions      sessions with headline counts, to pick one
minos export        the ledger as data, JSON

report, file, undone and export each take --session <id> and --project <path>. sessions takes --project and --limit <n>.

minos sessions: the four sessions of one repository with their decided, auto, subagent and undone counts

minos sessions is where you start when the session you want is not the last one you ran.

What he does not do

  • He does not review the code he reports on. Momus, Chaos and Knossos do that.
  • He does not touch git. Nothing is staged, nothing is committed, nothing is reverted.
  • He writes nothing under ~/.claude and nothing in your working tree. He reads the transcripts, and the allow rules in your settings.json so he can name the ones that let a default turn apply a change without showing it, and nothing else.
  • He makes no network request, runs no daemon, and sends no telemetry.

No hook runs on any turn, and nothing is captured while you work. Every number in the report is read back out of files Claude Code had already written.

Requirements

Bun 1.1 or newer, and a Claude Code transcript store at ~/.claude/projects, or wherever CLAUDE_CONFIG_DIR points.