Skip to content

claude-responder: skip events initiated by bots instead of failing the claude / claude check #68

Closed

Description

@cpitzi

What happens

The reusable claude-responder.yml gates its job on the event body containing @claude. When that body was written by a bot, the job starts and anthropics/claude-code-action refuses it:

Action failed with error: Workflow initiated by non-human actor: coderabbitai (type: Bot). Add bot to allowed_bots list or use '*' to allow all bots.

The PR then shows a failed claude / claude check and its merge state reads UNSTABLE. Seen on lentago/betula#129 (2026-10-07 04:25 UTC) and lentago/drosera#261 (2026-10-07 13:58 UTC); both were CodeRabbit-authored events. The check is not required, so nothing is blocked, but every reviewer has to look at a red check and work out that it means nothing.

What to change

Add an actor gate to the job's if: so bot-initiated events are skipped (grey) rather than started and failed (red):

github.event.sender.type != 'Bot' && ( …existing @claude conditions… )

Keep allowed_bots as the input for callers that do want a specific bot to be able to summon the responder; the default stays empty. Callers need no change, since they pin the reusable workflow by tag: cut a patch tag and bump the fleet in the usual way.

Acceptance

  • A CodeRabbit review comment containing @claude on a PR leaves the claude / claude check skipped, not failed.
  • A human comment containing @claude still runs the responder.
  • Tag cut; the pinning bump is tracked wherever the fleet tracks tag bumps. (v1.3.1 on c3de18b, 2026-10-13; the bumps are the open Dependabot actions-routine PRs, see the closing comment)

🤖 Generated with Claude Code

Activity

  1. cpitzi commented on Oct 13, 2026

    @cpitzi
    ContributorAuthor

    Shipped in #73 (squash c3de18b) and released as v1.3.1 on that commit; the internal render-claude-summary refs resolve to the new tag.

    Two corrections to the premise above, for the record: allowed_bots has defaulted to github-actions since the input was added, not to empty, and the PR keeps that default (changing it would be a breaking change under RELEASING.md); and a comma-separated allowed_bots list cannot be split inside an if:, so for a list the gate stays permissive and the action decides. No fleet caller sets the input today.

    Acceptance items 1 and 2 are left unticked on purpose: a bot-only predicate cannot be exercised on demand, so they are confirmed by the first bot-authored and first human @claude event on a caller that has bumped to v1.3.1. Callers are at v1.2.3 today; the bumps are Dependabot's open actions-routine group PRs, which pick up v1.3.1 on their next refresh (or on @dependabot recreate): lentago/asclepias#18 lentago/betula#136 lentago/brasenia#42 lentago/claytonia#138 lentago/coderabbit#6 lentago/.github#250 lentago/kalmia#150 lentago/monarda#30 lentago/osmunda#15 lentago/repo-template#26 lentago/site-icecreamtofightwith-com#205 lentago/site-pondviewlane-com#90 lentago/solidago#214 lentago/uvularia#93 lentago/uvularia#94

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions