Scope release-notes tool allowlist for Phase 3 experts - #6439
Merged
Conversation
Temporary fix to unblock the failed v0.45.0 release-notes run: the Phase 3 expert subagents (kubernetes-expert, mcp-protocol-expert, oauth-expert, etc.) declare Bash/WebFetch/context7 tools the workflow never allowlisted, causing 42 permission denials and pushing the run to 75 turns against a 60-turn cap. Not intended to land on main as-is; this branch exists only to manually dispatch the fixed workflow for this one release.
The turn overrun was driven by permission denials from the tool allowlist mismatch, not raw workload size. With the allowedTools fix in place, 60 turns should be enough headroom; leave it unchanged rather than loosening the safety margin further.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #6439 +/- ##
==========================================
+ Coverage 77.94% 77.99% +0.04%
==========================================
Files 766 766
Lines 74069 74069
==========================================
+ Hits 57732 57767 +35
+ Misses 16332 16297 -35
Partials 5 5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Enumerate the read-only exploration commands the Phase 3 expert subagents actually use (grep/rg/find/cat/ls/head/tail/go doc) rather than allowing unrestricted Bash. Keeps network and write-capable commands blocked for this unattended job, which runs over PR/issue content it doesn't control.
rdimitrov
approved these changes
Aug 26, 2026
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
release-notes.ymlworkflow's--allowedTools "Bash(gh *),Bash(git *),..."was scoped only to what the top-level skill procedure needs (
gh/gitread-only lookups). It didn't account for the Phase 3 expert subagents
(
kubernetes-expert,mcp-protocol-expert,oauth-expert,toolhive-expert,site-reliability-engineer) dispatched viaTask— their own agentdefinitions declare
Bashfor local code exploration, and three of themalso declare
WebFetchand/ormcp__context7__*tools that were neverallowlisted.
subagents retried/worked around denied calls, pushing it to 75 turns
against the 60-turn cap and failing the job outright (see
https://github.com/stacklok/toolhive/actions/runs/32973912326).
WebFetchand the twocontext7tools, and extend theBash(...)scoping with the read-only exploration commands the experts actually run
(
grep,rg,find,cat,ls,head,tail,go doc) instead ofopening Bash up fully. This job runs unattended over PR/issue content it
doesn't control, so network and write-capable commands (
curl,go get/install,gh release edit, etc.) stay blocked.--max-turnsat 60: the overrun was caused by denial-driven retries,not raw workload size, so the existing budget should be enough headroom
once the denials stop.
Type of change
Test plan
task test)task test-e2e)task lint-fix)Manually dispatched
release-notes.ymlfrom this branch for the v0.45.0 tag(https://github.com/stacklok/toolhive/actions/runs/32979534915) with the
earlier, fully-unrestricted-Bash version of this fix, confirming the Phase 3
subagents no longer hit permission denials and the run completes within
budget (release notes generated, PR comment posted, Slack announcement
sent). The Bash allowlist was subsequently tightened to the scoped set
above; re-running against the scoped set is a lower priority since the
mechanism (allowing the specific tools/commands the experts use) is the
same, just narrower.
Does this introduce a user-facing change?
No — CI workflow configuration only.
Special notes for reviewers
This branch was also used to manually regenerate the v0.45.0 release notes
(which failed via the original
workflow_runtrigger) since the fix wasn'ton
mainyet at release time.