Reaction recipes
Practical reaction configurations — watch-only mode, auto-merge, custom CI messages, and bot handling.
Reactions are configured under reactions: (global) or projects.*.reactions: (per-project). Every recipe here uses the correct schema field names; see the Reactions reference for the full list of keys and their defaults.
Recipe: Watch-only mode
Disable all automated agent messages while keeping notifications active. Useful during onboarding or in sensitive projects where you want to observe before letting AO act:
reactions:
ci-failed:
auto: false
changes-requested:
auto: false
bugbot-comments:
auto: false
agent-idle:
auto: falseauto: false suppresses the send-to-agent action but does not silence notifiers. Reactions whose default action is notify (like agent-stuck, agent-exited, and all-complete) continue to fire their notifications regardless of this flag.
Recipe: Enable auto-merge
approved-and-green defaults to auto: false (notify-only). Opt in explicitly:
reactions:
approved-and-green:
auto: true
action: auto-mergeThe auto-merge action currently calls notifyHuman() internally — it does not perform a real merge. Actual merging still depends on your repository's branch protection rules and the "Allow auto-merge" setting on GitHub. AO does not bypass these gates. Treat auto-merge as an opt-in signal for when the SCM plugin adds real merge support.
Recipe: Custom CI failure message
Override the default message to give the agent more precise recovery instructions:
reactions:
ci-failed:
message: |
CI is failing. Run `pnpm test` locally and fix the failing tests before pushing again. Prioritise type errors first.The two-pass CI behavior still applies: AO sends your custom message on the first pass (transition), then follows up in the next poll cycle with a second message listing every failing check by name and URL. Your message override affects only the first pass — the structured check list fires regardless.
Recipe: Aggressive escalation
Tighten the retry and escalation windows for urgent projects where you want fast human handoff:
reactions:
ci-failed:
retries: 1
escalateAfter: "5m"
changes-requested:
retries: 1
escalateAfter: "5m"With retries: 1 and escalateAfter: "5m", AO will escalate after one failed recovery attempt or five minutes — whichever comes first.
Recipe: Ignore bugbot noise
Keep human changes-requested reactions fully active but silence automated bot review nudges:
reactions:
bugbot-comments:
auto: falseAO identifies bot comments by author login. The current hardcoded bot list in scm-github includes cursor[bot], github-actions[bot], codecov[bot], and sonarcloud[bot]. Any review comment from these accounts triggers bugbot-comments rather than changes-requested. Setting auto: false here stops AO from nudging the agent about bot feedback while leaving human review comments fully active.
Recipe: Per-project overrides
Suppress a noisy notification for one project while leaving everything default for others:
reactions:
all-complete:
auto: true
action: notify
projects:
myapp:
repo: org/myapp
path: ~/code/myapp
reactions:
all-complete:
auto: false # suppress the "all sessions done" notification for this project
otherproj:
repo: org/otherproj
path: ~/code/otherproj
# inherits global defaults — all-complete notification fires as normalPer-project reaction blocks are merged with the global config; the project value wins for every field that is specified.
Recipe: Stuck session threshold
Extend the agent-stuck threshold for projects with long-running builds where 10m of inactivity is normal:
reactions:
agent-stuck:
threshold: "30m"The threshold field is used exclusively by agent-stuck. A session must be continuously idle for longer than threshold before the reaction fires and the session status transitions to stuck.