Uh oh!
There was an error while loading. Please reload this page.
Add max-tool-denials: 3 to all 67 copilot-sdk workflows - #48293
Conversation
Hey
The research context from #48278 is clear, so you're on the right track. Keep the checklist items updated as you progress!
|
Addresses the #1 critical gap flagged for 18+ consecutive research runs: none of the 67 copilot-sdk workflows had max-tool-denials set, allowing potential infinite tool-permission loops that burn tokens. All 67 workflows now include `max-tool-denials: 3` placed immediately after their engine block. All 263 workflow files recompiled successfully with 0 errors. Closes#48278 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Sets max-tool-denials: 3 across 67 Copilot SDK workflows and recompiles their generated lock files.
Changes:
- Adds an explicit tool-denial threshold to workflow frontmatter.
- Updates compiled hashes and
GH_AW_MAX_TOOL_DENIALS. - Three workflows use a custom driver that currently ignores this setting.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/agent-performance-analyzer.md | Adds threshold. |
.github/workflows/agent-performance-analyzer.lock.yml | Recompiled output. |
.github/workflows/architecture-guardian.md | Adds threshold. |
.github/workflows/architecture-guardian.lock.yml | Recompiled output. |
.github/workflows/artifacts-summary.md | Adds threshold. |
.github/workflows/artifacts-summary.lock.yml | Recompiled output. |
.github/workflows/brave.md | Adds threshold. |
.github/workflows/brave.lock.yml | Recompiled output. |
.github/workflows/breaking-change-checker.md | Adds threshold. |
.github/workflows/breaking-change-checker.lock.yml | Recompiled output. |
.github/workflows/ci-coach.md | Adds threshold. |
.github/workflows/ci-coach.lock.yml | Recompiled output. |
.github/workflows/cli-consistency-checker.md | Adds threshold. |
.github/workflows/cli-consistency-checker.lock.yml | Recompiled output. |
.github/workflows/code-scanning-fixer.md | Adds threshold. |
.github/workflows/code-scanning-fixer.lock.yml | Recompiled output. |
.github/workflows/copilot-cli-deep-research.md | Adds threshold. |
.github/workflows/copilot-cli-deep-research.lock.yml | Recompiled output. |
.github/workflows/copilot-opt.md | Adds threshold. |
.github/workflows/copilot-opt.lock.yml | Recompiled output. |
.github/workflows/copilot-pr-merged-report.md | Adds threshold. |
.github/workflows/copilot-pr-merged-report.lock.yml | Recompiled output. |
.github/workflows/copilot-pr-nlp-analysis.md | Adds threshold. |
.github/workflows/copilot-pr-nlp-analysis.lock.yml | Recompiled output. |
.github/workflows/copilot-pr-prompt-analysis.md | Adds threshold. |
.github/workflows/copilot-pr-prompt-analysis.lock.yml | Recompiled output. |
.github/workflows/craft.md | Adds threshold. |
.github/workflows/craft.lock.yml | Recompiled output. |
.github/workflows/daily-agent-of-the-day-blog-writer.md | Adds threshold. |
.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml | Recompiled output. |
.github/workflows/daily-architecture-diagram.md | Adds threshold. |
.github/workflows/daily-architecture-diagram.lock.yml | Recompiled output. |
.github/workflows/daily-assign-issue-to-user.md | Adds threshold. |
.github/workflows/daily-assign-issue-to-user.lock.yml | Recompiled output. |
.github/workflows/daily-cli-performance.md | Adds threshold. |
.github/workflows/daily-cli-performance.lock.yml | Recompiled output. |
.github/workflows/daily-compiler-quality.md | Adds threshold. |
.github/workflows/daily-compiler-quality.lock.yml | Recompiled output. |
.github/workflows/daily-compiler-threat-spec-optimizer.md | Adds threshold. |
.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml | Recompiled output. |
.github/workflows/daily-experiment-report.md | Adds threshold. |
.github/workflows/daily-experiment-report.lock.yml | Recompiled output. |
.github/workflows/daily-formal-spec-verifier.md | Adds threshold. |
.github/workflows/daily-formal-spec-verifier.lock.yml | Recompiled output. |
.github/workflows/daily-geo-optimizer.md | Adds threshold. |
.github/workflows/daily-geo-optimizer.lock.yml | Recompiled output. |
.github/workflows/daily-github-docs-seo-optimizer.md | Adds threshold. |
.github/workflows/daily-github-docs-seo-optimizer.lock.yml | Recompiled output. |
.github/workflows/daily-issues-report.md | Adds threshold; custom driver ignores it. |
.github/workflows/daily-issues-report.lock.yml | Recompiled output. |
.github/workflows/daily-malicious-code-scan.md | Adds threshold. |
.github/workflows/daily-malicious-code-scan.lock.yml | Recompiled output. |
.github/workflows/daily-mcp-concurrency-analysis.md | Adds threshold. |
.github/workflows/daily-mcp-concurrency-analysis.lock.yml | Recompiled output. |
.github/workflows/daily-model-inventory.md | Adds threshold; custom driver ignores it. |
.github/workflows/daily-model-inventory.lock.yml | Recompiled output. |
.github/workflows/daily-model-resolution.md | Adds threshold. |
.github/workflows/daily-model-resolution.lock.yml | Recompiled output. |
.github/workflows/daily-performance-summary.md | Adds threshold. |
.github/workflows/daily-performance-summary.lock.yml | Recompiled output. |
.github/workflows/daily-repo-chronicle.md | Adds threshold. |
.github/workflows/daily-repo-chronicle.lock.yml | Recompiled output. |
.github/workflows/daily-safe-output-integrator.md | Adds threshold. |
.github/workflows/daily-safe-output-integrator.lock.yml | Recompiled output. |
.github/workflows/daily-secrets-analysis.md | Adds threshold. |
.github/workflows/daily-secrets-analysis.lock.yml | Recompiled output. |
.github/workflows/daily-security-observability.md | Adds threshold. |
.github/workflows/daily-security-observability.lock.yml | Recompiled output. |
.github/workflows/daily-sentrux-report.md | Adds threshold. |
.github/workflows/daily-sentrux-report.lock.yml | Recompiled output. |
.github/workflows/daily-skill-optimizer.md | Adds threshold; custom driver ignores it. |
.github/workflows/daily-skill-optimizer.lock.yml | Recompiled output. |
.github/workflows/daily-spdd-spec-planner.md | Adds threshold. |
.github/workflows/daily-spdd-spec-planner.lock.yml | Recompiled output. |
.github/workflows/daily-syntax-error-quality.md | Adds threshold. |
.github/workflows/daily-syntax-error-quality.lock.yml | Recompiled output. |
.github/workflows/daily-testify-uber-super-expert.md | Adds threshold. |
.github/workflows/daily-testify-uber-super-expert.lock.yml | Recompiled output. |
.github/workflows/daily-workflow-updater.md | Adds threshold. |
.github/workflows/daily-workflow-updater.lock.yml | Recompiled output. |
.github/workflows/dead-code-remover.md | Adds threshold. |
.github/workflows/dead-code-remover.lock.yml | Recompiled output. |
.github/workflows/delight.md | Adds threshold. |
.github/workflows/delight.lock.yml | Recompiled output. |
.github/workflows/deployment-incident-monitor.md | Adds threshold. |
.github/workflows/deployment-incident-monitor.lock.yml | Recompiled output. |
.github/workflows/dev-hawk.md | Adds threshold. |
.github/workflows/dev-hawk.lock.yml | Recompiled output. |
.github/workflows/dictation-prompt.md | Adds threshold. |
.github/workflows/dictation-prompt.lock.yml | Recompiled output. |
.github/workflows/discussion-task-miner.md | Adds threshold. |
.github/workflows/discussion-task-miner.lock.yml | Recompiled output. |
.github/workflows/docs-noob-tester.md | Adds threshold. |
.github/workflows/docs-noob-tester.lock.yml | Recompiled output. |
.github/workflows/draft-pr-cleanup.md | Adds threshold. |
.github/workflows/draft-pr-cleanup.lock.yml | Recompiled output. |
.github/workflows/eslint-miner.md | Adds threshold. |
.github/workflows/eslint-miner.lock.yml | Recompiled output. |
.github/workflows/firewall-escape.md | Adds threshold. |
.github/workflows/firewall-escape.lock.yml | Recompiled output. |
.github/workflows/firewall.md | Adds threshold. |
.github/workflows/firewall.lock.yml | Recompiled output. |
.github/workflows/jsweep.md | Adds threshold. |
.github/workflows/jsweep.lock.yml | Recompiled output. |
.github/workflows/layout-spec-maintainer.md | Adds threshold. |
.github/workflows/layout-spec-maintainer.lock.yml | Recompiled output. |
.github/workflows/linter-miner.md | Adds threshold. |
.github/workflows/linter-miner.lock.yml | Recompiled output. |
.github/workflows/mcp-inspector.md | Adds threshold. |
.github/workflows/mcp-inspector.lock.yml | Recompiled output. |
.github/workflows/mergefest.md | Adds threshold. |
.github/workflows/mergefest.lock.yml | Recompiled output. |
.github/workflows/metrics-collector.md | Adds threshold. |
.github/workflows/metrics-collector.lock.yml | Recompiled output. |
.github/workflows/org-health-report.md | Adds threshold. |
.github/workflows/org-health-report.lock.yml | Recompiled output. |
.github/workflows/pdf-summary.md | Adds threshold. |
.github/workflows/pdf-summary.lock.yml | Recompiled output. |
.github/workflows/plan.md | Adds threshold. |
.github/workflows/plan.lock.yml | Recompiled output. |
.github/workflows/pr-code-quality-reviewer.md | Adds threshold. |
.github/workflows/pr-code-quality-reviewer.lock.yml | Recompiled output. |
.github/workflows/pr-nitpick-reviewer.md | Adds threshold. |
.github/workflows/pr-nitpick-reviewer.lock.yml | Recompiled output. |
.github/workflows/pr-triage-agent.md | Adds threshold. |
.github/workflows/pr-triage-agent.lock.yml | Recompiled output. |
.github/workflows/python-data-charts.md | Adds threshold. |
.github/workflows/python-data-charts.lock.yml | Recompiled output. |
.github/workflows/q.md | Adds threshold. |
.github/workflows/q.lock.yml | Recompiled output. |
.github/workflows/smoke-copilot-sdk.md | Adds threshold. |
.github/workflows/smoke-copilot-sdk.lock.yml | Recompiled output. |
.github/workflows/smoke-copilot-sub-agents.md | Adds threshold. |
.github/workflows/smoke-copilot-sub-agents.lock.yml | Recompiled output. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 134/134 changed files
- Comments generated: 3
- Review effort level: Medium
| id: copilot | ||
| copilot-sdk: true | ||
| driver: .github/drivers/copilot_sdk_driver_sample_node.cjs | ||
| max-tool-denials: 3 |
| id: copilot | ||
| copilot-sdk: true | ||
| driver: .github/drivers/copilot_sdk_driver_sample_node.cjs | ||
| max-tool-denials: 3 |
| id: copilot | ||
| copilot-sdk: true | ||
| driver: .github/drivers/copilot_sdk_driver_sample_node.cjs | ||
| max-tool-denials: 3 |
🎉 This pull request is included in a new release. Release: |
All 67
copilot-sdk: trueworkflows lacked an explicitmax-tool-denialssetting, leaving them exposed to infinite tool-permission loops that silently burn tokens. This gap was flagged across 18+ consecutive research cycles with zero remediation.Changes
.mdfiles — addsmax-tool-denials: 3as a top-level frontmatter field immediately after each workflow'sengine:block.lock.ymlfiles — recompiled to keep lock files in syncThe value
3is tighter than the default5, providing an explicit circuit breaker without being overly aggressive for normal tool use.