Enable Actions token-based Copilot inference and document accepted IMF secret warning in news workflows#3013
Conversation
🏷️ Automatic Labeling SummaryThis PR has been automatically labeled based on the files changed and PR metadata. Applied Labels: size-xs Label Categories
For more information, see |
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
…F warning Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
There was a problem hiding this comment.
Pull request overview
This PR updates the 14 news-*.md agentic workflows to enable GitHub Actions token-based Copilot inference (removing the need for a PAT-based COPILOT_GITHUB_TOKEN secret in compiled workflows) and documents the intentionally accepted gh aw compile warning related to forwarding IMF_SDMX_SUBSCRIPTION_KEY into the agent job.
Changes:
- Add
permissions.copilot-requests: writeacross allnews-*.mdworkflows to support Actions token-based Copilot inference. - Regenerate the 14 compiled
news-*.lock.ymlworkflows soCOPILOT_GITHUB_TOKENis sourced from${{ github.token }}and PAT secret validation/redaction wiring is removed. - Extend
.github/workflows/README.mdwith an “Accepted compile warnings” section explaining and justifying the IMF secret warning.
Reviewed changes
Copilot reviewed 29 out of 29 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/README.md | Documents the added copilot-requests: write permission and adds rationale for the accepted IMF secret compile warning. |
| .github/workflows/news-committee-reports.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-election-cycle.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-evening-analysis.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-interpellations.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-month-ahead.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-monthly-review.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-motions.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-propositions.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-quarter-ahead.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-realtime-monitor.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-translate.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-week-ahead.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-weekly-review.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-year-ahead.md | Adds copilot-requests: write to enable Actions token-based Copilot inference. |
| .github/workflows/news-committee-reports.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-election-cycle.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-evening-analysis.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-interpellations.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-month-ahead.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-monthly-review.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-motions.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-propositions.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-quarter-ahead.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-realtime-monitor.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-translate.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-week-ahead.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-weekly-review.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| .github/workflows/news-year-ahead.lock.yml | Regenerated output: switches Copilot auth to ${{ github.token }} and reflects new permissions/redaction wiring. |
| | `safe-outputs.create-pull-request.if-no-changes` | `warn` | Empty patches emit a warning instead of failing the run (e.g. duplicate-date dispatches) | | ||
| | `network.allowed` | `node`, `github`, `defaults` + explicit Docker Hub hosts (`docker.io`, `registry-1.docker.io`, `auth.docker.io`, `production.cloudflare.docker.com`) + IMF/SCB/Riksdag/Statskontoret/site domains | Ecosystem identifiers preferred per upstream `network.md`. The broad `containers` ecosystem (which would also permit `ghcr.io`, `quay.io`, `gcr.io`, `mcr.microsoft.com`, `pkgs.k8s.io`, …) is **deliberately omitted** to keep least-privilege egress; only the minimal Docker Hub hosts actually required to resolve `node:26-alpine` for the SCB and World Bank MCP servers are enumerated. Any future switch to `ghcr.io`, `quay.io`, or other registries must add the specific hosts and be reviewed against the egress allowlist policy before merge. | | ||
| | `permissions` | `contents: read`, `issues: read`, `pull-requests: read`, `actions: read`, `discussions: read`, `security-events: read` | Least-privilege agent token; write capabilities live exclusively in the safe-outputs runner job | | ||
| | `permissions` | `contents: read`, `issues: read`, `pull-requests: read`, `actions: read`, `discussions: read`, `security-events: read`, `copilot-requests: write` | Least-privilege agent token; write capabilities live exclusively in the safe-outputs runner job. `copilot-requests: write` enables **GitHub Actions token-based Copilot inference** (`COPILOT_GITHUB_TOKEN: ${{ github.token }}` in the compiled lock file) so the Copilot engine no longer needs a personal-access-token secret. Requires org-level centralized Copilot billing — see [gh-aw billing reference](https://github.github.com/gh-aw/reference/billing/). | |
gh aw compileproduced two classes of noise across the 14news-*.mdagentic workflows: an info tip recommendingpermissions.copilot-requests: write, and one advisory warning per file about${{ secrets.IMF_SDMX_SUBSCRIPTION_KEY }}appearing in thesteps:section. The first is actionable; the second is intentional design (the agent makes live authenticated IMF SDMX calls) and is accepted (Option A) rather than re-architected.Permissions —
copilot-requests: writecopilot-requests: writeto thepermissions:block of all 14news-*.mdworkflows.gh aw compile --purge; compiled lock files now useCOPILOT_GITHUB_TOKEN: ${{ github.token }}(Actions token-based inference) instead of a PAT, and the info tip is gone.Documentation — accepted IMF warning (Option A)
.github/workflows/README.mdcovering why theIMF_SDMX_SUBSCRIPTION_KEY-in-steps:warning is expected (agent runs liveimf-fetch.ts sdmxcalls), why it is safe (::add-mask::+GH_AW_SECRET_NAMESredaction), whystrict: trueis not viable (forbids the custom MCP egress domain / write perms / bash wildcards), and the Option-C path for a zero-secrets-in-agent posture.copilot-requests: writewith the billing caveat.Notes
0 error(s))..mdsources via--purge— none were hand-edited.