Add AI/Copilot disclaimer footer to all agentic workflows#8959
Conversation
Adds a clear safe-outputs.messages.footer to every gh-aw workflow that posts user-visible content (issues, PRs, review comments, discussion comments). The footer makes it explicit that the content is produced by GitHub Copilot and only appears under the token owner's GitHub account because the workflows authenticate with a maintainer's personal access token — the apparent author did not write or approve the content personally. Footer template (override of the gh-aw default attribution line): > 🤖 **Automated content by GitHub Copilot.** Posted via a maintainer's > GitHub token, so it appears under their account — the account owner did > **not** write or approve this content personally. Generated by the > [<workflow>](<run-url>) workflow.<credits> · [◷](<history>) Wording mirrors the existing "Copilot Attribution Banner" already in use by .github/agents/expert-reviewer.agent.md so that the messaging stays consistent. Applied to: - 27 top-level workflow .md files under .github/workflows - 4 shared imports under .github/workflows/shared All .lock.yml files have been regenerated via gh aw compile --strict. The lock files also pick up an unrelated gh-aw version bump from v0.75.4 → v0.76.1 because that is the version installed on the maintainer's machine — those side-effect updates (container image tags, gh-aw-actions/setup pin, sparse-checkout entry) would land on the next compile regardless and are not produced by this change directly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the repo’s agentic GitHub Actions workflows (gh-aw) to consistently disclose when user-visible content (issues/PRs/comments/discussions) is authored by GitHub Copilot but posted using a maintainer-owned token. It does this by setting safe-outputs.messages.footer across workflow sources and regenerating the corresponding compiled *.lock.yml outputs.
Changes:
- Added a standardized Copilot disclosure footer via
safe-outputs.messages.footeracross agentic workflow sources (including shared imports). - Regenerated affected
*.lock.ymlfiles withgh aw compile --strict, picking up compiler/version side-effects (e.g., container tags, pinned action SHAs, generated env/config blocks). - Updated generated routing/maintenance artifacts (
agentic_commands.yml,agentics-maintenance.yml) and action pin manifest (.github/aw/actions-lock.json) to reflect the new compile outputs.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/weekly-issue-activity.md | Adds safe-outputs.messages.footer disclosure to weekly issue summary workflow source. |
| .github/workflows/weekly-issue-activity.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/test-improver.md | Adds safe-outputs.messages.footer disclosure to test improver workflow source. |
| .github/workflows/test-improver.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/sub-issue-closer.md | Adds safe-outputs.messages.footer disclosure to sub-issue closer workflow source. |
| .github/workflows/sub-issue-closer.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer and compile-version updates. |
| .github/workflows/shared/review-shared.md | Adds footer disclosure in shared review import so review workflows inherit consistent attribution. |
| .github/workflows/shared/msbuild-review-shared.md | Adds footer disclosure in shared MSBuild review import. |
| .github/workflows/shared/grade-tests-shared.md | Adds footer disclosure in shared grade-tests import. |
| .github/workflows/shared/address-review-shared.md | Adds footer disclosure in shared address-review import. |
| .github/workflows/review.agent.md | Adds footer disclosure for /review-triggered expert review workflow. |
| .github/workflows/review-on-open.agent.md | Adds footer disclosure for “review on PR open” workflow. |
| .github/workflows/review-after-autofix.agent.md | Adds footer disclosure for post-autofix re-review workflow. |
| .github/workflows/repository-quality-improver.md | Adds footer disclosure for repo-quality improver workflow source. |
| .github/workflows/repository-quality-improver.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/pr-fix.md | Adds footer disclosure for PR-fix workflow source. |
| .github/workflows/perf-improver.md | Adds footer disclosure for perf improver workflow source. |
| .github/workflows/perf-improver.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/markdown-linter.md | Adds footer disclosure for markdown linter workflow source. |
| .github/workflows/malicious-code-scan.md | Adds footer disclosure for malicious-code-scan workflow source. |
| .github/workflows/malicious-code-scan.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/link-checker.md | Adds footer disclosure for link-checker workflow source. |
| .github/workflows/link-checker.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/grade-tests.agent.md | Adds footer disclosure for /grade-tests workflow source. |
| .github/workflows/grade-tests.agent.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/grade-tests-on-pr.agent.md | Adds footer disclosure for “grade tests on PR open/sync” workflow source. |
| .github/workflows/grade-tests-on-pr.agent.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/glossary-maintainer.md | Adds footer disclosure for glossary maintainer workflow source. |
| .github/workflows/glossary-maintainer.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/efficiency-improver.md | Adds footer disclosure for efficiency improver workflow source. |
| .github/workflows/efficiency-improver.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/duplicate-code-detector.md | Adds footer disclosure for duplicate code detector workflow source. |
| .github/workflows/duplicate-code-detector.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/dependabot-pr-bundler.md | Adds footer disclosure for Dependabot PR bundler workflow source. |
| .github/workflows/dependabot-issue-bundler.md | Adds footer disclosure for Dependabot issue bundler workflow source. |
| .github/workflows/daily-file-diet.md | Adds footer disclosure for daily file diet workflow source. |
| .github/workflows/code-simplifier.md | Adds footer disclosure for code simplifier workflow source. |
| .github/workflows/build-failure-analysis.md | Adds footer disclosure for build-failure-analysis workflow source. |
| .github/workflows/build-failure-analysis.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/build-failure-analysis-command.md | Adds footer disclosure for build-failure-analysis command workflow source. |
| .github/workflows/build-failure-analysis-command.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/autofix.agent.md | Adds footer disclosure for /autofix workflow source. |
| .github/workflows/address-review.agent.md | Adds footer disclosure for address-review workflow source. |
| .github/workflows/add-tests.md | Adds footer disclosure for add-tests workflow source. |
| .github/workflows/adhoc-qa.md | Adds footer disclosure for adhoc QA workflow source. |
| .github/workflows/adhoc-qa.lock.yml | Regenerated compiled workflow; includes GH_AW_SAFE_OUTPUT_MESSAGES with the new footer. |
| .github/workflows/agentics-maintenance.yml | Updates generated maintenance workflow to newer compile version/pins. |
| .github/workflows/agentic_commands.yml | Updates generated slash-command routing payload (includes /grade-tests routing). |
| .github/aw/actions-lock.json | Adds an explicit pin entry for actions/checkout@v6 used by regenerated lock workflows. |
Copilot's findings
- Files reviewed: 62/62 changed files
- Comments generated: 0
Evangelink
left a comment
There was a problem hiding this comment.
Note
🤖 Automated review by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.
Expert Review — PR #8959: Add AI/Copilot disclaimer footer to all agentic workflows
This is a retrospective review (PR already merged). The analysis covers all 22 review dimensions.
Dimension Verdicts
| # | Dimension | Severity | Verdict |
|---|---|---|---|
| 1 | Algorithmic Correctness | MAJOR | N/A — no code logic |
| 2 | Threading & Concurrency | BLOCKING | N/A — no code changes |
| 3 | Security & IPC Contract Safety | BLOCKING | N/A — no code changes; SHA pinning in lock files is correct |
| 4 | Public API & Binary Compatibility | BLOCKING | N/A — no C# changes |
| 5 | Performance & Allocations | MAJOR | N/A |
| 6 | Cross-TFM Compatibility | MAJOR | N/A |
| 7 | Resource & IDisposable Management | MAJOR | N/A |
| 8 | Defensive Coding at Boundaries | MAJOR | N/A |
| 9 | Localization & Resources | MAJOR | N/A |
| 10 | Test Isolation | MAJOR | N/A |
| 11 | Assertion Quality | MAJOR | N/A |
| 12 | Flakiness Patterns | BLOCKING | N/A |
| 13 | Test Completeness & Coverage | MAJOR | N/A |
| 14 | Data-Driven Test Coverage | MODERATE | N/A |
| 15 | Code Structure & Simplification | MODERATE | N/A |
| 16 | Naming & Conventions | NIT | N/A |
| 17 | Documentation Accuracy | NIT | LGTM |
| 18 | Analyzer & Code Fix Quality | MAJOR | N/A |
| 19 | IPC Wire Compatibility | MAJOR | N/A |
| 20 | Build Infrastructure & Dependencies | MODERATE | ISSUE |
| 21 | Scope & PR Discipline | MODERATE | ISSUE |
| 22 | PowerShell Scripting Hygiene | MAJOR | N/A |
Dimension 17 — Documentation Accuracy — LGTM
The footer uses "Automated content" while the expert-reviewer.agent.md attribution banner uses "Automated review". This intentional differentiation is consistent with the PR description's goal of using more general wording for the footer (which covers all workflow output types, not just code reviews). The two phrases are complementary: banners at the top of review bodies remain review-specific, while footers appended to any safe-output type use the broader "content" label.
The {workflow_name}, {agentic_workflow_url}, {ai_credits_suffix}, and {history_link} template placeholders are consistent with the gh-aw safe-outputs runtime expansion API.
Dimension 20 — Build Infrastructure & Dependencies — ISSUE
SEVERITY: MODERATE
Finding 1: Footer defined redundantly in both parent workflows and their shared imports
For the review-family, grade-tests-family, and address-review-family workflows, the safe-outputs.messages.footer is now defined in both the parent .md file and the imported shared/*.md file. For example:
review.agent.md(line 20–21) defines the footer and importsshared/review-shared.md(line 22–23) which also defines the same footer.- Same pattern in:
review-on-open.agent.md,review-after-autofix.agent.md,grade-tests.agent.md,grade-tests-on-pr.agent.md,address-review.agent.md.
The strings are identical and since the parent's definition takes precedence in gh-aw import merging, the behavior is correct. However, this creates a dual-maintenance burden: a future wording change to the footer requires updates in both the parent .md files and the shared imports.
Recommendation: Establish a clear convention — either (a) keep the footer only in the shared imports and remove it from parent workflows that delegate to them, relying on import inheritance; or (b) keep it only in parent workflows and remove it from shared files. Convention (a) is preferable if import merging reliably preserves messages.footer (unlike noop.report-as-issue, which needs explicit consumer redefinition per the comment in msbuild-review-shared.md). Whichever convention is chosen, document it in a comment in the shared files.
Finding 2: actions/checkout@v6 resolves to a different SHA than @v6.0.2
The actions-lock.json now contains a new entry for actions/checkout@v6 (SHA df4cb1c...) alongside the existing @v6.0.2 entry (SHA de0fac2...). These diverge because v6 is a floating major-version tag and a newer v6.x patch was released between the two lock-file compilations. This is a pre-existing pattern in build-failure-analysis.md (which uses actions/checkout@v6 for the PR-branch checkout step), properly pinned to a SHA by gh aw compile --strict. No action needed, but worth noting that the build-failure-analysis.md source could be hardened by pinning to @v6.0.2 (or whichever specific release is intended) to avoid silent SHA drift on the next recompile.
Dimension 21 — Scope & PR Discipline — ISSUE
SEVERITY: MODERATE
The PR bundles three distinct concerns into a single change:
- Primary:
safe-outputs.messages.footeradded to 27 top-level + 4 shared workflow.mdfiles. - Incidental: gh-aw compiler version bump v0.75.4 → v0.76.1 in all lock files (container tags
0.25.53 → 0.25.55, mcpgv0.3.18 → v0.3.19,gh-aw-actions/setupSHA bump). - Incidental: Addition of
/grade-testsslash command toagentic_commands.yml(auto-registered by the v0.76.1 compiler).
The PR description clearly acknowledges and explains items 2 and 3 as unavoidable side effects of using a different local compiler version. This is an acceptable trade-off given that gh-aw compiler bumps are idempotent and the lock files carry the DO NOT EDIT header.
For future PRs of this kind, consider: if the compiler version differs from what's in CI, pre-stage the lock file regeneration as a separate commit (or PR) to keep the disclaimer change isolated. This makes the disclaimer diff easier to audit and reduces reviewer cognitive load.
Overall Verdict
No blocking or major issues. The core change — adding safe-outputs.messages.footer to all user-visible agentic workflows — is correctly implemented. Coverage is complete: all 27 top-level workflows and 4 shared imports now carry the disclaimer, and workflows without their own safe-outputs section (e.g., msbuild-quality-review.md) correctly inherit it via their shared import. Lock files are properly regenerated in strict mode with SHA-pinned actions and containers.
The two MODERATE findings above are informational for future PR discipline and maintainability; neither warrants a follow-up change given the PR is already merged and the behavior is correct.
🤖 Automated content by GitHub Copilot. Posted via a maintainer's GitHub token, so it appears under their account — the account owner did not write or approve this content personally. Generated by the Expert Code Review (on PR ready) workflow.{ai_credits_suffix} · ◷
Adds a clear AI/Copilot disclaimer footer to every gh-aw agentic workflow that posts user-visible content (issues, PRs, review comments, discussion comments). Today, all of these post under my GitHub identity because the workflows authenticate with my personal access token — there is nothing in the post that hints the content was actually written by Copilot, not by me.
This sets safe-outputs.messages.footer on every workflow source .md to override the gh-aw default attribution line with a clearer disclosure.
Rendered footer
The wording deliberately mirrors the existing Copilot Attribution Banner that
.github/agents/expert-reviewer.agent.mdalready prepends to PR reviews, so the messaging stays consistent across top-of-body banners and end-of-body footers.Scope
.mdfiles under.github/workflows.github/workflows/sharedAll
*.lock.ymlwere regenerated viagh aw compile --strict(0 errors, 0 warnings).Note on extra lock-file noise
The
.lock.ymldiffs are larger than the source.mddiffs because my locally installed gh-aw is v0.76.1 while the lock files were last regenerated against v0.75.4. The compile therefore also bumped a handful of side-effect fields (container image tagsv0.25.53 → v0.25.55,mcpg v0.3.18 → v0.3.19,gh-aw-actions/setupSHA,.antigravityadded tosparse-checkout,grade-testsslash-command added toagentic_commands.yml). These would land on the next compile anyway and are not produced by the disclaimer change itself.Out of scope
The manual Copilot Attribution Banner inside
.github/agents/expert-reviewer.agent.mdis left intact — it sits at the top of review bodies, complementing this bottom footer. Happy to revisit if you'd rather drop one of the two.