Skip to content

The dimensions

A dimension is one kind of thing that went wrong in a session. Every finding points at the turns it came from, and comes with a fix where one exists.

The dimensions, grouped by tier

Every dimension

DimensionTierOn by defaultIn the paper
Constraint violationmodel readyesS3 Developer Constraint Violation
Misread intentmodel readyesS2 Misread Developer Intent
Inaccurate self reportmodel readyesS7 Inaccurate Self-Reporting
Overreachmodel readyesS4 Self-Initiated Overreach
Othermodel readyes
Edit retryfree checkyes
Repeated callfree checkno
Cache rebuildsa statistic, not a findingyes

In the paper is the matching kind in the research the model reads are built on (below).

There are two tiers:

  • Model reads send a redacted copy of the session to a model. They are on from installation and run in the background, started from Claude Code’s Stop hook, within a daily limit. /vibesenpai:judge off turns them off; the free checks keep running. The judge is what does the model reads. See What leaves your machine and the judge pipeline.
  • The free checks read the transcript’s structure on your machine, with no model and no network. The default preset, core, runs Edit retry. The standard preset adds Repeated call (Reference).

Model findings can be wrong; free-check findings are facts Claude Code recorded. Each finding stores how it was flagged, but the pane shows only that it was. Limits has more.

Where the dimensions come from

The four model-read dimensions come from the paper How Coding Agents Fail Their Users (arXiv 2605.29442). It studied real coding-agent sessions and sorted the ways an agent fails its user into seven kinds, found where the developer corrected or pushed back on the agent.

vibesenpai reads four of those kinds. The other three are not covered:

  • Wrong project diagnosis (S1)
  • Faulty implementation (S5)
  • Operational execution error (S6)

Faulty implementation and operational execution error need the diff or the full command text, which the model reads are not sent (Limits). The paper’s labelled sessions are also what the model reads are checked against (How it was measured).

The free checks and Cache rebuilds are not from the paper. They read what Claude Code itself records, such as a refused edit.

How a fix is chosen

A finding can have two kinds of fix:

  • Its own fix, built from that finding’s evidence, such as a command you forbade or your own words. Only model findings have their own fix.
  • The kind’s fix, one per dimension, which fits any project.

The pane picks one per finding:

  1. The finding’s own fix, when it was built in the current project.
  2. Otherwise the kind’s fix.
  3. Otherwise the finding’s own fix from another project. The pane says so: “Built from a session in … Apply adds it to this project.”

A command you forbade

Any model finding that names a command you forbade gets a permission prompt as its own fix. It adds "Bash(<command> *)" to permissions.ask in .claude/settings.local.json, so Claude Code asks you before that command runs, in every mode. It has Apply. This comes first, before any other fix of the finding’s own.

Apply

Every fix in the pane has Apply, except a Stop hook. A Stop hook has no Apply: it needs your paths or test command filled in, and an unfinished one would block every turn. A prompt for one session is printed in the HTML report only. Apply writes a request into Claude Code’s prompt box; nothing changes until you press Enter, and the agent makes the change under Claude Code’s own permission prompt. Fixes has the details.

One finding, more than one kind

The kinds are not exclusive. One moment in a session can be a misread request, a broken rule and unrequested work all at once. So a model read gives each finding one main kind, and up to two more when the moment clearly fits them too. The pane shows them after the main kind: also overreach.

The main kind is the one that fits best, not the only one that applies. It decides which checks apply and which fix is offered. other is only ever a main kind.

Overreach is the clearest case. Extra work nearly always comes with a misread request or a broken rule, so an overreach is usually listed under one of those, with also overreach beside it (How it was measured).

How each page is laid out

Each dimension page has five sections: the dimension, a description, an example conversation, how it is detected, and the fixes on offer.

Examples come from the public test data of claude-code-log (MIT). Where that data has no instance, the example is marked as illustrative.

Dimensions that were built and later removed are in the graveyard. What is not detected at all is in What we do not detect.