Skip to content

Scope release-notes tool allowlist for Phase 3 experts - #6439

Merged
reyortiz3 merged 4 commits into
mainfrom
tmp/release-notes-v0.45.0-fix
Aug 26, 2026
Merged

Scope release-notes tool allowlist for Phase 3 experts#6439
reyortiz3 merged 4 commits into
mainfrom
tmp/release-notes-v0.45.0-fix

Conversation

@reyortiz3

@reyortiz3 reyortiz3 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • The release-notes.yml workflow's --allowedTools "Bash(gh *),Bash(git *),..."
    was scoped only to what the top-level skill procedure needs (gh/git
    read-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 via Task — their own agent
    definitions declare Bash for local code exploration, and three of them
    also declare WebFetch and/or mcp__context7__* tools that were never
    allowlisted.
  • This caused the v0.45.0 release-notes run to hit 42 permission denials as
    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).
  • Add WebFetch and the two context7 tools, and extend the Bash(...)
    scoping with the read-only exploration commands the experts actually run
    (grep, rg, find, cat, ls, head, tail, go doc) instead of
    opening 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.
  • Left --max-turns at 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

  • Bug fix

Test plan

  • Unit tests (task test)
  • E2E tests (task test-e2e)
  • Linting (task lint-fix)
  • Manual testing (describe below)

Manually dispatched release-notes.yml from 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_run trigger) since the fix wasn't
on main yet at release time.

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.
@reyortiz3
reyortiz3 requested a review from JAORMX as a code owner August 26, 2026 14:24
@github-actions github-actions Bot added the size/XS Extra small PR: < 100 lines changed label Aug 26, 2026
@codecov

codecov Bot commented Aug 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.99%. Comparing base (fd1d228) to head (2de6fc7).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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.
@reyortiz3 reyortiz3 changed the title Widen release-notes tool allowlist for Phase 3 experts Scope release-notes tool allowlist for Phase 3 experts Aug 26, 2026
@github-actions github-actions Bot added size/XS Extra small PR: < 100 lines changed and removed size/XS Extra small PR: < 100 lines changed labels Aug 26, 2026
@reyortiz3
reyortiz3 merged commit 28dd90a into main Aug 26, 2026
44 checks passed
@reyortiz3
reyortiz3 deleted the tmp/release-notes-v0.45.0-fix branch August 26, 2026 17:00
@github-actions github-actions Bot mentioned this pull request Aug 27, 2026
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XS Extra small PR: < 100 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants