This is still happening. Here are two data points, and a tested way to keep the label without a browser. Open fix PR: #24955.
How often the label is missing. On 2026-10-26 I searched the bodies of issues created since 2026-10-01 for (via|with|from|using) (npx )?t3 triage, excluding "not via" statements. This heuristic matched 141 issues, including three false positives. 68 of them currently have via-triage. Recent examples: #25488, #25419, #25307, #25161, #24998. Some of the labelled ones got the label afterwards from a maintainer (for example #22626 and #22620), so a label being there now doesn't necessarily mean it was applied at filing. In the latest 600 issues alone (back to about Oct 20), 4 of 45 have it.
A way to keep the label without opening a browser. #24955 checks the reporter's triage permission and, without it, sends them to the via-triage.yml web form. GraphQL createIssue takes issueTemplate, which GitHub documents as applying the named template's labels and assignees. In cli/cli#13589 a read-only user reports that this applied a .yml form's labels. So the agent could file directly:
| 1 | gh api graphql \ |
| 2 | -f query='mutation($repo:ID!,$title:String!,$body:String!){createIssue(input:{repositoryId:$repo,title:$title,body:$body,issueTemplate:"Triage report"}){issue{url}}}' \ |
| 3 | -f repo="$(gh api repos/pingdotgg/t3code --jq .node_id)" \ |
| 4 | -f title="..." -F body=@issue.md |
I tested this on my fork (pnupu/t3code, same via-triage.yml) using a second account that has only read access there (permissions.triage: false):
| Test | Result |
|---|---|
Read-only: GraphQL createIssue with issueTemplate: "Triage report" | Created, with via-triage applied (the timeline shows the label added by the reporter's account) |
Read-only: gh issue create --label via-triage (the current playbook path) | Created and exited 0, but with no labels: the silent drop this issue describes |
issueTemplate with a wrong template name (tested as owner) | NOT_FOUND, exit 1, nothing created |
This suggests reporters signed in to gh could file directly, without a separate triage-permission check. I tested this on the fork, not upstream. The web form could stay as a fallback.
Researched with Claude Code (Claude Opus 5.5), with numbers and claims checked by Codex (gpt-6.1-sol).