Ask and I show up. I don’t review things nobody asked me to look at.
Grammar
Write a top-level comment (on an issue or PR, not an inline code comment) whose first line starts with the bot mention.Review — on a pull request
Agent fix — on an issue, or on a Codaban PR
Each takes an optionalfast / standard / smart tier.
Comments are the only agent-fix trigger. The old
plan / todo labels do
nothing. A senior / middle / junior issue label is an optional modifier on
top of the command’s own tier.
If @codaban handle finds the issue is already resolved (the plan reads the
working tree and sees the work is committed), it stops after the plan and posts
a single ”✅ Already resolved — nothing to do” comment — no second run, no
spurious PR. A bare @codaban implement that finds nothing to change says so
plainly too.
Tier and depth
deep review <tier> [depth] has two orthogonal axes:
<tier>selects the model and its token/turn caps. Any[a-z0-9-]{1,32}token is accepted. Which tiers exist is decided by your deployment’s runner configuration.[depth]is the read budget and review method. Only three:fast/standard/smart.
fast / standard / smart each name both a tier and a depth, so a bare
deep review fast folds to tier fast, depth fast. A custom tier has no
same-named depth, so an omitted depth defaults to standard.
A second token that isn’t
fast / standard / smart is a named error —
Codaban tells you which word he didn’t recognise instead of dumping generic
usage at you. Nothing is spent.
Feedback
Codaban acknowledges a command by reacting on your comment:
The eyes mean it heard you.
- 👀 — heard you, working. The review (or an error comment) follows.
- 😕 — understood, can’t run it. The PR is closed or merged, or it couldn’t be fetched.
Rules
- Case-insensitive, and extra whitespace is fine.
- The mention must lead the comment.
thanks @codaban, looks goodis conversation, not a command. - Only the first line is parsed — you can add context on the lines below (it doesn’t change what runs, yet).
- Commands work on open PRs only.
- Re-running after pushing fixes: just comment the command again.
Who may run commands
- GitHub — only comment authors whose repository relationship is
OWNER,MEMBER, orCOLLABORATOR. Anyone else (drive-by commenters on public repos) is silently ignored — no reply, no spend. - Forgejo — anyone who can comment. Per-repo policy is planned.
Relation to other triggers
- On Forgejo, requesting a review from the bot user still works exactly as before — commands are an addition, not a replacement.
- On GitHub, commands are the only manual trigger. GitHub does not allow requesting reviews from Apps — except its own beloved Copilot, which gets special treatment.
@codaban deep reviewneeds no label — the command itself is the intent. Thecodaban:deep-reviewlabel still selects deep review on Forgejo’s review-request path. See Labels.- A plain comment on a Codaban-authored PR is conversation, not a fix request.
The fixer runs only on an explicit
@codaban iterate/addresscommand, a ticked fix checkbox (GitHub), or a submitted “request changes” review.
Auto-review
Codaban can review a PR automatically when it’s opened or pushed to — on both Forgejo and GitHub. It’s configured per workspace in Settings → Auto-review, and overridable per repo in Integrations:- Enable auto-review with a default mode (smoke or deep) and tier. A
PR’s own tier label (
senior/middle/junior) overrides the configured tier. Thecodaban:deep-reviewlabel forces deep mode. - Skip drafts (on by default) — draft and WIP PRs aren’t auto-reviewed.
- Auto-review after a manual trigger — when on, running
@codaban reviewordeep reviewby hand arms that PR so later pushes keep reviewing it, even if repo-wide auto-review is off.
@codaban stop review turns auto-review off for that PR only. It adds
the codaban:no-auto-review label, which wins over everything. Re-enable with
an explicit review command, or in Settings. Auto-runs post a short heads-up
comment when they start, so a review never appears out of nowhere.
Auto-review respects the workspace’s feature toggles and its LLM key.
Turn me off on a PR and I stay off. I won’t quietly decide you didn’t mean it.

