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

stacklok / toolhive / 33907585027
70%

Build:
DEFAULT BRANCH: main
Ran 04 Sep 2026 06:53PM UTC
Jobs 1
Files 906
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

04 Sep 2026 06:45PM UTC coverage: 69.929% (-0.04%) from 69.967%
33907585027

push

github

web-flow
Allow Cedar delegation without an upstream session (#6506)

* Allow Cedar delegation without an upstream session

RFC 8693 delegated tokens and RFC 7523 JWT-bearer tokens link to no upstream
IdP login, so a configured primary provider rejected them before Cedar ever
evaluated policy.

Both grants can be recognised from the token itself, so let them through on
what the token states rather than on what is missing from the identity. An
absent Identity.UpstreamTokens map says only that no credential was loaded,
never why: an anonymous identity, a local identity and a bearer token from an
unpinned IdP look exactly like a delegated one, and admitting all of them
would let claims from a trust root the deployment never pinned drive policy.

Fall back to request-token claims only when the token affirmatively declares
it has no upstream session. Delegation already says so through the act claim,
parsed into Identity.DelegationChain. The JWT-bearer grant has no standard
marker, so the authorization server stamps a namespaced private claim on the
tokens it mints for that grant. A nil map with neither signal keeps the deny,
as does a session that exists but lacks the pinned provider's credentials.

Two supporting changes keep that boundary visible. The vMCP incoming-auth
factory now rejects a pinned primaryUpstreamProvider under local or anonymous
auth, which can never produce an upstream session; the operator enforces the
same rule, but it does not run for a hand-written vmcp config. And
Identity.UpstreamTokens documents that a nil map states no reason, so no
future reader repeats the inference.

Policies still could not tell which trust root asserted the claims they read,
including on the pre-existing path where an opaque upstream access token
silently degrades to request claims. Every evaluation now carries a
thv_claim_source attribute on the principal and the context naming that root.
It is written after claim prefixing and outside the claim_ namespace, so a
to... (continued)

91 of 101 new or added lines in 8 files covered. (90.1%)

58 existing lines in 5 files now uncovered.

77765 of 111206 relevant lines covered (69.93%)

92.74 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
32.95
-0.23% pkg/vmcp/cli/serve.go
2
70.59
-3.61% pkg/auth/middleware.go
2
86.12
0.15% pkg/auth/token.go
2
84.87
-0.45% pkg/vmcp/auth/factory/incoming.go

Coverage Regressions

Lines Coverage ∆ File
47
59.0
-4.89% pkg/workloads/manager.go
6
19.87
-3.97% pkg/client/manager.go
3
0.0
-100.0% pkg/workloads/sysproc_unix.go
1
32.95
-0.23% pkg/vmcp/cli/serve.go
1
81.07
-0.12% pkg/vmcp/composer/workflow_engine.go
Jobs
ID Job ID Ran Files Coverage
1 33907585027.1 04 Sep 2026 06:53PM UTC 906
69.93
GitHub Action Run
Source Files on build 33907585027
  • Tree
  • List 906
  • Changed 15
  • Source Changed 10
  • Coverage Changed 15
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33907585027
  • e30f1bf3 on github
  • Prev Build on main (#33898069627)
  • Next Build on main (#33973344999)
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