You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Copilot PR Conversation NLP Analysis workflow fails on the "Prepare discussion body" safe-output shell step. The agent generates a command that assigns image/timeline URLs to shell variables:
Regression vs baseline: A prior successful run (§24773836812, 2026-04-22) had 9 turns and 0 blocked requests. The failing run had 31 turns and 48 blocked requests — turns tripled and the shell expansion policy was triggered repeatedly.
Root Cause
The agent's "Prepare discussion body" step passes URLs to the safe-output shell command via shell variable assignment syntax. The shell expansion security scanner flags these patterns ($VAR, ${VAR}, or parameter substitution) as potentially dangerous, regardless of whether the actual content is benign.
This is a combination of:
The workflow prompt generating shell variable assignment patterns in its safe-output step
The shell security scanner having a broad block on variable expansion patterns
Proposed Remediation
Option A — Workflow prompt fix (preferred): Update the Copilot PR NLP Analysis workflow to pass image/timeline URLs to the safe-output step using a method that does not trigger shell expansion patterns. For example:
Write the URLs to a temporary file in /tmp/gh-aw/agent/ during the agent turn
Read the file content in the safe-output step without using shell variable expansion
Option B — Safe-output step refactor: Replace the shell variable assignment approach with positional arguments or a JSON-based input to the safe-output step, avoiding shell expansion entirely.
Option C — Policy tuning: If simple VAR="value" assignments should be allowed, refine the shell expansion security policy to permit benign variable assignments without nested expansion, while still blocking ${VAR!}, $(cmd), and backtick expansion.
Success Criteria
Copilot PR Conversation NLP Analysis runs complete with conclusion: success
No blocked: contains dangerous shell expansion patterns errors in run logs
Problem Statement
The Copilot PR Conversation NLP Analysis workflow fails on the "Prepare discussion body" safe-output shell step. The agent generates a command that assigns image/timeline URLs to shell variables:
This is blocked by the harness shell expansion security policy with:
Affected Workflows and Runs
Regression vs baseline: A prior successful run (§24773836812, 2026-04-22) had 9 turns and 0 blocked requests. The failing run had 31 turns and 48 blocked requests — turns tripled and the shell expansion policy was triggered repeatedly.
Root Cause
The agent's "Prepare discussion body" step passes URLs to the safe-output shell command via shell variable assignment syntax. The shell expansion security scanner flags these patterns (
$VAR,${VAR}, or parameter substitution) as potentially dangerous, regardless of whether the actual content is benign.This is a combination of:
Proposed Remediation
Option A — Workflow prompt fix (preferred): Update the Copilot PR NLP Analysis workflow to pass image/timeline URLs to the safe-output step using a method that does not trigger shell expansion patterns. For example:
/tmp/gh-aw/agent/during the agent turnOption B — Safe-output step refactor: Replace the shell variable assignment approach with positional arguments or a JSON-based input to the safe-output step, avoiding shell expansion entirely.
Option C — Policy tuning: If simple
VAR="value"assignments should be allowed, refine the shell expansion security policy to permit benign variable assignments without nested expansion, while still blocking${VAR!},$(cmd), and backtick expansion.Success Criteria
conclusion: successblocked: contains dangerous shell expansion patternserrors in run logsReferences
Note
🔒 Integrity filter blocked 4 items
The following items were blocked because they don't meet the GitHub integrity level.
list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".list_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".To allow these resources, lower
min-integrityin your GitHub frontmatter: