You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If a repository has an older GH_AW_GITHUB_TOKEN secret, it shadows the
automatic repository token for every trusted safe-output checkout. A stale,
expired, SSO-unapproved, or differently scoped secret then prevents checkout of
both the private control-plane repository and a public target repository.
Version
gh aw version v0.82.14
Reproduction
Use a private control-plane repository that has GH_AW_GITHUB_TOKEN configured
and targets a different public repository:
The generated safe-output checkout uses GH_AW_GITHUB_TOKEN ahead of the
automatic token. In our repository that secret was last updated months earlier;
both mirrored checkouts fail:
fatal: could not read Username for 'https://github.com/': terminal prompts disabled
The activation, agent, and threat-detection paths completed far enough to
produce and approve a patch. Safe outputs could not apply it.
Expected result
The trusted safe-output checkout of the workflow repository should use ${{ github.token }} by default. Authentication used for target-repository
writes should remain separately configurable through safe-outputs.github-app/per-output tokens.
At minimum, the generated workflow should make the selected checkout credential
explicit enough to diagnose and override without replacing the write credential
or manually editing the lock file.
This also appears inconsistent with the checkout documentation, which states
that the safe-output job uses GITHUB_TOKEN for checkout and the safe-outputs.github-app governs PR/push operations rather than control-plane
checkout.
Security relevance
The current precedence encourages a single long-lived token to cover both the
private control plane and public write targets. Separating checkout and output
credentials avoids broadening either token.
Resolved as repository configuration rather than a gh-aw defect.
The control-plane repository already documented GH_AW_GITHUB_TOKEN as a
retired PAT that was safe to delete after migration to Key Vault-backed GitHub
App credentials. The stale secret remained configured and therefore shadowed
the automatic repository token in gh-aw's fallback expression.
After deleting only GH_AW_GITHUB_TOKEN, the same branch and workflow completed
end-to-end:
Activity
[-]safe-outputs: checkout fallback uses empty secrets.GITHUB_TOKEN[/-][+]safe-outputs: configured GH_AW_GITHUB_TOKEN shadows checkout token[/+]bryanchen-d commentedon Jul 22, 2026
Resolved as repository configuration rather than a gh-aw defect.
The control-plane repository already documented
GH_AW_GITHUB_TOKENas aretired PAT that was safe to delete after migration to Key Vault-backed GitHub
App credentials. The stale secret remained configured and therefore shadowed
the automatic repository token in gh-aw's fallback expression.
After deleting only
GH_AW_GITHUB_TOKEN, the same branch and workflow completedend-to-end:
https://github.com/microsoft/vscode-engineering/actions/runs/29938666136
All jobs passed, including both mirrored checkouts, safe-output processing,
public PR creation, labeling, and assignment. Closing this report.
[community] Update community contributions in README
[community] Update community contributions in README
[community] Update community contributions in README