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

stacklok / toolhive / 34208266711
71%

Build:
DEFAULT BRANCH: main
Ran 08 Sep 2026 09:16AM UTC
Jobs 1
Files 912
Run time 3min
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

08 Sep 2026 09:07AM UTC coverage: 70.126% (-0.004%) from 70.13%
34208266711

push

github

web-flow
Merge commit from fork

The authorization middleware and the MCP parser both skipped any request
whose path ended in "/sse". The skip existed for SSE stream establishment,
which is a GET, but it was written as a suffix test and reached on POST --
the method that carries MCP messages. On the transparent proxy, which
mounts "/" as a catch-all, a JSON POST to /sse or any */sse path therefore
reached the backend with no policy check, returned unfiltered tools/list
results, and was recorded in the audit log as a generic http_request with
no method or tool name.

No path test belongs in either predicate. There is no fixed MCP endpoint
path: the streamable transport's path is server-chosen, and in 2024-11-05
HTTP+SSE the server names its own message endpoint in the endpoint event,
which ToolHive's proxies forward as given. Tightening the suffix to an
exact match would have closed the reported paths while keeping the shape
of the bug, so both branches are deleted instead. Every JSON POST is now
parsed and authorized regardless of path.

vMCP mounts its MCP handler as a catch-all too, so the parser change makes
requests on arbitrary paths newly visible to the revision-classifying
handler. Scope classification to the configured endpoint path so a
Modern-_meta POST to an unrelated path does not reach dispatchModern. That
gate is routing only -- authorization is enforced independently on both
sides of it.

Fixes GHSA-h4mf-84xq-q2fc

8 of 8 new or added lines in 3 files covered. (100.0%)

12 existing lines in 4 files now uncovered.

79005 of 112662 relevant lines covered (70.13%)

93.42 hits per line

Coverage Regressions

Lines Coverage ∆ File
6
72.34
-6.38% pkg/secrets/keyring/keyctl_linux.go
3
82.62
-0.24% pkg/authserver/storage/redis.go
2
68.8
-0.85% pkg/ignore/processor.go
1
96.77
-3.23% pkg/foreach/foreach.go
Jobs
ID Job ID Ran Files Coverage
1 34208266711.1 08 Sep 2026 09:16AM UTC 912
70.13
GitHub Action Run
Source Files on build 34208266711
  • Tree
  • List 912
  • Changed 10
  • Source Changed 3
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34208266711
  • eb04008c on github
  • Prev Build on main (#34208036424)
  • Next Build on main (#34208407303)
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