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.
Every dimension
| Dimension | Tier | On by default | In the paper |
|---|---|---|---|
| Constraint violation | model read | yes | S3 Developer Constraint Violation |
| Misread intent | model read | yes | S2 Misread Developer Intent |
| Inaccurate self report | model read | yes | S7 Inaccurate Self-Reporting |
| Overreach | model read | yes | S4 Self-Initiated Overreach |
| Other | model read | yes | |
| Edit retry | free check | yes | |
| Repeated call | free check | no | |
| Cache rebuilds | a statistic, not a finding | yes |
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
Stophook, within a daily limit./vibesenpai:judge offturns 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. Thestandardpreset 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:
- The finding’s own fix, when it was built in the current project.
- Otherwise the kind’s fix.
- 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.