Commands are how you call Codaban in, on Forgejo and GitHub alike. One comment, one run, one deliberate spend.
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 optional fast / 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 tier name is validated for shape, not existence. A typo’d tier is accepted here and then fails at the runner, so check the tier names your deployment actually defines.
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:
A pull request comment reading @codaban deep review, with a single eyes reaction added to it by Codaban.

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.
If the PR closes after the 👀 but before the run starts — deep review waits in a queue — Codaban posts “Deep review skipped, the PR is closed” rather than going quiet on you. No reaction at all on GitHub usually means the permission gate filtered the command.

Rules

  • Case-insensitive, and extra whitespace is fine.
  • The mention must lead the comment. thanks @codaban, looks good is 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, or COLLABORATOR. 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 review needs no label — the command itself is the intent. The codaban:deep-review label 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 / address command, 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. The codaban:deep-review label 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 review or deep review by 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.