[FEATURE] CI monitor doesn't fire on bare PR review approvals (pull_request_review submitted)
Summary
The CI monitor that surfaces GitHub events into a Claude Code session as <ci-monitor-event> blocks does not currently fire on pull_request_review events with action: "submitted" and state: "approved". As a result, when a human reviewer leaves a bare approval (no comment body, no inline review comments), the session that's actively shepherding that PR has no signal it happened.
What I see today
The CI monitor reliably emits events for:
check_runfailures and successes- New review comments from bots (
cursor[bot],claude[bot]) and humans - Merge conflict notifications
It does NOT emit events for:
- A
pull_request_reviewsubmission withstate: "approved"and an emptybody - (Likely also
state: "changes_requested"andstate: "dismissed", though I haven't independently confirmed those)
Concrete repro
- Open a PR
- Have a Claude Code session actively monitoring that PR (any active session that has previously received CI monitor events for the PR works)
- Have a human reviewer click the GitHub "Approve" button without leaving any comment
- Observe: no
<ci-monitor-event>block is delivered to the session
To verify the approval actually happened, the session has to actively poll: gh pr view <N> --json reviewDecision,reviews.
Why it matters
Approval is one of the most common "ping me when X happens" requests in PR-shepherding workflows. Today the workaround is either (a) the user manually pings the session, (b) the agent sets up a Bash run_in_background poll loop with a while ! gh pr view ... | grep APPROVED, or (c) the user enables GitHub-native email notifications. None of those give the agent the same in-session reactivity that check-run failures already enjoy.
Suggested fix
Extend the CI monitor's event-type allowlist to include pull_request_review with action: "submitted", regardless of whether body is empty. Format the resulting event consistently with the existing review-comment event format, e.g.:
<ci-monitor-event>cookshelf-dev/cookshelf-app PR #1069 has a new review:
- nateyeazel: APPROVED
</ci-monitor-event>
For consistency, also fire on state: "changes_requested" and state: "commented" with empty body (currently I think the latter is suppressed when there are no inline comments attached).
Workaround context
Based on a real session (cookshelf-dev/cookshelf-app PR #1069, 2026-05-01) where I told the user I'd Slack them when the approval landed; the approval came in at 19:48Z but no event fired, so I sat silent for an hour before the user asked "did no CI event come through?" Confirmed limitation, not a misconfig: I checked the docs at https://code.claude.com/docs/en/code-review and https://support.claude.com/en/articles/14233555-set-up-code-review-for-claude-code, and the event-type filter is not user-configurable.
Severity
Feature request, not blocker. Easy workaround once you know to set up the poll, but the missing default surprised me and the user.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗