Skip to content
Skip to content
Product11 min readRepath Khan

We Killed the Dashboard. It Wasn’t the Workflow.

The old dashboard was not the workflow. The useful product moment is when an agent says a change is done and needs an answer it can use immediately.

The screen was not the product

Move the proof to where the work happens

critique.sh

We built a broad AI code review product around a familiar assumption: code changes happen in one place, and a human comes to a dashboard somewhere else to decide whether they are good. It was a reasonable assumption. It is also the wrong center of gravity for a world where the person is already working through Codex, Claude Code, or OpenCode and the agent—not the human—needs the next piece of evidence.

The anxiety was real: AI makes code faster than a team can carefully review every diff. We built routes, controls, review runs, comment flows, policy surfaces, and the broader apparatus a human operator expects from a code review platform. The product could assemble a lot of information. But information is not the same as a useful handoff. If the answer to “my agent says it is done; what now?” is “open the dashboard, find the run, read the findings, decide how to explain them back to the agent,” the product has inserted itself between the work and the decision it exists to improve.

That is the subtle dashboard trap. The screen becomes the product because it is visible. The actual job is less glamorous: create an independent, inspectable answer at the precise moment a completion claim is made. The user does not want a second coding agent to monitor. They want their existing agent to know whether it should continue, repair, or surface a limitation. The interface for that job is a tool call and a contract, not a queue of cards.

A completion layer sits after implementation and self-checking but before a change is treated as complete. It does not write the first version of the feature. It does not replace CI. It does not take merge authority. It receives a candidate finish: the working-tree change, the intent behind it, and the authoring agent’s belief that the job is done. Then it tries to establish whether that belief holds under a fresh, bounded pass.

The old critical path
Agent or developer writes the changeHuman opens a dashboard to inspect the reviewHuman translates findings back into an agent taskThe system accumulates comments and context switches
The new critical path
Primary coding agent implements and self-checksAgent calls `critique finish` at a candidate finishCritique reproduces, challenges, and verifies a bounded repair when neededStructured evidence returns to the same agent session

This is the part of the pivot that matters most. Critique is agentic under the hood because verification requires model judgment, repository inspection, and repair work. But it is not a rival agent the user has to direct separately. The user talks to their main coding agent. That agent calls Critique mid-session when it reaches a candidate finish. Critique returns a deterministic outcome, evidence, limits, and optionally a repair. The main agent turns that result into the next conversational step with the user.

From the user’s perspective, that removes a category of friction. There is no “go ask the reviewer bot,” no extra ticket, and no requirement to learn where evidence is buried. The primary agent remains accountable for understanding the task and making the next change. Critique is the infrastructure that gives it a better basis for that change. The slogan is intentionally literal: Critique is the teammate your agent calls.

One call, machine-readable result

The CLI is designed for the calling agent. A human authorizes access once; the agent uses the output as part of its existing work loop.

npm install --global @critiquedotsh/cli
critique login
critique setup --with-chatgpt
critique model gpt-5.6-terra
critique integrate --agent all

The primary command is critique finish. --repair none asks for a verdict and proof only. --repair pack asks for a bounded proposed repair. --repair apply permits an approved repair to return to the caller’s working tree. --json is first-class because the audience is another tool, not a person reading a terminal flourish. The response carries the outcome, repair state, changed paths, issues, artifact IDs, limits, usage, and a stable exit code.

That shape lets the main agent remain cheap and fast where it should be cheap and fast. The broader system is model-flexible rather than married to one vendor or one expensive reasoning pass. A team can use the agent and model that make sense for ordinary implementation, then reserve stronger independent capacity for the final claim. The model is a component. The contract—the separate finish role, evidence boundary, and repair discipline—is the defensible product.

The full reproduce-repair-verify loop launches locally first because local repositories are where the conditions of truth usually live. Test fixtures, ignored environment files, service URLs, and the uncommitted worktree can be essential to reproducing behavior. Critique creates disposable local workspaces, can make local development and test environment files available only inside those workspaces, excludes them from patches and proof artifacts, and never uploads them to Critique Cloud. Only a verifier-approved patch can come back to the caller’s tree.

That is a constraint worth preserving. A remote system that says it verified something it could not faithfully run is worse than no verifier; a system that solves the fidelity problem by absorbing local secrets is worse still. Remote execution can expand later, but only where it can maintain a comparably clear evidence and safety boundary. “Unknown because the environment did not support reproduction” is a more trustworthy output than a green badge with nothing behind it.

The pitch contains a circularity problem: do not trust the first agent’s self-report; trust Critique’s report instead. Architecture alone cannot answer that. A fresh workspace and separate role are sensible reasons to expect a better challenge, not evidence that it catches more real failures. The product needs to earn this claim in public with a benchmark that measures exactly the thing users care about: disagreement with a claimed finish that turns out to be justified.

The proof plan should be falsifiable

Avoid a vague “code quality” score. Measure whether a task declared complete by the harness contained a confirmed failure the finish pass caught.

Design choiceWhat to doWhy it matters
Task setBuild 30–50 real, difficult repository tasks with cross-file effects, edge cases, or ambiguous requirements.Easy tasks produce no useful separation because every condition succeeds.
Ground truthPre-register a hidden test suite or reviewer checklist before each run.This prevents the verifier from grading itself after seeing its own output.
ComparisonRun the same starting state with harness alone and harness plus Critique; report Codex, Claude Code, and OpenCode as separate rows.Blended averages hide where the product helps and where it does not.
Public receiptsPublish sanitized examples: original claim, failure, reproduction, Critique result, and resolution.Receipts make a skeptical claim inspectable instead of marketing copy.

The temptation is to preload every code-review skill and call the result “thorough.” That is how a focused completion layer turns back into a dashboard full of generic comments. The better direction is targeted routing: choose skills based on the language, framework, and risk surface touched by the diff, and require each skill to terminate in a reproducible check. A payments skill should attempt a payment-specific failure mode. An authorization skill should test a boundary. “This looks unsafe” is not a completion-layer outcome.

Now
AI-native startups

Teams moving quickly with coding agents that need a second set of eyes without introducing another review ritual.

Next
Individual developers and compact teams

People already using Codex, Claude Code, or OpenCode who want a standard, evidence-bearing finish command in serious repositories.

Then
DevEx and platform teams

Teams that need a reusable verification primitive inside CI, internal tooling, and agent-supervisor workflows.

Later
Enterprises

Organizations that need the same contract with their own policy, controls, benchmarking, and rollout requirements.

The pivot removes the dashboard from the critical agent completion path. The product focus is the CLI handoff and agent-facing evidence contract, rather than requiring a human to operate a separate review surface for every change.
Under the hood, Critique is agentic because it must inspect, reproduce, and sometimes repair code. In the user workflow, it is a tool the primary coding agent calls mid-session. The user keeps one agent conversation and one task owner.
It reconstructs the current working-tree change in disposable workspaces, tests consequential hypotheses, returns evidence and stated limits, and can prepare or apply a verifier-approved bounded repair.
A pre-registered holdout comparison on difficult real tasks: measure the confirmed failure rate among tasks a primary harness declared done, report results by harness, and publish inspectable receipts for catches.

Give your coding agent a teammate.

Install the CLI, approve access once, and let your agent make an independent finish handoff when “done” needs proof.

Get early access