Configure a shared gh-aw Copilot model variable for dotnet/sdk workflows
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 65/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- github-actions
- Domain
- ci-cd
Research direction
Inspect .github/workflows/issue-triage.lock.yml and .github/workflows/add-tactics-template-on-comment.lock.yml, then check the repository Actions variables and whether org-level access is available. Configure the supported GH_AW_DEFAULT_MODEL_COPILOT value, manually dispatch issue-triage.lock.yml, and confirm the run passes Copilot model validation without adding a source-workflow model override.
Written by the indexing model from the issue text.
Description
Summary
The dotnet/sdk gh-aw workflows already support shared model selection through GitHub Actions variables, but the repository does not currently appear to define one. We should configure a repo-level or org-level model variable instead of hardcoding a model in individual workflow source files.
Recommended starting point:
GH_AW_DEFAULT_MODEL_COPILOT=any
If we need separate behavior by phase, gh-aw also supports:
GH_AW_MODEL_AGENT_COPILOT=<agent model alias>
GH_AW_MODEL_DETECTION_COPILOT=<detection model alias>
Why
Recent PR feedback on dotnet/sdk#55244 pointed out that hardcoding a model in a workflow source file creates churn and cost/availability risk when supported model names change. The generated gh-aw lock files already provide a better central control point via Actions variables, so model selection should happen through repo/org configuration.
This lets us share one model choice across the gh-aw workflows without repeatedly editing workflow YAML.
Current evidence
The checked-in gh-aw source workflow for issue triage uses only:
engine: copilot
The generated locks already read model configuration from variables:
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || vars.GH_AW_DEFAULT_MODEL_COPILOT || 'claude-sonnet-4.6' }}
and for detection:
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_DETECTION_COPILOT || vars.GH_AW_DEFAULT_MODEL_COPILOT || 'claude-sonnet-4.6' }}
These are present in both current gh-aw lock files:
.github/workflows/issue-triage.lock.yml.github/workflows/add-tactics-template-on-comment.lock.yml
Repository variable check for dotnet/sdk found only these Copilot-related variables:
COPILOT_AGENT_FIREWALL_ALLOW_LIST_ADDITIONS=vsblob.vsassets.io
COPILOT_AGENT_FIREWALL_ENABLED=true
No repo-level GH_AW_DEFAULT_MODEL_COPILOT, GH_AW_MODEL_AGENT_COPILOT, or GH_AW_MODEL_DETECTION_COPILOT was found. I could not inspect dotnet org-level variables because GitHub returned HTTP 403 for org Actions variables.
Empirical model results
The current locked gh-aw runtime for issue-triage.lock.yml is:
gh-aw compiler: v0.81.6
Copilot CLI: 1.0.65
AWF/firewall: 0.27.11
The lock's model map includes these agent aliases:
sonnet-6x
gpt-5.5
gpt-5.4
gpt-5.3
gemini-pro
any
It does not include gpt-5.6, gpt-5.6-luna, or luna.
Observed failures:
[ERROR] Error: model 'gpt-5.6-luna?effort=high' is retired or unsupported.
and in a follow-up variable-based test on nagilson/sdk run 29605842281:
COPILOT_MODEL: gpt-5.5?effort=high
[ERROR] Error: model 'gpt-5.5?effort=high' is retired or unsupported.
The temporary fork variable used for that test was removed afterward.
Important distinction: the model alias spec supports URL-style parameters like ?effort=high, but this locked runtime still rejected the full gpt-5.5?effort=high string. The current repo should therefore prefer a supported alias without parameters unless/until the locked gh-aw/AWF version is updated and validated.
Proposed change
Configure one shared Actions variable for gh-aw model selection:
GH_AW_DEFAULT_MODEL_COPILOT=any
Alternative if we want to pin only the agent phase while leaving detection at the generated default:
GH_AW_MODEL_AGENT_COPILOT=any
Avoid adding model: to individual gh-aw source files unless there is a workflow-specific requirement.
Acceptance criteria
dotnet/sdkhas a repo-level or org-level gh-aw model variable configured.- Existing gh-aw workflows continue to compile from source without hardcoded model churn.
- A manually dispatched
issue-triage.lock.ymlrun succeeds past the Copilot CLI model validation step. - The selected value is one of the aliases supported by the checked-in lock/runtime, such as
any, unless a newer gh-aw/AWF lock is generated and validated.
Follow-up considerations
- If the org wants this across multiple dotnet repositories, prefer an org-level variable over per-repo variables.
- Native GitHub Copilot PR reviews do not appear to use these gh-aw variables from this repository. This issue is specifically about gh-aw workflows.
- Custom checked-in agents may still have independent model fields, for example
.github/agents/static-web-assets-agent.agent.mdcurrently declares its own model.
- Dominant language
- C#
- Stars
- 3.2k
- Forks
- 1.3k
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 247
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/sdk
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Re-enable ItCanTestAMultiTFMProjectWithImplicitRestore after MSBuild revert (msbuild#14349) flows in Openuntriaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Area-dotnetup untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Area-dotnetup Priority:1
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Similar issues
-
type/automation type/tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
t/bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
ci-failure-cause test-failure
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
area:auth FE mvp P3
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
klasolsson81/jobbliggaren#1788 ·