[BUG] GitHub "Issue opened" trigger does not fire when the issue is created by a Claude routine (self-trigger)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
A routine with a GitHub \"Issue opened\" trigger (filtered by label ai:auto) does not fire when the issue is created by another Claude routine running on the same account. The exact same trigger fires correctly when a human user creates the issue.
This breaks the chained-routine pattern where one routine (triage) creates a labeled issue and a second routine (auto-fix) is supposed to pick it up automatically.
Setup
Two routines, both on SaschaHeyer/loop-demo:
Routine A — github-triage
- Trigger: Slack message (scheduled / API)
- Action: reads a Slack channel, classifies bug reports, opens a GitHub issue on
loop-demoand applies the labelai:auto
Routine B — auto-fix
- Trigger: GitHub → Issue opened → repo
SaschaHeyer/loop-demo→ filter: Labels is one ofai:auto - Action: picks up the issue, fixes the bug, opens a PR
Steps to Reproduce
- Create Routine B (auto-fix) with a GitHub \"Issue opened\" trigger filtered by label
ai:autoon a repo. Install the Claude GitHub App on the repo as prompted. - Manually open an issue on the repo and add the label
ai:auto. → Routine B fires correctly. ✅ - Run Routine A (triage). It opens a new issue on the same repo and applies the label
ai:autoduring issue creation (gh issue create ... --label "ai:auto"). - Observe: Routine B does not fire. ❌ No run appears, no error surfaced.
- Repeat step 3 with a second label-apply call after creation (
gh issue edit <n> --add-label "ai:auto"). Same result — Routine B does not fire. ❌
What Should Happen
Routine B should fire for any issues.opened event on loop-demo where the label ai:auto is present, regardless of who (human or Claude routine) created the issue.
What Actually Happens
Routine B fires only when a human creates/labels the issue. When the Claude routine (Routine A) is the actor, the trigger does not fire. No error is shown in the routine list or logs.
Hypothesis
GitHub may not deliver issues.opened webhook events back to the same GitHub App installation that performed the action — a loop-prevention behavior analogous to how GITHUB_TOKEN-triggered GitHub Actions workflows do not re-trigger further workflows. If Claude routines use the authenticated Claude GitHub App to create issues, GitHub may suppress the resulting webhook delivery to that same App, causing the trigger to silently miss the event.
This is consistent with the observation that:
- Human-created issues → trigger fires ✅
- Routine-created issues → trigger does not fire ❌
- The issue is visible on GitHub immediately after creation (so it's not a creation failure)
Workaround
Manually firing Routine B via Run now after Routine A creates the issue works correctly. An API trigger (/fire endpoint) called explicitly from Routine A also works, but requires wiring the fire URL + token as env vars and adds coupling between the two routines.
Environment
- Claude Code version: latest (web, claude.ai/code)
- Plan: Max
- Trigger type: GitHub → Issue opened
- Repo: personal GitHub repo (SaschaHeyer/loop-demo), Claude GitHub App installed
- Related issues: #48845 (routines not triggering on PR open — similar general reliability concern)