[FEATURE] Issue Noise Reduction: Automated Deflection, Bulk Cleanup, and Mega-Issue Strategy for 6,000+ Open Issues

Resolved 💬 2 comments Opened Feb 17, 2026 by shimscho Closed Mar 18, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

The Claude Code issue tracker has a severe noise problem that makes it impossible for developers to focus on key issues. Here's the data from a comprehensive analysis conducted on 2026-02-17:

Scale:

  • 6,185 open issues (from ~26,428 total ever created)
  • Issue creation rate exploded from ~5/day (Sept 2025) to 250-317/day (Feb 2026) — a 60x increase in 5 months
  • At this rate: ~7,500 new issues/month

56% of all open issues are zombies (labeled for closure but still open):

| Label | Count | % of Open |
|---|---|---|
| stale | 2,602 | 42% |
| autoclose | 477 | 7.7% |
| duplicate | 325 | 5.3% |
| invalid | 42 | 0.7% |
| Total | ~3,446 | 56% |

Top duplicate clusters (same issue reported dozens of times):

| Cluster | ~Count |
|---|---|
| Compaction/compact failures | 181 |
| Crash/SIGTRAP/terminated | 175 |
| Token/billing/credits | 84 |
| Claude ignores instructions | 53 |
| Context limit/conversation too long | 51 |
| API Error 500 (identical titles) | 71 |
| Rate limit/overloaded | 43 |
| npm install failed | 43 |
| Cannot modify thinking blocks | 34 |
| classifyHandoffIfNeeded | 14 |

Additional noise signals:

  • 29% of recent issues (147/500 sampled) have zero labels — triage bot can't keep up
  • 28% of issues have zero comments — abandoned drive-by reports
  • 65 issues have empty titles (just [BUG] or [FEATURE] with nothing else)
  • No GitHub Discussions tab — every question, billing complaint, and "not working" report becomes an issue

Root cause analysis of existing automation gaps:

  1. sweep.ts is hardcoded to 10 pages (1,000 issues max per run) — with 6,185 open issues, it literally cannot reach ~5,185 of them. The stale backlog grows faster than the sweep can process.
  2. auto-close-duplicates.ts requires a bot comment referencing #number — but the triage bot only adds labels, it doesn't post duplicate references. So 325 issues get the duplicate label and then... nothing.
  3. No pre-submission deflection — known transient errors (API 500, rate limits, thinking blocks, context compaction) aren't caught before the issue is submitted. Users literally paste error messages as titles.
  4. No support channel separation — billing questions, "how do I..." questions, and support requests are all filed as bug reports because there's no Discussions tab.
  5. Lifecycle pipeline is brokenstale (14d) → should transition to autoclose (14d) → should close. But 2,602 stale issues prove this pipeline isn't executing.

Proposed Solution

A multi-pronged noise reduction strategy:

1. Immediate: One-Time Bulk Cleanup
  • Close all 325 open duplicate-labeled issues
  • Close all 477 open autoclose-labeled issues
  • Close all stale issues older than 60 days with 0 comments and < 10 upvotes
  • Close all 65 empty-title issues (just [BUG] or [FEATURE])
  • Estimated cleanup: ~3,000+ issues closed in one pass
2. Fix the Sweep Pipeline
  • Remove the 10-page hard limit in sweep.ts (or increase to 100 pages)
  • Run the sweep 4x daily instead of 2x to handle volume
  • Add a staleautoclose transition (currently missing — stale issues just sit forever)
  • Make closeExpired use GraphQL bulk mutations instead of individual REST calls to avoid rate limits
3. Pre-Submission Deflection Bot

On issue creation, an additional workflow should pattern-match against known clusters and immediately comment + close (or redirect) with helpful links:

| Pattern | Action |
|---|---|
| Title contains "API Error: 500" | Auto-comment: "This is a transient server-side error. Please retry. If persistent, check [status.anthropic.com]." Close as not_planned. |
| Title contains "thinking blocks" | Auto-comment + link to known issue tracking this. Close as duplicate. |
| Title contains "rate limit" / "overloaded" / "429" | Auto-comment: "Rate limits are expected during high usage. See [docs/troubleshooting]." Close as invalid. |
| Title contains "install" + "fail" | Auto-comment: "Try npm uninstall -g @anthropic-ai/claude-code && npm install -g @anthropic-ai/claude-code@latest. See [troubleshooting guide]." Label needs-info. |
| Empty title (just [BUG] or [FEATURE]) | Auto-close with "Please resubmit with a descriptive title." |
| Title is raw error message (paste-dump) | Auto-comment requesting proper description. Label needs-info. |

4. Mega-Issue / Pinned Tracking Issues

Create pinned tracking issues for the top 10 duplicate clusters. The triage bot should link new duplicates to these instead of just labeling:

  1. [TRACKING] Context compaction failures (~181 duplicates)
  2. [TRACKING] Crash/SIGTRAP on long sessions (~175 duplicates)
  3. [TRACKING] Token usage / billing / credits questions (~84 duplicates)
  4. [TRACKING] Claude ignores CLAUDE.md instructions (~53 duplicates)
  5. [TRACKING] API Error 500 (transient) (~71 duplicates)

Each pinned issue would have:

  • Known status, workarounds, and ETA (if any)
  • Auto-updated count of linked duplicates
  • Clear "subscribe here for updates" instruction
5. Enable GitHub Discussions
  • Move questions, billing support, and "how do I..." to Discussions
  • Update config.yml contact links to point to Discussions for non-bug/non-feature topics
  • Add a Discussion category for "Troubleshooting" and "General"
6. Strengthen the Triage Bot

Enhance claude-issue-triage.yml to:

  • Actually close (not just label) clear duplicates by referencing the tracking issue
  • Reject empty titles immediately instead of just labeling
  • Detect paste-dump titles (raw error JSON, stack traces as titles) and request resubmission
  • Cross-reference with the top 10 tracking issues for automatic dedup

Alternative Solutions

  • Do nothing: Issue count will exceed 10,000 open by April 2026 at current trajectory. Developers will have zero signal-to-noise visibility.
  • Manual triage: Would require 2-3 full-time humans at 250+ issues/day. Not scalable.
  • Close everything older than 30 days: Too aggressive, loses legitimate long-standing bugs. The proposed approach is surgical.

Priority

Critical - Blocking my work

Feature Category

Other

Use Case Example

Current state (developer perspective):

  1. Developer wants to check if "context compaction fails after subagent" is a known issue
  2. Searches issues — gets 181 results for "compaction", 51 for "context limit"
  3. Has to read through dozens of nearly identical reports to find if any have a response
  4. Gives up, files a new issue (becomes duplicate #182)
  5. Issue gets labeled stale after 14 days, sits in the 2,602-issue stale graveyard forever

Proposed state:

  1. Developer searches "compaction" — finds pinned tracking issue [TRACKING] Context compaction failures
  2. Sees current status: "Known issue. Workaround: use /compact before reaching limit. Fix in progress for v2.2.x"
  3. Subscribes to the tracking issue for updates
  4. If they file a new issue anyway, the bot auto-links it to the tracker and closes it within minutes
  5. Developers see 800 real open issues instead of 6,185 (of which 3,400+ are zombies)

Additional Context

Data methodology: All numbers were collected via gh api pagination across all 6,185 open issues on 2026-02-17. Title pattern matching used grep against the full corpus of open issue titles. Label counts were verified via paginated API queries for each label.

Existing automation reviewed:

  • .github/workflows/claude-issue-triage.yml — Claude Opus-based labeling
  • .github/workflows/auto-close-duplicates.yml — daily cron
  • .github/workflows/sweep.yml — twice daily lifecycle enforcement
  • .github/workflows/issue-lifecycle-comment.yml — lifecycle notifications
  • .github/workflows/remove-autoclose-label.yml — reactivation on comment
  • scripts/sweep.ts — stale marking + lifecycle closure (10-page limit found)
  • scripts/auto-close-duplicates.ts — requires comment with #number reference
  • scripts/issue-lifecycle.ts — lifecycle config (stale: 14d, autoclose: 14d, etc.)

The automation exists but has critical scaling gaps. This proposal addresses those gaps specifically.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗