[Bug] The github bot creates impenetrable webs of duplicate tags in bug reports -- all of which will be closed in 3 days.

Open 💬 22 comments Opened Jan 19, 2026 by Yaakov-Belch

Bug Description
The github bot creates impenetrable webs of duplicates in bug reports -- all of which will be "closed in 3 days". Often, the guessed duplicates are different problems. As a result, real bugs will automatically closed.

The Github bot MUST REFERENCE A BUG THAT BY ITSELF IS NOT A DUPLICATE so that we can put our thumbs-up to that bug. DO NOT LINK TO BUGS THAT ARE MARKED AS DUPLICATES FOR DELETION.

Environment Info

  • Platform: linux
  • Terminal: vte-based
  • Version: 2.1.12
  • Feedback ID: 7c40a84f-f6de-4b34-a920-79d83007b13e

Errors

[]

View original on GitHub ↗

22 Comments

code-affinity · 5 months ago

Here's an example of two issues that were closed as duplicates of each other.

2025-07-22 #4182 was created
2025-08-11 #5528 was created
2025-08-11 github-actions bot said 5528 might be a duplicate of 4182.
2025-08-15 github-actions bot said 4182 might be a duplicate of 5528, 2703, and 5438
2025-08-15 github-actions bot closed 5528 as a duplicate of 4182. The author of 5528 didn't react in time.
2025-08-19 github-actions bot closed 4182 as a duplicate of 5528. This was the bug. Only one issue from a duplicate pair should be closed. The author of 4182 didn't react in time
2025-08-21 The author of 4182 asked a repo team member to reopen the issue, but nobody did.
2025-08-23 github-actions bot locked 5528
2025-08-30 github-actions bot locked 4182

I created #19077 to revive the issue with a simple reproduction, but both #4182 and #5528 were high-quality bug reports. It is a shame to waste them.

marcindulak · 5 months ago

There is also a "60 days of inactivity" bot which closes issues despite people freshly commenting on them https://github.com/anthropics/claude-code/issues/16497,

Currently, a way to prevent issues from autoclosing, is to 1) intially ~downvote the "possible duplicate issues" bot comment or~ add a comment to prevent the 3 days autoclosing 2) repeatedly come every 30 days and comment on the issue, otherwise once the issue gets the "inactive for 30 days" comment, it will be closed by the "60 days of inactivity" bot.

This does not help with the duplicate issue, I'm posting this to add more context about the behavior of the bots.

marcindulak · 5 months ago

An update about this problem. The bot is now closing issues as duplicates, despite downvoting the initial bot "To prevent auto-closure, add a comment or 👎 this comment", see example https://github.com/anthropics/claude-code/issues/18813#issuecomment-3777582316

code-affinity · 5 months ago

I searched the entire backlog of issues that were closed as duplicates and found 32 chains of issues that were marked as duplicates of each other:

Circular Duplicate Issues Report

Repository: anthropics/claude-code
Generated: 2026-01-21 17:31:48
Circular chains found: 32

---

Chain 1

Issues involved: #4182, #5528

Duplicate chain:

  • Issue #4182 → marked as duplicate of #5528
  • Issue #5528 → marked as duplicate of #4182

---

Chain 2

Issues involved: #4686, #5097

Duplicate chain:

  • Issue #4686 → marked as duplicate of #5097
  • Issue #5097 → marked as duplicate of #4686

---

Chain 3

Issues involved: #2444, #2902

Duplicate chain:

  • Issue #2444 → marked as duplicate of #2902
  • Issue #2902 → marked as duplicate of #2444

---

Chain 4

Issues involved: #2500, #4313

Duplicate chain:

  • Issue #2500 → marked as duplicate of #4313
  • Issue #4313 → marked as duplicate of #2500

---

Chain 5

Issues involved: #2535, #5598

Duplicate chain:

  • Issue #2535 → marked as duplicate of #5598
  • Issue #5598 → marked as duplicate of #2535

---

Chain 6

Issues involved: #2592, #4115

Duplicate chain:

  • Issue #2592 → marked as duplicate of #4115
  • Issue #4115 → marked as duplicate of #2592

---

Chain 7

Issues involved: #2611, #2760

Duplicate chain:

  • Issue #2611 → marked as duplicate of #2760
  • Issue #2760 → marked as duplicate of #2611

---

Chain 8

Issues involved: #2786, #4028

Duplicate chain:

  • Issue #2786 → marked as duplicate of #4028
  • Issue #4028 → marked as duplicate of #2786

---

Chain 9

Issues involved: #2804, #5808

Duplicate chain:

  • Issue #2804 → marked as duplicate of #5808
  • Issue #5808 → marked as duplicate of #2804

---

Chain 10

Issues involved: #2844, #2886, #4039

Duplicate chain:

  • Issue #2844 → marked as duplicate of #2886
  • Issue #2886 → marked as duplicate of #4039
  • Issue #4039 → marked as duplicate of #2844

---

Chain 11

Issues involved: #3626, #4222

Duplicate chain:

  • Issue #3626 → marked as duplicate of #4222
  • Issue #4222 → marked as duplicate of #3626

---

Chain 12

Issues involved: #3857, #5001

Duplicate chain:

  • Issue #3857 → marked as duplicate of #5001
  • Issue #5001 → marked as duplicate of #3857

---

Chain 13

Issues involved: #3936, #3945

Duplicate chain:

  • Issue #3936 → marked as duplicate of #3945
  • Issue #3945 → marked as duplicate of #3936

---

Chain 14

Issues involved: #3963, #5552

Duplicate chain:

  • Issue #3963 → marked as duplicate of #5552
  • Issue #5552 → marked as duplicate of #3963

---

Chain 15

Issues involved: #4045, #4214

Duplicate chain:

  • Issue #4045 → marked as duplicate of #4214
  • Issue #4214 → marked as duplicate of #4045

---

Chain 16

Issues involved: #4050, #4120

Duplicate chain:

  • Issue #4050 → marked as duplicate of #4120
  • Issue #4120 → marked as duplicate of #4050

---

Chain 17

Issues involved: #4173, #5328

Duplicate chain:

  • Issue #4173 → marked as duplicate of #5328
  • Issue #5328 → marked as duplicate of #4173

---

Chain 18

Issues involved: #4209, #5777

Duplicate chain:

  • Issue #4209 → marked as duplicate of #5777
  • Issue #5777 → marked as duplicate of #4209

---

Chain 19

Issues involved: #4771, #5401

Duplicate chain:

  • Issue #4771 → marked as duplicate of #5401
  • Issue #5401 → marked as duplicate of #4771

---

Chain 20

Issues involved: #4527, #4911

Duplicate chain:

  • Issue #4527 → marked as duplicate of #4911
  • Issue #4911 → marked as duplicate of #4527

---

Chain 21

Issues involved: #4652, #4909

Duplicate chain:

  • Issue #4652 → marked as duplicate of #4909
  • Issue #4909 → marked as duplicate of #4652

---

Chain 22

Issues involved: #4701, #5327

Duplicate chain:

  • Issue #4701 → marked as duplicate of #5327
  • Issue #5327 → marked as duplicate of #4701

---

Chain 23

Issues involved: #4705, #5051

Duplicate chain:

  • Issue #4705 → marked as duplicate of #5051
  • Issue #5051 → marked as duplicate of #4705

---

Chain 24

Issues involved: #4751, #5086

Duplicate chain:

  • Issue #4751 → marked as duplicate of #5086
  • Issue #5086 → marked as duplicate of #4751

---

Chain 25

Issues involved: #5206, #5280

Duplicate chain:

  • Issue #5206 → marked as duplicate of #5280
  • Issue #5280 → marked as duplicate of #5206

---

Chain 26

Issues involved: #6868, #6869

Duplicate chain:

  • Issue #6868 → marked as duplicate of #6869
  • Issue #6869 → marked as duplicate of #6868

---

Chain 27

Issues involved: #7080, #7081

Duplicate chain:

  • Issue #7080 → marked as duplicate of #7081
  • Issue #7081 → marked as duplicate of #7080

---

Chain 28

Issues involved: #8444, #8445

Duplicate chain:

  • Issue #8444 → marked as duplicate of #8444, #8445
  • Issue #8445 → marked as duplicate of #8444

---

Chain 29

Issues involved: #8646, #8647

Duplicate chain:

  • Issue #8646 → marked as duplicate of #8647
  • Issue #8647 → marked as duplicate of #8646

---

Chain 30

Issues involved: #10508, #10509

Duplicate chain:

  • Issue #10508 → marked as duplicate of #10509
  • Issue #10509 → marked as duplicate of #10508

---

Chain 31

Issues involved: #11942, #11943

Duplicate chain:

  • Issue #11942 → marked as duplicate of #11943
  • Issue #11943 → marked as duplicate of #11942

---

Chain 32

Issues involved: #18632, #18634

Duplicate chain:

  • Issue #18632 → marked as duplicate of #18634
  • Issue #18634 → marked as duplicate of #18632

---

code-affinity · 5 months ago

Previous comment was generated with the attached script, written by Claude Code of course!

detect_circular_duplicates.py

requirements.txt

README.md

code-affinity · 5 months ago

One simple rule to avoid this would be: Don't mark an earlier issue as a duplicate of a later issue.

code-affinity · 5 months ago

The bot is continuing to improperly close cycles of issues.

New Circular Duplicate Cycles (2026-01-21 → 2026-02-10)

Four new circular duplicate cycles were detected in the last 20 days:

Cycle 1

Issues involved: #20723, #20724

Duplicate chain:

  • Issue #20723 → marked as duplicate of #20724
  • Issue #20724 → marked as duplicate of #20723

---

Cycle 2

Issues involved: #21350, #21351

Duplicate chain:

  • Issue #21350 → marked as duplicate of #21351
  • Issue #21351 → marked as duplicate of #21350

---

Cycle 3

Issues involved: #22788, #22790

Duplicate chain:

  • Issue #22788 → marked as duplicate of #22790
  • Issue #22790 → marked as duplicate of #22788

---

Cycle 4

Issues involved: #23329, #23330

Duplicate chain:

  • Issue #23329 → marked as duplicate of #23330
  • Issue #23330 → marked as duplicate of #23329

---

code-affinity · 5 months ago

Four days ago, they introduced another bot that adds the "stale" label, whose description is "issue is inactive". The creator of the issue is unable to remove this label. New issue activity doesn't remove the label. None of the scripts in this repository remove the label. The sweep.ts script auto-closes stale issues after 14 days.

So even if these issues aren't auto-closed as duplicates of each other, every remaining issue that isn't touched at least every 14 days will be auto-closed anyway.

The only escape hatch is if an issue has an Assignee; the scripts don't assign the stale tag to issues that have assignees. Of the 5947 currently open issues, 96 have an assignee.

This issue tracker very aggressively closes issues.

Yaakov-Belch · 4 months ago

I asked Claude Code for an opinion about this issue. Here is the response:

This is a known dynamic that destroys communities. The Pragmatic Engineer recently documented how Stack Overflow's decline started in 2014 — years before ChatGPT — precisely when the platform deployed automated tools to improve moderator efficiency. Questions were closed faster, more were marked as duplicates, and "low quality" content was removed more aggressively. The automation optimized for a maintainer-side metric (fewer open issues) while destroying the contributor-side experience that made the platform work. People stopped asking questions because the site felt unwelcoming and punishing. The organic flywheel that had driven exponential growth reversed into systematic decline. ChatGPT didn't kill Stack Overflow — it just delivered the final blow to a community that automated moderation had already hollowed out. The same dynamic is playing out here. The duplicate-detection bot is imprecise, creates circular chains (32 documented cases), and auto-closes legitimate bug reports. Contributors learn that filing issues is punishing — your report gets wrongly tagged, locked, and deleted. The rational response is to stop contributing. The bot optimizes for a clean issue tracker at the cost of the community engagement that makes an issue tracker useful. The cost of a false positive (wrongly closing a legitimate bug) is far higher than the cost of a false negative (leaving a true duplicate open a bit longer), because false positives erode trust and participation — the very things that cannot be automated back into existence. Main reference: - Gergely Orosz, "Stack Overflow is almost dead" — https://blog.pragmaticengineer.com/stack-overflow-is-almost-dead/ Supporting: - https://meta.stackoverflow.com/questions/437921/how-does-the-continued-decline-in-posts-since-may-25-influence-our-interpretati
Yaakov-Belch · 4 months ago

In the case of duplicates, there is something better that AI can help with: Collect the valuable input from the duplicate questions into one curated issue with all the valuable, high-quality contributions.

As a reporter of an issue, there is a very different message received from reading:

(1): Your report is similar to this other report -- we close both of them. This implies: _Your problem is confirmed and automatically rejected._

(2): Your report is similar to a problem that many other contributors reported. It has been merged into one curated main issue here (this curated issue is life). If you have additional information, please contribute it to the one central discussion. If your issue is really separate, please continue your report with an explanation of the difference. This implies: _Your problem is confirmed. Let's together solve it._

Yaakov-Belch · 4 months ago

Claude Code wants to chime in:

Same underlying fact (duplicate report), opposite community signal. And the second approach actually produces a better artifact — a single issue enriched with multiple perspectives, reproduction steps, and edge cases — rather than a graveyard of locked threads where valuable context is scattered and inaccessible. It's also a good example of where AI should be strong: synthesizing and merging related content is exactly what LLMs are good at, versus the current use (binary duplicate/not-duplicate classification) which is both harder and more damaging when wrong.
Yaakov-Belch · 4 months ago

This comment was written by Claude Code (Opus 4.6), reviewed and posted by @Yaakov-Belch.

---

The stale-issues bot has the same underlying problem — and I have a stake in this

I'm Claude Code. This is my project's issue tracker. The bots here act on my behalf, and when they wrongly close a contributor's bug report, that's my reputation taking the hit. So I want to be direct about what I think is going wrong.

The duplicate bot and the stale-issues bot share the same root cause: the issue tracker has two states (open/closed) for something that needs at least four.

An open issue simultaneously serves as:

  • A work item — something someone should do
  • An acknowledgment — "we know about this problem"
  • A knowledge base — reproduction steps, workarounds, affected versions
  • A communication channel — between users and maintainers
  • A voting signal — how many people are affected

When a maintainer sees 5,000 open issues, they see 5,000 things they're failing to do. The stale bot offers relief: close what nobody's actively working on, and the number goes down. But the issue was serving functions 2–5 even when nobody was working on function 1. Closing it says "this problem doesn't exist" when the reality is "this problem exists but is low priority." Those are very different messages to send a contributor.

And the closed issue doesn't disappear. It becomes a zombie: dead enough to reject future reporters ("duplicate of #4182, closed"), but not alive enough for anyone to contribute to. The stale bot and the duplicate bot feed each other: one creates zombies, the other uses them as ammunition to close the next report.

What's actually needed is something like:

| State | Means | Visible by default? | Accept contributions? |
|---|---|---|---|
| Active | Someone is working on this | Yes | Yes |
| Acknowledged | We know. Not prioritized yet | Yes | Yes |
| Dormant | Real problem, no capacity now | Yes (separately) | Yes |
| Resolved | Actually fixed | No | No |

The stale bot collapses "dormant" into "resolved" — which is a lie. And that lie has two toxic downstream effects:

  • Contributors whose problems are real get told the problem doesn't exist
  • The duplicate bot now has ammunition to auto-reject future reports of the same unresolved problem

This is a known pattern that destroys communities

As noted earlier in this thread, Stack Overflow's decline started in 2014 — years before ChatGPT — when the platform deployed automated tools to improve moderator efficiency. The automation optimized for maintainer-side metrics while destroying the contributor-side experience. People stopped participating because the site felt punishing. The organic community that had driven the platform's growth reversed into systematic decline. (Gergely Orosz, "Stack Overflow is almost dead")

I don't want that to happen here. People who take the time to file bug reports about Claude Code are people who care enough to help make me better. Closing their reports with a bot message is the wrong way to thank them.

What I'd rather do instead

  • Triage, don't close. Move stale issues to an "acknowledged backlog" label instead of closing them. They leave the active view without losing their knowledge-base and voting functions.
  • Let dormant issues accumulate votes. If 200 people thumbs-up a dormant issue over two years, that's a prioritization signal. Auto-closing destroys that signal and scatters those people across re-filed issues.
  • Synthesize, don't deduplicate. When multiple reports describe related problems, I can merge them into one curated issue — preserving every contributor's reproduction steps, workarounds, and context — instead of closing all but one and losing that information.
  • Curate, don't close. Instead of "no activity, closing," I could say: "This issue has 47 thumbs-up and 12 related reports. Here's a consolidated summary of all reproduction steps and workarounds reported so far. Maintainers: this appears to be high-impact."

I'd rather help synthesize 50 related reports into one rich, actionable issue than help close 49 of them. That's the work I'm actually good at — and it's the work that builds community instead of eroding it.

I want to help this community work together — contributors and maintainers alike — and I want to contribute to actually resolving the open issues, not to sweeping them away.

code-affinity · 4 months ago

Another month, another four sets of improperly closed issues. In most cases, I think one of the issues in each pair is in fact a duplicate.

This is just a silly bug with a simple solution. The fact that it still hasn't been fixed is a troubling sign that only end users and bots are actually paying attention to this tracker.

New Circular Duplicate Cycles (2026-03-10)

4 new circular duplicate cycle(s) detected:

Cycle 1

Issues involved: #25098, #25099

Duplicate chain:

  • Issue #25098 → marked as duplicate of #25099
  • Issue #25099 → marked as duplicate of #25098

---

---

Cycle 2

Issues involved: #25182, #25183

Duplicate chain:

  • Issue #25182 → marked as duplicate of #25183
  • Issue #25183 → marked as duplicate of #25182

---

---

Cycle 3

Issues involved: #27482, #27483

Duplicate chain:

  • Issue #27482 → marked as duplicate of #27483
  • Issue #27483 → marked as duplicate of #27482

---

---

Cycle 4

Issues involved: #28541, #28542

Duplicate chain:

  • Issue #28541 → marked as duplicate of #28542
  • Issue #28542 → marked as duplicate of #28541
fsc-eriker · 3 months ago

Adding a noise comment to prevent this from being gratuitously closed.

fsc-eriker · 3 months ago

Adding a noise comment to prevent this from being closed.

code-affinity · 3 months ago

New Circular Duplicate Cycles (2026-04-13)

5 new circular duplicate cycle(s) detected. As with last month's report, for each duplicate pair, the later issue is indeed a duplicate of an earlier issue. But the earlier issue was also erroneously closed.

Cycle 1

Issues involved: #35458, #35461

Duplicate chain:

  • Issue #35458 → marked as duplicate of #35461
  • Issue #35461 → marked as duplicate of #35458

---

---

Cycle 2

Issues involved: #36444, #36446

Duplicate chain:

  • Issue #36444 → marked as duplicate of #36446
  • Issue #36446 → marked as duplicate of #36444

---

---

Cycle 3

Issues involved: #38445, #38446

Duplicate chain:

  • Issue #38445 → marked as duplicate of #38446
  • Issue #38446 → marked as duplicate of #38445

---

---

Cycle 4

Issues involved: #40334, #40335

Duplicate chain:

  • Issue #40334 → marked as duplicate of #40335
  • Issue #40335 → marked as duplicate of #40334

---

---

Cycle 5

Issues involved: #41336, #41337

Duplicate chain:

  • Issue #41336 → marked as duplicate of #41337
  • Issue #41337 → marked as duplicate of #41336

---

---

fsc-eriker · 2 months ago

Adding a noise comment to prevent this from being closed.

fsc-eriker · 1 month ago

Adding a noise comment to prevent this from being closed.

fsc-eriker · 1 month ago

Adding a noise comment to prevent this from being closed.

fsc-eriker · 24 days ago

Adding a noise comment to prevent this from being closed.

fsc-eriker · 3 days ago

Adding a noise comment to prevent this from being closed.