New issues sorted, duplicates caught, stale ones surfaced.
Issue triage is an AI agent for GitHub issue triage. Every week it counts the new issues nobody has triaged, suggests an owner area for each, flags likely duplicates of older issues and lists the ones untouched for 30 days, in one Slack message. It never labels, assigns, comments on or closes an issue.
- 09:00Schedule fired
- 09:00Found 31 new, untriaged
- 09:01Searched for duplicates
- 09:01Listed 50 stale issues
- 09:02Posted · 2 likely duplicates
Why does the issue backlog grow unread?
Because issues arrive faster than anyone reads them. A busy repository gets dozens a week with no owner, the same bug is filed twice under different words, and old issues go quiet until nobody remembers why they're open. Triage gets put off until planning, and planning starts with an hour of reading.
Without it
- Dozens of new issues a week with no owner.
- The same bug filed twice, fixed once.
- Issues untouched for months, unnoticed.
- Backlog review that starts with an hour of reading.
With Issue triage
- The week's untriaged issues, counted by area.
- Likely duplicates paired, with links.
- The longest-untouched issues listed.
- One digest every Monday, nothing changed.
What does GitHub issue triage cover?
Three lists every week, each with an owner area, and a plain note of anything it couldn't check.
New and untriaged
Issues opened this week with no label and no assignee, counted and grouped by suggested owner area.
Likely duplicates
Pairs of open issues that describe the same problem, each with both links and a reason.
Stale issues
Open issues untouched for 30 days or more, the 8 longest first, with their days since update.
What it couldn't check
Searches it couldn't run, pages that failed and bodies it didn't read, said plainly.
How does AI GitHub issue triage work?
Every run follows the same five steps, then posts one digest. GitHub is only read, and only the last step writes anything.
- 1
Lists the week's new issues
Opened in the last 7 days, with no label and no assignee. Every page, counted from a written list.
- 2
Searches for older matches
Key words from new titles against older open issues, up to three searches.
- 3
Reads the closest pairs
Only when titles aren't enough, up to five, so a duplicate is called likely, never certain.
- 4
Lists stale issues
The longest untouched first, 30 days or more without an update.
- 5
Posts the digest
Counts first, then new issues by owner area, duplicates and the stale list.
- Mondays at 9:00, before planning
- @issue-triage what came in this week?
- Run when another tool calls its webhook, such as before a backlog review
From one sentence to Monday's triage.
Describe the job, let Arclyx draft the agent, test it once on your real repository, create it, then read what lands in #eng-triage. Every duplicate carries both links.
Paste the sentence. Arclyx picks the tools it needs and asks what it can't work out.
What should it do?
Every Monday at 9, write the issue triage digest for our GitHub repository: open issues from the last 7 days that nobody has triaged or assigned, likely duplicates of existing issues, and open issues untouched for 30 days, with a suggested owner area for each, and post it to #eng-triage.
- Tools it can use
- Which owner areas should it use?
- Backend, app, website, infra and billing
It writes the instructions, and you sign in to each tool once. Nothing runs until you say so.
- Reading your description
- Writing the instructions
- Picking the tools
Issue triage
Mondays, 9:00
Try it once as a dry run. It reads your real tools, and what it would post is shown to you, not posted.
- Lists the week's new issues
- Searches for older matches
- Lists stale issues
- Posts the digest
Once it's created, the output lands where you said, with a source for every item.
#508 Webhook retries stop after the first failure, #506 Export times out on large workspaces, and 12 more.
Owner area from each title; the ones it can't place go under Unclear.
↗ example-a.com/issues/508Both ask for exports to respect workspace permissions.
Likely, not certain: two of three searches used.
↗ example-a.com/issues/498#504 Pricing table overflows on tablets, #501 Blog images load blurry, and 3 more.
Four examples per area at most, so the digest stays short.
↗ example-a.com/issues/50496 days without an update; owner area unclear.
One of the 8 longest untouched, from 50 stale issues fetched.
↗ example-a.com/issues/120
One digest, four readers.
The same Monday digest answers a different question for each person who reads it.
Engineering managers
How much came in untriaged this week, by area.
Tech leads
The new issues in their area, and the old ones nobody touched.
Product managers
Duplicates to merge before planning, not during it.
Maintainers
A backlog that doesn't grow unread.
How do you triage GitHub issues with AI?
Give an AI agent read access to your issues and a weekly job: count the new issues nobody owns, suggest an owner area for each, pair likely duplicates and list what's gone stale. Your team reads one digest and applies the owners. In Arclyx that's five steps, starting with one sentence, and nothing in GitHub changes.
“Every Monday at 9, write the issue triage digest for our GitHub repository: open issues from the last 7 days that nobody has triaged or assigned, likely duplicates of existing issues, and open issues untouched for 30 days, with a suggested owner area for each, and post it to #eng-triage.”
- 1
Describe the job
One sentence: which repository, which owner areas, and where the digest goes.
- 2
Connect GitHub
The agent gets only tools that list, search and read issues, so it can't change one.
- 3
Name your areas
Backend, app, website, infra or your own; anything it can't place is marked unclear.
- 4
Watch a dry run
Optional. See this week's digest from your real repository before anything is posted.
- 5
Schedule it
Mondays at 9:00, or @mention it before a backlog review.
Or start from one of these sentences
“Every weekday at 9, list the issues opened since yesterday with no assignee, with a suggested owner area, and post them to #eng-triage.”
“Every Monday at 9, find likely duplicates among our open GitHub issues and send me the pairs with both links.”
“On the 1st of each month, list open issues untouched for 90 days, oldest first, with their owner area, in #eng-leads.”
“Every Monday at 9, list this week's new backend issues and any older backend issue they may duplicate, and post them to #backend.”
AI issue triage vs a stale bot.
Triage by hand and the stale workflow each cover part of the job. Here is what each one does, and doesn't, do.
| Triage by hand | actions/stale | Issue triage | |
|---|---|---|---|
| New issues with no owner | If someone reads them all | No | Counted and grouped by area |
| Duplicates | If someone remembers | No | Likely pairs, with links |
| Stale issues | Occasional sweeps | Labelled after 60 days, closed 7 later | Listed, longest untouched first |
| Changes your issues | Yes | Yes: labels, comments and closes | Never |
| Setup | An hour a week | A workflow file | One sentence |
Source: actions/stale on GitHub (default settings), checked 24 October 2026.
Is it safe to give an AI agent your GitHub issues?
It lists, searches and reads your issues and writes only one message to Slack or your inbox. Every run is recorded and has a spend ceiling by default.
Every run is recorded
Every step, in order
Every run records the tools it called, with a short preview of each result. Only the person who started a run can open its content.
Counted, never estimated
Its instructions say to page through every result and count from a written list of issue numbers.
What each run cost
Tokens and cost are recorded per run and per agent, next to your plan's limits.
A spend ceiling, on by default
Each run has a dollar ceiling unless you remove it. A run stops before it goes over it, and tells you.
It can
- List, search and read issues in the repository you name
- Post to one Slack channel you name, message you, or email you
It can't
- Label, assign or close an issue
- Comment on or edit an issue
- Mark an issue as a duplicate
- Email anyone but you
GitHub issue triage, answered.
What is GitHub issue triage?
Going through new issues to decide what each is, who owns it and whether it's already filed, and keeping old ones from rotting. Issue triage does the reading and sorting each week; deciding and applying owners stays with your team.
Does it label, assign or close issues?
No. It's given only GitHub tools that list, search and read issues. It suggests an owner area in the digest and your team applies it. It can't label, assign, comment on, edit or close anything, even if asked mid-run.
How does it count new issues?
It pages through every open issue updated in the last 7 days, keeps those opened in that window with no label and no assignee, writes the numbers out and counts that list. If a page fails, it says the count is incomplete rather than estimate.
How does it find duplicates?
It searches older open issues with key words from each new title, up to three searches, and compares the new titles with each other. It reads up to five candidates and calls a pair a likely duplicate only when both describe the same problem.
What counts as stale?
An open issue with no update in 30 days or more. It fetches the 50 longest untouched and lists the 8 oldest with their days since update and owner area. If more may exist beyond those 50, the digest says so.
How does it choose an owner area?
From the issue's title and its scope prefix, such as fix(backend), into the areas you name in the sentence. When the title doesn't say, it writes 'unclear' rather than guess.
Does it read issue bodies?
Only for duplicate candidates, at most five. Everything else comes from titles, which keeps a busy repository's weekly digest quick, and the digest notes that only titles were read.
Do I need to write code?
No. Describe the digest in one sentence. Arclyx drafts the agent, you sign in to GitHub and Slack once, and you can watch a dry run on your real repository before you create it.
Agents that work well with it.
Build your issue triage.
One sentence in, a working agent out. Join the beta and we'll set you up.
