Repository navigation
Commit 4bcdcdf
Replace retired GitHub Models triage with agentic workflows (#3629)
* Remove triage workflows that depend on GitHub Models
GitHub Models was retired on 2026-07-30. models.github.ai now returns a
plain 200 OK for every request, so the issue assessment and AI moderator
workflows fail silently while their runs report success. The moderator
action is also archived.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add agentic issue triage
Triage new and reopened issues with GitHub Agentic Workflows. The agent
checks whether the issue template was filled in, posts one assessment
comment, and can only add bug, enhancement, waiting-for-reply, invalid
or spam. Safe outputs start staged, so runs only preview their output.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add agentic pull request triage
Fork pull request runs can't use Copilot in a public repository, so an
hourly job starts one triage run per new pull request from an external
contributor, at most 20 a day. Each run can only label and comment on
its own pull request. Safe outputs start staged.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Triage pull requests when a draft is marked ready
Pull requests opened as drafts and marked ready more than seven days
later were never triaged. Find pull requests by when they became ready
instead of when they were created, and only count triage runs started
since then, so a pull request marked ready again is triaged again.
Only consider fork pull requests. Members with private org membership
can look external to the workflow token, which would have dispatched
triage for internal pull requests.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Base triage decisions on objective checks
Issue and pull request content can try to steer the agent. Decide from
template structure, placeholder text, and other observable signals,
ignore instructions in the content, and post fixed comment text that
never repeats it. Pull request triage only acts when a check fails, and
no longer flags spam, which needs reading the content's meaning.
The agents also lose shell access and are limited to the GitHub tools
they need: issue_read and search_issues, or pull_request_read.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Check pull requests in code instead of in the agent
The template checks no longer need judgment, so a job now runs them in
code and passes only the result and the failed section names to the
agent. The agent never reads pull request content and has no GitHub
tools, and it only runs when a check fails.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Limit issue triage to fixed labels and comments
The agent now reads only the issue's title and body, adds at most one of
waiting-for-reply, invalid or spam, and posts one of three fixed comments
word for word. It no longer adds type labels, which the templates already
apply, or searches for duplicates, which fed it other issues' content.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Check issues in code instead of in the agent
The issue triage rules relied on the agent following instructions, and
sent issue content, including anything sensitive, to the model. A job
now compares the issue with the templates in code, and the agent only
posts the result. Issues that partly use a template, or don't use one
and have a body, are left alone.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Ignore fence lines when checking pull request descriptions
Fence lines counted as section content, so a section with only an empty
code block passed, and any fence line toggled code mode. Skip fence
lines and only close a fence with a matching one.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Treat links to GitHub-owned domains as internal in issue triage
Only github.com and www.github.com were exempt, so an unfilled issue
that linked to gist.github.com, docs.github.com or the remote server at
api.githubcopilot.com was labeled spam. Exempt github.com,
githubcopilot.com, ghe.com and githubusercontent.com, including their
subdomains, while lookalike hosts still count as external.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Keep nested headings in their template section
Every heading started a new section, so an answer written under a
subheading, such as a ### under ## Summary or a #### under a ### issue
template section, left its template section empty and the submission
was flagged as missing details. A heading deeper than the current
template section's heading now stays part of that section, unless it's
a template heading itself.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>1 parent 4f250f5 commit 4bcdcdf
12 files changed
Lines changed: 4774 additions & 172 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
0 commit comments