From 24114bebcf81f6a8397ed612e8d2ce409c9bd78e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:13:34 +0000 Subject: [PATCH 1/6] Initial plan From fd96eebcae225bafe2d5878700bad49f99877209 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:21:03 +0000 Subject: [PATCH 2/6] Document footer: false feature in safe-outputs Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../content/docs/reference/safe-outputs.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/docs/src/content/docs/reference/safe-outputs.md b/docs/src/content/docs/reference/safe-outputs.md index 32b548d582..3122e4bbc6 100644 --- a/docs/src/content/docs/reference/safe-outputs.md +++ b/docs/src/content/docs/reference/safe-outputs.md @@ -98,9 +98,13 @@ safe-outputs: expires: 7 # auto-close after 7 days (or false to disable) group: true # group as sub-issues under parent close-older-issues: true # close previous issues from same workflow + footer: false # hide AI-generated footer (default: true) target-repo: "owner/repo" # cross-repository ``` +> [!TIP] +> Use `footer: false` to omit the AI-generated footer while preserving workflow-id markers for searchability. See [Footer Control](#footer-control-footer) for details. + #### Auto-Expiration The `expires` field auto-closes issues after a time period. Supports integers (days), relative formats (`2h`, `7d`, `2w`, `1m`, `1y`), or `false` to disable expiration. Generates `agentics-maintenance.yml` workflow that runs at the minimum required frequency based on the shortest expiration time across all workflows: @@ -341,11 +345,15 @@ safe-outputs: status: # enable status updates title: # enable title updates body: # enable body updates + footer: false # hide AI-generated footer (default: true) max: 3 # max updates (default: 1) target: "*" # "triggering" (default), "*", or number target-repo: "owner/repo" # cross-repository ``` +> [!NOTE] +> The `footer` field only applies when body updates are enabled. XML markers for searchability are preserved even with `footer: false`. + **Target**: `"triggering"` (requires issue event), `"*"` (any issue), or number (specific issue). When using `target: "*"`, the agent must provide `issue_number` or `item_number` in the output to identify which issue to update. @@ -367,11 +375,15 @@ safe-outputs: update-pull-request: title: true # enable title updates (default: true) body: true # enable body updates (default: true) + footer: false # hide AI-generated footer (default: true) max: 1 # max updates (default: 1) target: "*" # "triggering" (default), "*", or number target-repo: "owner/repo" # cross-repository ``` +> [!NOTE] +> The `footer` field only applies when body updates are enabled. + **Target**: `"triggering"` (requires PR event), `"*"` (any PR), or number (specific PR). When using `target: "*"`, the agent must provide `pull_request_number` in the output to identify which pull request to update. @@ -635,6 +647,7 @@ safe-outputs: reviewers: [user1, copilot] # reviewers (use 'copilot' for bot) draft: true # create as draft (default: true) expires: 14 # auto-close after 14 days (same-repo only) + footer: false # hide AI-generated footer (default: true) if-no-changes: "warn" # "warn" (default), "error", or "ignore" target-repo: "owner/repo" # cross-repository base-branch: "vnext" # target branch for PR (default: github.ref_name) @@ -724,6 +737,7 @@ Updates GitHub release descriptions: replace (complete replacement), append (add ```yaml wrap safe-outputs: update-release: + footer: false # hide AI-generated footer (default: true) max: 1 # max releases (default: 1, max: 10) target-repo: "owner/repo" # cross-repository github-token: ${{ secrets.CUSTOM_TOKEN }} # custom token @@ -832,6 +846,7 @@ safe-outputs: title-prefix: "[ai] " # prefix for titles category: "general" # category slug, name, or ID (use lowercase) expires: 3 # auto-close after 3 days (or false to disable) + footer: false # hide AI-generated footer (default: true) max: 3 # max discussions (default: 1) target-repo: "owner/repo" # cross-repository fallback-to-issue: true # fallback to issue creation on permission errors (default: true) @@ -888,6 +903,7 @@ safe-outputs: update-discussion: title: # enable title updates body: # enable body updates + footer: false # hide AI-generated footer (default: true) labels: # enable label updates allowed-labels: [bug, idea] # restrict to specific labels max: 1 # max updates (default: 1) @@ -895,6 +911,9 @@ safe-outputs: target-repo: "owner/repo" # cross-repository ``` +> [!NOTE] +> The `footer` field only applies when body updates are enabled. + **Field Enablement**: Include `title:`, `body:`, or `labels:` keys to enable updates for those fields. Without these keys, the field cannot be updated. Setting `allowed-labels` implicitly enables label updates. **Target**: `"triggering"` (requires discussion event), `"*"` (any discussion), or number (specific discussion). @@ -1366,6 +1385,99 @@ See: - [Projects & Monitoring](/gh-aw/patterns/monitoring/) - [Orchestration](/gh-aw/patterns/orchestration/) +## Footer Control (`footer:`) + +Control whether AI-generated footers are added to created and updated GitHub items (issues, pull requests, discussions, releases). Footers provide attribution and links to workflow runs, but you may want to omit them for cleaner content or when using custom branding. + +### Global Footer Control + +Set `footer: false` at the safe-outputs level to hide footers for all output types: + +```yaml wrap +safe-outputs: + footer: false # hide footers globally + create-issue: + title-prefix: "[ai] " + create-pull-request: + title-prefix: "[ai] " +``` + +When `footer: false` is set: +- **Visible footer content is omitted** - No AI-generated attribution text appears in the item body +- **XML markers are preserved** - Hidden workflow-id and tracker-id markers remain for searchability +- **All safe output types affected** - Applies to create-issue, create-pull-request, create-discussion, update-issue, update-discussion, and update-release + +### Per-Handler Footer Control + +Override the global setting for specific output types by setting `footer` at the handler level: + +```yaml wrap +safe-outputs: + footer: false # global default: no footers + create-issue: + title-prefix: "[issue] " + # inherits footer: false + create-pull-request: + title-prefix: "[pr] " + footer: true # override: show footer for PRs only +``` + +Individual handler settings always take precedence over the global setting. + +### What's Preserved When Footer is Hidden + +Even with `footer: false`, the following are still included: + +1. **Workflow-id marker** - Hidden HTML comment for search and tracking: + ```html + + ``` + +2. **Tracker-id marker** - For issue/discussion tracking (when applicable): + ```html + + ``` + +These markers enable you to search for workflow-created items using GitHub's search: + +``` +repo:owner/repo "gh-aw-workflow-id: my-workflow" in:body +``` + +### Use Cases + +**Clean content for public repositories:** +```yaml wrap +safe-outputs: + footer: false + create-issue: + title-prefix: "[report] " + labels: [automated] +``` + +**Custom branding - footers on PRs only:** +```yaml wrap +safe-outputs: + footer: false # hide for issues + create-issue: + title-prefix: "[issue] " + create-pull-request: + footer: true # show for PRs + title-prefix: "[pr] " +``` + +**Minimal documentation updates:** +```yaml wrap +safe-outputs: + update-release: + footer: false # clean release notes + max: 1 +``` + +### Backward Compatibility + +The default value for `footer` is `true`, maintaining backward compatibility with existing workflows. To hide footers, you must explicitly set `footer: false`. + ## Custom Messages (`messages:`) Customize notifications using template variables and Markdown. Import from shared workflows (local overrides imported). From 269d6ddfc462f59f248b907355641ecba8d21ab7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:34:52 +0000 Subject: [PATCH 3/6] Add custom messages documentation to Footer Control section Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .../src/content/docs/reference/safe-outputs.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/src/content/docs/reference/safe-outputs.md b/docs/src/content/docs/reference/safe-outputs.md index 3122e4bbc6..2b2a64388b 100644 --- a/docs/src/content/docs/reference/safe-outputs.md +++ b/docs/src/content/docs/reference/safe-outputs.md @@ -1478,6 +1478,24 @@ safe-outputs: The default value for `footer` is `true`, maintaining backward compatibility with existing workflows. To hide footers, you must explicitly set `footer: false`. +### Customizing Footer Messages + +Instead of hiding footers entirely, you can customize the footer message text using the `messages.footer` template. This allows you to maintain attribution while using custom branding: + +```yaml wrap +safe-outputs: + messages: + footer: "> 🤖 Powered by [{workflow_name}]({run_url})" + create-issue: + title-prefix: "[bot] " +``` + +The `messages.footer` template supports variables like `{workflow_name}`, `{run_url}`, `{triggering_number}`, and more. See [Custom Messages](#custom-messages-messages) for complete documentation on message templates and available variables. + +**When to use each approach:** +- **`footer: false`** - Completely hide attribution footers for cleaner content +- **`messages.footer`** - Keep attribution but customize the text and branding + ## Custom Messages (`messages:`) Customize notifications using template variables and Markdown. Import from shared workflows (local overrides imported). From cd5057cfb5dc14123bcd18083142d28eb24b7e1c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:43:18 +0000 Subject: [PATCH 4/6] Refactor: Extract footer documentation into separate footers.md file Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/src/content/docs/reference/footers.md | 121 ++++++++++++++++++ .../content/docs/reference/safe-outputs.md | 117 +---------------- 2 files changed, 128 insertions(+), 110 deletions(-) create mode 100644 docs/src/content/docs/reference/footers.md diff --git a/docs/src/content/docs/reference/footers.md b/docs/src/content/docs/reference/footers.md new file mode 100644 index 0000000000..46ce2a2e92 --- /dev/null +++ b/docs/src/content/docs/reference/footers.md @@ -0,0 +1,121 @@ +--- +title: Footer Control +description: Learn how to control AI-generated footers in safe output operations and customize footer messages for GitHub issues, pull requests, discussions, and releases. +sidebar: + order: 805 +--- + +Control whether AI-generated footers are added to created and updated GitHub items (issues, pull requests, discussions, releases). Footers provide attribution and links to workflow runs, but you may want to omit them for cleaner content or when using custom branding. + +## Global Footer Control + +Set `footer: false` at the safe-outputs level to hide footers for all output types: + +```yaml wrap +safe-outputs: + footer: false # hide footers globally + create-issue: + title-prefix: "[ai] " + create-pull-request: + title-prefix: "[ai] " +``` + +When `footer: false` is set: +- **Visible footer content is omitted** - No AI-generated attribution text appears in the item body +- **XML markers are preserved** - Hidden workflow-id and tracker-id markers remain for searchability +- **All safe output types affected** - Applies to create-issue, create-pull-request, create-discussion, update-issue, update-discussion, and update-release + +## Per-Handler Footer Control + +Override the global setting for specific output types by setting `footer` at the handler level: + +```yaml wrap +safe-outputs: + footer: false # global default: no footers + create-issue: + title-prefix: "[issue] " + # inherits footer: false + create-pull-request: + title-prefix: "[pr] " + footer: true # override: show footer for PRs only +``` + +Individual handler settings always take precedence over the global setting. + +## What's Preserved When Footer is Hidden + +Even with `footer: false`, the following are still included: + +1. **Workflow-id marker** - Hidden HTML comment for search and tracking: + ```html + + ``` + +2. **Tracker-id marker** - For issue/discussion tracking (when applicable): + ```html + + ``` + +These markers enable you to search for workflow-created items using GitHub's search: + +``` +repo:owner/repo "gh-aw-workflow-id: my-workflow" in:body +``` + +## Use Cases + +**Clean content for public repositories:** +```yaml wrap +safe-outputs: + footer: false + create-issue: + title-prefix: "[report] " + labels: [automated] +``` + +**Custom branding - footers on PRs only:** +```yaml wrap +safe-outputs: + footer: false # hide for issues + create-issue: + title-prefix: "[issue] " + create-pull-request: + footer: true # show for PRs + title-prefix: "[pr] " +``` + +**Minimal documentation updates:** +```yaml wrap +safe-outputs: + update-release: + footer: false # clean release notes + max: 1 +``` + +## Backward Compatibility + +The default value for `footer` is `true`, maintaining backward compatibility with existing workflows. To hide footers, you must explicitly set `footer: false`. + +## Customizing Footer Messages + +Instead of hiding footers entirely, you can customize the footer message text using the `messages.footer` template. This allows you to maintain attribution while using custom branding: + +```yaml wrap +safe-outputs: + messages: + footer: "> 🤖 Powered by [{workflow_name}]({run_url})" + create-issue: + title-prefix: "[bot] " +``` + +The `messages.footer` template supports variables like `{workflow_name}`, `{run_url}`, `{triggering_number}`, and more. See [Custom Messages](/gh-aw/reference/safe-outputs/#custom-messages-messages) for complete documentation on message templates and available variables. + +**When to use each approach:** +- **`footer: false`** - Completely hide attribution footers for cleaner content +- **`messages.footer`** - Keep attribution but customize the text and branding + +## Related Documentation + +- [Safe Outputs](/gh-aw/reference/safe-outputs/) - Complete safe outputs reference +- [Custom Messages](/gh-aw/reference/safe-outputs/#custom-messages-messages) - Message templates and variables +- [Frontmatter](/gh-aw/reference/frontmatter/) - All configuration options for workflows diff --git a/docs/src/content/docs/reference/safe-outputs.md b/docs/src/content/docs/reference/safe-outputs.md index 2b2a64388b..14b3695a88 100644 --- a/docs/src/content/docs/reference/safe-outputs.md +++ b/docs/src/content/docs/reference/safe-outputs.md @@ -103,7 +103,7 @@ safe-outputs: ``` > [!TIP] -> Use `footer: false` to omit the AI-generated footer while preserving workflow-id markers for searchability. See [Footer Control](#footer-control-footer) for details. +> Use `footer: false` to omit the AI-generated footer while preserving workflow-id markers for searchability. See [Footer Control](/gh-aw/reference/footers/) for details. #### Auto-Expiration @@ -1385,116 +1385,13 @@ See: - [Projects & Monitoring](/gh-aw/patterns/monitoring/) - [Orchestration](/gh-aw/patterns/orchestration/) -## Footer Control (`footer:`) +## Footer Control -Control whether AI-generated footers are added to created and updated GitHub items (issues, pull requests, discussions, releases). Footers provide attribution and links to workflow runs, but you may want to omit them for cleaner content or when using custom branding. - -### Global Footer Control - -Set `footer: false` at the safe-outputs level to hide footers for all output types: - -```yaml wrap -safe-outputs: - footer: false # hide footers globally - create-issue: - title-prefix: "[ai] " - create-pull-request: - title-prefix: "[ai] " -``` - -When `footer: false` is set: -- **Visible footer content is omitted** - No AI-generated attribution text appears in the item body -- **XML markers are preserved** - Hidden workflow-id and tracker-id markers remain for searchability -- **All safe output types affected** - Applies to create-issue, create-pull-request, create-discussion, update-issue, update-discussion, and update-release - -### Per-Handler Footer Control - -Override the global setting for specific output types by setting `footer` at the handler level: - -```yaml wrap -safe-outputs: - footer: false # global default: no footers - create-issue: - title-prefix: "[issue] " - # inherits footer: false - create-pull-request: - title-prefix: "[pr] " - footer: true # override: show footer for PRs only -``` - -Individual handler settings always take precedence over the global setting. - -### What's Preserved When Footer is Hidden - -Even with `footer: false`, the following are still included: - -1. **Workflow-id marker** - Hidden HTML comment for search and tracking: - ```html - - ``` - -2. **Tracker-id marker** - For issue/discussion tracking (when applicable): - ```html - - ``` - -These markers enable you to search for workflow-created items using GitHub's search: - -``` -repo:owner/repo "gh-aw-workflow-id: my-workflow" in:body -``` - -### Use Cases - -**Clean content for public repositories:** -```yaml wrap -safe-outputs: - footer: false - create-issue: - title-prefix: "[report] " - labels: [automated] -``` - -**Custom branding - footers on PRs only:** -```yaml wrap -safe-outputs: - footer: false # hide for issues - create-issue: - title-prefix: "[issue] " - create-pull-request: - footer: true # show for PRs - title-prefix: "[pr] " -``` - -**Minimal documentation updates:** -```yaml wrap -safe-outputs: - update-release: - footer: false # clean release notes - max: 1 -``` - -### Backward Compatibility - -The default value for `footer` is `true`, maintaining backward compatibility with existing workflows. To hide footers, you must explicitly set `footer: false`. - -### Customizing Footer Messages - -Instead of hiding footers entirely, you can customize the footer message text using the `messages.footer` template. This allows you to maintain attribution while using custom branding: - -```yaml wrap -safe-outputs: - messages: - footer: "> 🤖 Powered by [{workflow_name}]({run_url})" - create-issue: - title-prefix: "[bot] " -``` - -The `messages.footer` template supports variables like `{workflow_name}`, `{run_url}`, `{triggering_number}`, and more. See [Custom Messages](#custom-messages-messages) for complete documentation on message templates and available variables. - -**When to use each approach:** -- **`footer: false`** - Completely hide attribution footers for cleaner content -- **`messages.footer`** - Keep attribution but customize the text and branding +Control whether AI-generated footers are added to created and updated GitHub items. See [Footer Control](/gh-aw/reference/footers/) for complete documentation on: +- Global and per-handler footer control (`footer: true/false`) +- XML marker preservation for searchability +- Customizing footer messages with `messages.footer` template +- Use cases and examples ## Custom Messages (`messages:`) From d1fd115239f0d0dcd2b66b4ef979269608724ece Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:51:43 +0000 Subject: [PATCH 5/6] Add comprehensive XML marker search documentation to footers.md Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/src/content/docs/reference/footers.md | 35 ++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/docs/src/content/docs/reference/footers.md b/docs/src/content/docs/reference/footers.md index 46ce2a2e92..ae8f0f93c9 100644 --- a/docs/src/content/docs/reference/footers.md +++ b/docs/src/content/docs/reference/footers.md @@ -56,12 +56,43 @@ Even with `footer: false`, the following are still included: ``` -These markers enable you to search for workflow-created items using GitHub's search: +These markers enable you to search for workflow-created items using GitHub's search, even when footers are hidden. +### Searching for Workflow-Created Items + +You can use the workflow-id marker to find all items created by a specific workflow on GitHub.com. The marker is always included in the body of issues, pull requests, discussions, and comments, regardless of the `footer` setting. + +**Search Examples:** + +Find all open issues created by the `daily-team-status` workflow: ``` -repo:owner/repo "gh-aw-workflow-id: my-workflow" in:body +repo:owner/repo is:issue is:open "gh-aw-workflow-id: daily-team-status" in:body ``` +Find all pull requests created by the `security-audit` workflow: +``` +repo:owner/repo is:pr "gh-aw-workflow-id: security-audit" in:body +``` + +Find all items (issues, PRs, discussions) from any workflow in your organization: +``` +org:your-org "gh-aw-workflow-id:" in:body +``` + +Find comments from a specific workflow: +``` +repo:owner/repo "gh-aw-workflow-id: bot-responder" in:comments +``` + +> [!TIP] +> **Search Tips for Workflow Markers** +> +> - Use quotes around the marker text to search for the exact phrase +> - Add `in:body` to search issue/PR descriptions, or `in:comments` for comments +> - Combine with other filters like `is:open`, `is:closed`, `created:>2024-01-01` +> - The workflow name in the marker is the workflow filename without the `.md` extension +> - Use GitHub's advanced search to refine results: [Advanced search documentation](https://docs.github.com/en/search-github/searching-on-github/searching-issues-and-pull-requests) + ## Use Cases **Clean content for public repositories:** From cb12aa1325f03c31f97e0f921eb339869851ae52 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:04:44 +0000 Subject: [PATCH 6/6] Remove footer: false from safe-outputs examples, keep only in footers.md Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- docs/src/content/docs/reference/safe-outputs.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/docs/src/content/docs/reference/safe-outputs.md b/docs/src/content/docs/reference/safe-outputs.md index 14b3695a88..cf066f68b3 100644 --- a/docs/src/content/docs/reference/safe-outputs.md +++ b/docs/src/content/docs/reference/safe-outputs.md @@ -98,7 +98,6 @@ safe-outputs: expires: 7 # auto-close after 7 days (or false to disable) group: true # group as sub-issues under parent close-older-issues: true # close previous issues from same workflow - footer: false # hide AI-generated footer (default: true) target-repo: "owner/repo" # cross-repository ``` @@ -345,15 +344,11 @@ safe-outputs: status: # enable status updates title: # enable title updates body: # enable body updates - footer: false # hide AI-generated footer (default: true) max: 3 # max updates (default: 1) target: "*" # "triggering" (default), "*", or number target-repo: "owner/repo" # cross-repository ``` -> [!NOTE] -> The `footer` field only applies when body updates are enabled. XML markers for searchability are preserved even with `footer: false`. - **Target**: `"triggering"` (requires issue event), `"*"` (any issue), or number (specific issue). When using `target: "*"`, the agent must provide `issue_number` or `item_number` in the output to identify which issue to update. @@ -375,15 +370,11 @@ safe-outputs: update-pull-request: title: true # enable title updates (default: true) body: true # enable body updates (default: true) - footer: false # hide AI-generated footer (default: true) max: 1 # max updates (default: 1) target: "*" # "triggering" (default), "*", or number target-repo: "owner/repo" # cross-repository ``` -> [!NOTE] -> The `footer` field only applies when body updates are enabled. - **Target**: `"triggering"` (requires PR event), `"*"` (any PR), or number (specific PR). When using `target: "*"`, the agent must provide `pull_request_number` in the output to identify which pull request to update. @@ -647,7 +638,6 @@ safe-outputs: reviewers: [user1, copilot] # reviewers (use 'copilot' for bot) draft: true # create as draft (default: true) expires: 14 # auto-close after 14 days (same-repo only) - footer: false # hide AI-generated footer (default: true) if-no-changes: "warn" # "warn" (default), "error", or "ignore" target-repo: "owner/repo" # cross-repository base-branch: "vnext" # target branch for PR (default: github.ref_name) @@ -737,7 +727,6 @@ Updates GitHub release descriptions: replace (complete replacement), append (add ```yaml wrap safe-outputs: update-release: - footer: false # hide AI-generated footer (default: true) max: 1 # max releases (default: 1, max: 10) target-repo: "owner/repo" # cross-repository github-token: ${{ secrets.CUSTOM_TOKEN }} # custom token @@ -846,7 +835,6 @@ safe-outputs: title-prefix: "[ai] " # prefix for titles category: "general" # category slug, name, or ID (use lowercase) expires: 3 # auto-close after 3 days (or false to disable) - footer: false # hide AI-generated footer (default: true) max: 3 # max discussions (default: 1) target-repo: "owner/repo" # cross-repository fallback-to-issue: true # fallback to issue creation on permission errors (default: true) @@ -903,7 +891,6 @@ safe-outputs: update-discussion: title: # enable title updates body: # enable body updates - footer: false # hide AI-generated footer (default: true) labels: # enable label updates allowed-labels: [bug, idea] # restrict to specific labels max: 1 # max updates (default: 1) @@ -911,9 +898,6 @@ safe-outputs: target-repo: "owner/repo" # cross-repository ``` -> [!NOTE] -> The `footer` field only applies when body updates are enabled. - **Field Enablement**: Include `title:`, `body:`, or `labels:` keys to enable updates for those fields. Without these keys, the field cannot be updated. Setting `allowed-labels` implicitly enables label updates. **Target**: `"triggering"` (requires discussion event), `"*"` (any discussion), or number (specific discussion).