Skip to content

[aw-failures] [aw-fix] P1: Breaking Change Checker — read-only git log denied by tool allowlist trips the 5/5 tool-denial guard and fails ev [Content truncated due to length] #47135

Description

@github-actions

Add git log to the Breaking Change Checker tool allowlist — its absence denies the one command the agent needs and aborts every run at the 5-denial guard.

The agent (and its explore subagent) can only detect breaking changes by reading recent history, but git log is not in the workflow's 23-entry allow-tool set. Five consecutive git log calls are denied, guard.tool_denials_exceeded fires at threshold 5, the SDK session stops early, and Execute GitHub Copilot CLI exits 1 (failureClass=permission_denied, not retried). This is deterministic and will recur on every scheduled run until the allowlist is fixed.

Affected workflow & run IDs

Probable root cause

Every one of the 5 denials is a read-only git log variant issued through shell(git log ...). The compiled allowlist grants 23 tools but none match git log (nor the cd ... && git log compound form), so the permission layer rejects each call.

Evidence — tool-denial sequence (run 29843908934)
[copilot-sdk-driver] permission config: 23 allow-tool entries from GH_AW_COPILOT_SDK_SERVER_ARGS
[sdk-driver] tool denial 1/5: permission denied: shell(cd .../gh-aw && git log --since="24 hours ago" --oneline --name-only 2>/dev/null)
[sdk-driver] tool denial 2/5: permission denied: shell(cd .../gh-aw && git log --since="24 hours ago" --oneline --name-only)
{"type":"subagent.started","data":{"agentName":"explore"}}
[sdk-driver] tool denial 3/5: permission denied: shell(cd .../gh-aw && git log --since="24 hours ago" --oneline --name-only)
[sdk-driver] tool denial 4/5: permission denied: shell(cd .../gh-aw && git log --oneline -5 2>&1)
[sdk-driver] tool denial 5/5: permission denied: shell(cd .../gh-aw && git log --since="24 hours ago" --format="%H %s" 2>&1)
{"type":"guard.tool_denials_exceeded","data":{"denialCount":5,"threshold":5}}
[sdk-driver] error: max tool denials threshold reached (5/5); stopping SDK session early
[copilot-harness] attempt 1 failed: exitCode=1 failureClass=permission_denied
[copilot-harness] attempt 1: detected numerous permission-denied issues — not retrying

Proposed remediation

  1. Grant the read-only history command in the workflow's tools: block, e.g. bash: ["git log:*"] (and/or add git log to the shell allowlist so the cd ... && git log compound form matches). This is read-only and low-risk.
  2. Alternatively/additionally, tune the agent prompt to call git log from the repo root without the cd ... && wrapper so it matches a simpler allow pattern.
  3. Consider whether a 5-denial hard guard should abort a run when all denials are the same benign read-only command — a per-command dedup or a clearer "missing tool" surface would prevent silent hard-fails.

Success criteria / verification

  • Re-run Breaking Change Checker: the agent's git log calls succeed, guard.tool_denials_exceeded does not fire, and the agent job reaches completion with a real breaking-change report (non-zero turns, exit 0).
  • No failureClass=permission_denied on git log in the next scheduled run's logs.

Related

Subagent-spawn fragility appeared in a second run today — Daily Formal Spec Verifier §29846225728 died when its general-purpose subagent hit Error: No model available. Check policy enablement under GitHub Settings > Copilot (failureClass=partial_execution). That model/policy signature is already tracked by #46326 (subagent model failures) — no separate issue needed here. Tidy §29837885800 hit an HTTP 400 response error, already covered by the CAPI-400 family in #46846 / #46326.
Related to #46171

Generated by 🔍 [aw] Failure Investigator (6h) · age00 244.9 AIC · ⌖ 38.2 AIC · ⊞ 5.1K ·

  • expires on Jul 28, 2026, 11:25 AM UTC-08:00

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions