From 6988f1c6462fbf85f8db18be2873db719e8fcab7 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 21 Jan 2026 14:50:55 +0000
Subject: [PATCH 1/4] Initial plan
From 4261da3b09f065d4b68397fcd76264ae1a6ec55a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 21 Jan 2026 15:02:18 +0000
Subject: [PATCH 2/4] Add remove-labels configuration to smoke-copilot workflow
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
---
.github/workflows/smoke-copilot.lock.yml | 10 ++++++----
.github/workflows/smoke-copilot.md | 6 +++++-
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml
index f8f7496e2b4..80d41eafc4f 100644
--- a/.github/workflows/smoke-copilot.lock.yml
+++ b/.github/workflows/smoke-copilot.lock.yml
@@ -237,7 +237,7 @@ jobs:
mkdir -p /tmp/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs
cat > /opt/gh-aw/safeoutputs/config.json << 'EOF'
- {"add_comment":{"max":1},"add_labels":{"allowed":["smoke-copilot"],"max":3},"create_issue":{"group":true,"max":1},"missing_data":{},"missing_tool":{},"noop":{"max":1}}
+ {"add_comment":{"max":1},"add_labels":{"allowed":["smoke-copilot"],"max":3},"create_issue":{"group":true,"max":1},"missing_data":{},"missing_tool":{},"noop":{"max":1},"remove_labels":{"allowed":["smoke"],"max":3}}
EOF
cat > /opt/gh-aw/safeoutputs/tools.json << 'EOF'
[
@@ -703,7 +703,7 @@ jobs:
To create or modify GitHub resources (issues, discussions, pull requests, etc.), you MUST call the appropriate safe output tool. Simply writing content will NOT work - the workflow requires actual tool calls.
- **Available tools**: add_comment, add_labels, create_issue, missing_tool, noop
+ **Available tools**: add_comment, add_labels, create_issue, missing_tool, noop, remove_labels
**Critical**: Tool calls write structured data that downstream jobs process. Without tool calls, follow-up actions will be skipped.
@@ -840,7 +840,9 @@ jobs:
- Overall status: PASS or FAIL
- Mention the pull request author and any assignees
- If all tests pass, add the label `smoke-copilot` to the pull request.
+ If all tests pass:
+ - Add the label `smoke-copilot` to the pull request
+ - Remove the label `smoke` from the pull request
PROMPT_EOF
- name: Substitute placeholders
@@ -1414,7 +1416,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
- GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"hide_older_comments\":true,\"max\":1},\"add_labels\":{\"allowed\":[\"smoke-copilot\"]},\"create_issue\":{\"close_older_issues\":true,\"expires\":2,\"group\":true,\"max\":1},\"missing_data\":{},\"missing_tool\":{}}"
+ GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"hide_older_comments\":true,\"max\":1},\"add_labels\":{\"allowed\":[\"smoke-copilot\"]},\"create_issue\":{\"close_older_issues\":true,\"expires\":2,\"group\":true,\"max\":1},\"missing_data\":{},\"missing_tool\":{},\"remove_labels\":{\"allowed\":[\"smoke\"]}}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md
index a68f4315a01..dd740cfa158 100644
--- a/.github/workflows/smoke-copilot.md
+++ b/.github/workflows/smoke-copilot.md
@@ -51,6 +51,8 @@ safe-outputs:
close-older-issues: true
add-labels:
allowed: [smoke-copilot]
+ remove-labels:
+ allowed: [smoke]
messages:
footer: "> 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*"
run-started: "📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing..."
@@ -89,4 +91,6 @@ strict: true
- Overall status: PASS or FAIL
- Mention the pull request author and any assignees
-If all tests pass, add the label `smoke-copilot` to the pull request.
+If all tests pass:
+- Add the label `smoke-copilot` to the pull request
+- Remove the label `smoke` from the pull request
From 4d516999ed02de121cf04112396fab9431c5a0f4 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 21 Jan 2026 15:27:22 +0000
Subject: [PATCH 3/4] Enforce at least one label in remove_labels tool schema
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
---
actions/setup/js/safe_outputs_tools.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/actions/setup/js/safe_outputs_tools.json b/actions/setup/js/safe_outputs_tools.json
index d5979c7dbf8..fc4ac40ca5f 100644
--- a/actions/setup/js/safe_outputs_tools.json
+++ b/actions/setup/js/safe_outputs_tools.json
@@ -304,13 +304,15 @@
"items": {
"type": "string"
},
- "description": "Label names to remove (e.g., ['bug', 'needs-triage']). Labels that don't exist on the item are silently skipped."
+ "minItems": 1,
+ "description": "Label names to remove (e.g., ['bug', 'needs-triage']). Labels that don't exist on the item are silently skipped. At least one label must be provided."
},
"item_number": {
"type": "number",
"description": "Issue or PR number to remove labels from. This is the numeric ID from the GitHub URL (e.g., 456 in github.com/owner/repo/issues/456). If omitted, removes labels from the item that triggered this workflow."
}
},
+ "required": ["labels"],
"additionalProperties": false
}
},
From 0110833481b76d1b7200b686a0cccdc460ac6e7d Mon Sep 17 00:00:00 2001
From: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Wed, 21 Jan 2026 08:14:41 -0800
Subject: [PATCH 4/4] [WIP] Update remove_labels allowed list configuration
(#11044)
---
.github/workflows/smoke-codex.lock.yml | 6 +++---
.github/workflows/smoke-codex.md | 2 ++
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml
index 6c3df7a883c..b138e3fadeb 100644
--- a/.github/workflows/smoke-codex.lock.yml
+++ b/.github/workflows/smoke-codex.lock.yml
@@ -208,7 +208,7 @@ jobs:
mkdir -p /tmp/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs
cat > /opt/gh-aw/safeoutputs/config.json << 'EOF'
- {"add_comment":{"max":1},"add_labels":{"allowed":["smoke-codex"],"max":3},"create_issue":{"max":1},"hide_comment":{"max":5},"missing_data":{},"missing_tool":{},"noop":{"max":1}}
+ {"add_comment":{"max":1},"add_labels":{"allowed":["smoke-codex"],"max":3},"create_issue":{"max":1},"hide_comment":{"max":5},"missing_data":{},"missing_tool":{},"noop":{"max":1},"remove_labels":{"allowed":["smoke"],"max":3}}
EOF
cat > /opt/gh-aw/safeoutputs/tools.json << 'EOF'
[
@@ -891,7 +891,7 @@ jobs:
To create or modify GitHub resources (issues, discussions, pull requests, etc.), you MUST call the appropriate safe output tool. Simply writing content will NOT work - the workflow requires actual tool calls.
- **Available tools**: add_comment, add_labels, create_issue, hide_comment, missing_tool, noop
+ **Available tools**: add_comment, add_labels, create_issue, hide_comment, missing_tool, noop, remove_labels
**Critical**: Tool calls write structured data that downstream jobs process. Without tool calls, follow-up actions will be skipped.
@@ -1582,7 +1582,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
- GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"hide_older_comments\":true,\"max\":1},\"add_labels\":{\"allowed\":[\"smoke-codex\"]},\"create_issue\":{\"close_older_issues\":true,\"expires\":2,\"max\":1},\"hide_comment\":{\"max\":5},\"missing_data\":{},\"missing_tool\":{}}"
+ GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"hide_older_comments\":true,\"max\":1},\"add_labels\":{\"allowed\":[\"smoke-codex\"]},\"create_issue\":{\"close_older_issues\":true,\"expires\":2,\"max\":1},\"hide_comment\":{\"max\":5},\"missing_data\":{},\"missing_tool\":{},\"remove_labels\":{\"allowed\":[\"smoke\"]}}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md
index a08aa909c61..0697bf988b4 100644
--- a/.github/workflows/smoke-codex.md
+++ b/.github/workflows/smoke-codex.md
@@ -49,6 +49,8 @@ safe-outputs:
close-older-issues: true
add-labels:
allowed: [smoke-codex]
+ remove-labels:
+ allowed: [smoke]
hide-comment:
messages:
footer: "> 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*"