Add agentic workflow for automated issue triage - #4177
Merged
mdaigle merged 7 commits intoMay 12, 2026
Conversation
Introduces a GitHub Agentic Workflow (gh-aw) that automatically triages new issues using Copilot. The workflow: - Classifies issue type (Bug/Feature/Question/Task) - Validates environment details for bugs - Assigns area labels based on issue content - Searches for duplicate issues in the repo - Checks for regressions - Posts a single consolidated triage summary comment - Assigns Copilot coding agent for confirmed bugs with complete info Files added: - .github/workflows/issue-triage.md (workflow definition) - .github/workflows/issue-triage.lock.yml (compiled Actions YAML) - .github/aw/actions-lock.json (pinned action versions)
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a GitHub Agentic Workflow (gh-aw) for automated issue triage in the SqlClient repo, using a Copilot-powered agent plus a privileged “safe-outputs” executor job.
Changes:
- Added an agent-authored workflow definition (
issue-triage.md) describing triage logic and safe-output constraints. - Added the compiled/locked GitHub Actions workflow (
issue-triage.lock.yml) generated bygh aw compile. - Added an action lockfile (
.github/aw/actions-lock.json) pinning action SHAs.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 7 comments.
| File | Description |
|---|---|
| .github/workflows/issue-triage.md | Defines the agent prompt, triage steps, and safe-output configuration for labeling/commenting/assignment. |
| .github/workflows/issue-triage.lock.yml | Auto-generated compiled Actions workflow that executes the agent + safe-outputs pipeline. |
| .github/aw/actions-lock.json | Pins action versions used by the compiled workflow. |
…s, fix Bug classification wording, fix Needs More Info label format
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
.github/workflows/issue-triage.md:130
- This file says the workflow always reads the issue, applies labels, and posts one summary comment, but later suggests calling
noopwhen “no action is needed”. As written, it’s ambiguous whethernoopshould replace the labeling/comment steps or be in addition to them, which could lead to either missing triage output or emitting conflicting safe-outputs. Please clarify the control flow (e.g., ifnoopis used, explicitly say to skipadd_labels/add_comment, or removenoopif a comment is always required).
**Finally**: If this is a confirmed code bug with complete environment info,
call `assign_to_agent` to assign Copilot coding agent.
If the issue is spam or no action is needed, call the `noop` tool instead.
mdaigle
requested changes
Apr 15, 2026
mdaigle
approved these changes
Apr 23, 2026
cheenamalhotra
approved these changes
Apr 24, 2026
cheenamalhotra
pushed a commit
that referenced
this pull request
Jul 14, 2026
* Add agentic workflow for automated issue triage Introduces a GitHub Agentic Workflow (gh-aw) that automatically triages new issues using Copilot. The workflow: - Classifies issue type (Bug/Feature/Question/Task) - Validates environment details for bugs - Assigns area labels based on issue content - Searches for duplicate issues in the repo - Checks for regressions - Posts a single consolidated triage summary comment - Assigns Copilot coding agent for confirmed bugs with complete info Files added: - .github/workflows/issue-triage.md (workflow definition) - .github/workflows/issue-triage.lock.yml (compiled Actions YAML) - .github/aw/actions-lock.json (pinned action versions) * Align triage label names with issue template conventions * Constrain to single area label to stay within max:5 safe-outputs limit * Address PR review: roles:all, min-integrity:none, explicit permissions, fix Bug classification wording, fix Needs More Info label format * Recompile triage workflow with gh-aw v0.68.1 (MCP gateway v0.2.17, AWF v0.25.18) * Update issue-triage: add Required Context, Phase 2 assign-to-agent, AI disclaimer * Fix label name: align 'Triage Needed 🆕' with repo convention
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a GitHub Agentic Workflow (gh-aw) that automatically triages new issues using Copilot.
What it does
When a new issue is opened, the workflow:
Phase 1 (this PR):
Area\Async,Area\Connection Pooling,Area\Managed SNI)repo:dotnet/SqlClientfor similar issuesPhase 2 (future):
7. Assigns Copilot coding agent — for confirmed bugs with complete environment info. The
assign-to-agentsafe-output is commented out in the workflow and can be re-enabled when the team is ready to enable automatic agent assignment.Files added
1.
.github/workflows/issue-triage.md— Workflow DefinitionThis is the only file that needs to be maintained. It contains:
issues: opened), the AI engine (copilot), and safety limits (max 1 comment, max 5 labels).This file is written in plain Markdown because GitHub Agentic Workflows use an LLM (Copilot) to interpret instructions, unlike traditional YAML workflows that use scripted steps. When changes to the triage logic are needed (e.g. adding a new area label, changing the comment format), only this file is edited, then recompiled.
2.
.github/workflows/issue-triage.lock.yml— Compiled Actions YAML (~61KB)This is the auto-generated GitHub Actions workflow file produced by running
gh aw compile issue-triage.md. It is what GitHub Actions actually executes when triggered. It contains:issue-triage.mdembedded as runtime importsThis file should never be edited manually. It is regenerated every time
issue-triage.mdis compiled. The edit-compile-push cycle is: edit.md→ rungh aw compile→ commit both files → push.3.
.github/aw/actions-lock.json— Pinned Action VersionsThis is a lockfile generated by
gh aw compilethat pins the exact versions of the GitHub Actions used by the agentic workflow runtime. Similar topackage-lock.jsonin Node.js orCargo.lockin Rust, it ensures the workflow uses the same action versions on every run, preventing unexpected behavior from upstream action updates.This file should never be edited manually. It is regenerated automatically during compilation.
Architecture
The workflow uses the safe-outputs pattern:
This ensures the AI agent never has direct write access to the repository.
Safety limits configured
add-comment: max: 1— at most 1 comment per issueadd-labels: max: 5— at most 5 labels per issuehide-older-comments: true— collapses previous triage comments if re-triggeredPrerequisites (post-merge)
Phase 1 — Auto-Triage (required now)
The following setup is required by a repo admin after merging:
Set agentic workflow secret:
Create missing label (does not exist yet on this repo):
Triage Needed :new:— applied to all new issuesEnsure gh-aw is enabled for the dotnet org / SqlClient repo
Labels that already exist and are used by this workflow (no action needed):
Needs More Info :information_source:Repro Available :heavy_check_mark:Regression :boom:Area\*labelsPhase 2 — Copilot Coding Agent Assignment (deferred)
When the team is ready to enable automatic agent assignment for confirmed bugs:
Set agent assignment secret:
Uncomment
assign-to-agentinissue-triage.mdfrontmatter and body, then recompile:Tested on
This workflow was developed and tested on priyankatiwari08/SqlClient-test-prtiwar with multiple test issues covering:
Needs More Infolabel