[BUG] GitHub "Issue opened" trigger does not fire when the issue is created by a Claude routine (self-trigger)

Open 💬 0 comments Opened Jun 29, 2026 by SaschaHeyer

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-demo and applies the label ai:auto

Routine B — auto-fix

  • Trigger: GitHub → Issue opened → repo SaschaHeyer/loop-demo → filter: Labels is one of ai:auto
  • Action: picks up the issue, fixes the bug, opens a PR

Steps to Reproduce

  1. Create Routine B (auto-fix) with a GitHub \"Issue opened\" trigger filtered by label ai:auto on a repo. Install the Claude GitHub App on the repo as prompted.
  2. Manually open an issue on the repo and add the label ai:auto. → Routine B fires correctly.
  3. Run Routine A (triage). It opens a new issue on the same repo and applies the label ai:auto during issue creation (gh issue create ... --label "ai:auto").
  4. Observe: Routine B does not fire. ❌ No run appears, no error surfaced.
  5. 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)

View original on GitHub ↗