• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 30449966750
70%

Build:
DEFAULT BRANCH: main
Ran 29 Jul 2026 12:10PM UTC
Jobs 1
Files 864
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

29 Jul 2026 12:02PM UTC coverage: 69.873% (-0.003%) from 69.876%
30449966750

push

github

web-flow
Refresh the cached MCP parse after webhook mutation

ParsingMiddleware parses the request body once and publishes the result
into the request context and into a ParsedRequestHolder, then refuses to
parse again. The mutating webhook middleware replaced r.Body with the
patched body but passed the request through unchanged, so authorization
evaluated Cedar policy against the tool name and arguments that arrived
while the backend executed the ones the webhook produced. Audit named a
request that never ran, and did so even at the default configuration
because the event type and target name are not gated on
includeRequestData. Telemetry and usage metrics drifted the same way.

Republish the parse when the body actually changed, which corrects every
consumer that reads it rather than patching each one. The re-parse runs
through the same batch guard as ParsingMiddleware so a patched body can
never smuggle a JSON-RPC batch past controls that inspect one request at
a time, and an unparsable result fails closed instead of reaching the
backend.

Also update ContentLength alongside the body. A patch almost always
changes the body length, and the reverse proxy rejects a forwarded
request whose declared length disagrees with its readable body.

Two gaps are documented rather than fixed: the Mcp-Method and Mcp-Name
headers forwarded to a backend still describe the pre-rename tool, and
the tool-call filter and rate limiter run outside the parser so they
still decide against the request as received (#6134).

Fixes #6133

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

33 of 36 new or added lines in 3 files covered. (91.67%)

17 existing lines in 5 files now uncovered.

82132 of 117544 relevant lines covered (69.87%)

97.34 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
87.0
-0.62% pkg/webhook/mutating/middleware.go

Coverage Regressions

Lines Coverage ∆ File
6
76.15
-5.5% pkg/secrets/keyring/keyctl_linux.go
4
61.31
-0.34% pkg/workloads/manager.go
3
67.14
-4.29% pkg/state/runconfig.go
2
93.94
-6.06% pkg/foreach/foreach.go
2
94.77
-1.31% pkg/vmcp/composer/dag_executor.go
Jobs
ID Job ID Ran Files Coverage
1 30449966750.1 29 Jul 2026 12:10PM UTC 864
69.87
GitHub Action Run
Source Files on build 30449966750
  • Tree
  • List 864
  • Changed 11
  • Source Changed 3
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30449966750
  • 11a18f11 on github
  • Prev Build on main (#30436865952)
  • Next Build on main (#30451459028)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc