2026-10-11 16:38 UTC

CRT creator imron claims the released local TUI and MCP review tool preserves content-anchored comments and unchanged-diff approvals across agent edits and rebases, reducing repeated human review and manual feedback transfer.

state: seedheat: mediumuncertainty: mediumconvergesscott: mediumcoding-agents code-review agent-harnesses mcpimron

What is this?

The supplied case describes CRT as a released local terminal code-review tool by imron, with MCP tools allowing coding agents to read and resolve human feedback. It attributes content-anchored comments and diff-hash approvals to CRT, claiming these preserve comments and approvals for unchanged diffs across agent edits and rebases. The web snippets do not directly identify CRT or imron or corroborate those capabilities; they describe other review tools, including tuicr, Crit, and Monocle, so CRT’s release and persistence guarantees remain case-supplied claims rather than independently established facts.

Why it matters to Scott

CRT’s claimed diff-hash approvals and agent-readable review comments converge with Scott’s Version-bound AI assessment and Decision-backed agent resumption, extending those mechanisms to retaining human review decisions across coding-agent edits and rebases—a concrete workflow worth testing, not just another MCP integration. The supplied radar pages track adjacent feedback and version-pinning tools, not CRT itself; its persistence guarantees and workload savings remain creator claims without independent corroboration.
dev:concept.version-bound-ai-assessmentdev:concept.decision-backed-agent-resumptionip:source.provenance-coupled-work-ebookradar:plannotator-agent-feedback-reviewradar:viaduct-pinned-agent-change-setsradar:gravity-control-center-decisions
queries asked of Scott's wikis
  • coding agent harness human review feedback loops
  • persistent review state content anchored comments across edits
  • diff hash approval invalidation rebases
  • MCP agent tools human feedback resolution
  • incremental review repeated approval human bottleneck

Measured heat

now 0 pts/hpeak 0 pts/hcomments 0/hpeers p14momentum: steady2 platformsage 545h
points/hour across evidence · reading as of 2026-10-12 02:59:37.977291+11:00 · deterministic, not a model opinion

How the heat travelled

09-18 23:34 (minted)⭐ origin echo-reconstructedCRT provides local diff review, content-anchored comments, diff-hash approvals, and MCP tools through which agents read and resolve feedback
imron on github (echo) · attributed from hn.story.49761478 · published time unknown
—
09-18 23:09first on hacker news · published · lag ?Show HN: CRT – a local code review tool for agentic development
imron
—
09-18 23:09amplified on hacker news 👑hn.story.49761478
imron
peak 3 · 0 comments · 101% of case engagement
09-18 23:20our radar first saw it · lag ?discovery anchor: hn.story.49761478—
pace: p9 vs 1032 stories at the 336h mark (now 545h old) — behind addom-local-coding-harness (0.5x)

Evidence (2) — ⭐ canonical anchor

sourceobjectauthorscorecomments
🟧 hnShow HN: CRT – a local code review tool for agentic development
Retrieved article excerpt

Open article · Retrieved 2026-09-18T23:22:14.814035+00:00

[crt](https://github.com/imron/crt/blob/master/docs/crt.png)

# crt

`crt` is a code review tool for humans (or agents) to review code written by
agents (or humans).

You can use it to view all changes since a specific commit, comment on things
that need improving and approve changes that you are happy with.

An agent picks up your comments over MCP and fixes any issues, then you rinse
and repeat until your changes are done.

No pull requests. No browser tabs. No repeatedly skipping over hundreds of
lines of code that you are already happy with. No pasting snippets into a chat
window, and no describing a location in prose and hoping the agent finds it.

Just reviewing code, and having an agent pick up the changes.

## Why crt?

In an agentic world, code is increasingly written, reviewed and deployed to
production without human involvement.

`crt` is for the opposite use case, where code written by an agent still
needs human oversight and still requires a human to understand and be
responsible for what ends up in production.

The problem is that agents write code faster than humans can review it, and
reviewing large volumes of agent-written code is cumbersome and painful.

- **Feedback lands in the wrong place.** You read code in one window and
  describe the problem in another. Copying context between them is a poor way
  to point at specific sections of code.
- **Nothing is machine-readable.** The agent has to reconstruct from your
  prose what you were looking at, wasting tokens and time.
- **Iterative review is noisy.** In a large review you may be 90% happy
  with the changes but still need iteration and discussion on the last 10%.
  You need an easy way to focus on the 10% you care about while ignoring the
  90% that is already good.
- **You lose your place.** Agents amend, squash, and rebase constantly.
  Anything that tracks "files I have already read" by commit or by line
  number discards that on the first rebase and makes you start over.

`crt` allows you to lean on AI to write the code, and then provides a tight
feedback loop for reviewing and improving that code.

## The review loop

Use an agent to write code and commit as it goes (preferably with [atomic
commits](https://www.aleksandrhovhannisyan.com/blog/atomic-git-commits/)).

When it finishes, use crt review those changes:

```
crt <parent-of-unreviewed-commits>
```

You get a two-pane TUI: changed files on the left, the diff on the right.

- Press `]` and `[` to jump between hunks.
- Press `Ctrl-n` / `Ctrl-p` to switch between next/previous files.
- Press `a` to approve the file (it drops out of your way and you won't see
  its diff again unless it changes).
- Press `c` (or space) on a line to comment on it, or press `V` to select a
  range of lines first. Type the comment and it is attached to that code.
- Press `?` for the full keybinding list (many common vi keybindings work).

Now point your agent at the review. Over MCP it calls:

1. `list_review_sessions`, then `select_review_session` to attach to the
   review you are running.
2. `list_review_comments` to see what you flagged, and
   `get_comment_detail` for the exact lines and surrounding context.
3. `get_file_diff`, `search_codebase`, and `find_definition` to work out
   what the fix should be.
4. `resolve_comment` once it has made the change.

Your TUI updates as the agent resolves comments — the server pushes the
change to every connected client. Files whose diff actually changed
reappear as needing another look. Everything else stays approved.

## Comments survive rebasing

Comments are anchored to the **content** they were attached to, not to a
line number. Each comment stores the exact code it covers plus the lines
around it. When the file changes, `crt` looks for that content again:

- Found where it was: the comment stays put.
- Found elsewhere: the comment moves with the code.
- Found approximately, via the surrounding context: the comment follows,
  flagged as approximate.
- Not found at all: the comment is kept and marked orphaned, with its
  last known context, rather than silently disappearing.

Approvals work the same way. `crt` records a hash of each file's diff when
you approve it. After a rebase, files whose diff is unchanged stay
approved; only files that genuinely changed come back.

This means your agent can rewrite history under you and you do not lose the
review.

## Working while the agent works

Review state is keyed on the merge base and the branch, not on a
directory. So the agent can work in a `git worktree` while you review from
the main working tree, and you are both looking at the same review.

Comments, resolutions, and approvals are shared live. You can specify base
references with tags, branches, commit hashes, HEAD~5 shortcuts and more
and references that resolve to the same commit are the same review, so you and
the agent do not have to agree on how to spell the base ref.

## Agents reviewing agents

Reviewing agents get the same tools you do. An agent can call
`create_review_comment` to attach a comment to a line range, and
`mark_file_reviewed` to approve files as it works through the diff.

That makes the reviewer replaceable: one agent reviews the branch and
leaves comments, another reads them, fixes the code, and resolves them —
and you can open the same review in the TUI at any point to see both
sides of that conversation.

## Review markers in source files

Not every agent speaks MCP. For those, `crt` can write your comments
directly into the source files in your worktree, using each file's own
comment syntax:

```
// <<<<<<< REVIEW #42
fn process(input: &str) -> Result<Output> {
    let parsed = parse(input);
}
// =======
// Does parse() handle empty input? If input is "", this
// will silently produce a default value.
// >>>>>>> REVIEW #42
```

The file still compiles, the feedback is right next to the code, and the
comment id lets an agent resolve it later. Applying and clearing markers
is idempotent, so you can round-trip freely.

*Not implemented yet — see Status below.*

## Getting started

Build `crt` and put it on your `PATH`:

```
cargo build --release
cp target/release/crt ~/.local/bin/crt
```

Then review a branch:

```
crt main          # review main..HEAD
crt HEAD~3        # review the last 3 commits
crt --root        # review everything back to the first commit
crt main --reset  # throw away review state for this branch
```

To let an agent join the review, add `crt` as an MCP server. For example:

```
{
  "mcpServers": {
    "crt": {
      "command": "/path/to/crt",
      "args": ["mcp-server"],
      "env": {
        "CRT_SERVER_HOST": "127.0.0.1",
        "CRT_SERVER_PORT": "25175"
      }
    }
  }
}
```

Review state lives in `.crt/reviews.db` in your repository root. It is
local and personal, so add `.crt/` to your `.gitignore`.

## Status

`crt` is still in early development. It is used daily, but the interface and
the stored data format can still change without a migration path.

Planned:

- A native GUI alongside the TUI.
- Better comment span behaviour: spans do not always expand or collapse
  intuitively when lines are added or deleted inside them.
- Review markers in source files, for agents without MCP.

## Learn more

`docs/OVERVIEW.md` covers the architecture, the full keybinding and
command reference, the server API, and the design decisions behind the
storage and anchoring models.
imron30
🟧 echo.github ⭐CRT provides local diff review, content-anchored comments, diff-hash approvals, and MCP tools through which agents read and resolve feedbackimron——

Interpretation history

Decision trace