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

stacklok / toolhive / 41657639155
73%

Build:
DEFAULT BRANCH: main
Ran 03 Nov 2026 02:58PM UTC
Jobs 1
Files 992
Run time 1min
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

03 Nov 2026 02:50PM UTC coverage: 72.326% (+0.04%) from 72.282%
41657639155

push

github

web-flow
Separate delegate input audiences from output audiences (#7037)

* Stop exempting api_audience from subject coverage

A delegate client with token_exchange.api_audience could exchange a
self-issued token for an access token for that audience even when the
subject token's aud did not cover it, including its own re-exchanged
tokens. api_audience was meant only as the audience a subject token
must carry to open an exchange grant.

Token exchange now requires every granted audience to be covered by
the subject token, with no exception. The api_audience docs and the
generated API docs describe it as an input only.

Co-authored-by: Mecatl <noreply@mecatl.dev>

* Replace api_audience with subject_token_audiences

api_audience was one field with two meanings: the audience a subject
token must carry to open an exchange grant, and an audience the
delegate could obtain, since it had to be listed in audiences. A
delegate set up for refresh tokens could therefore also mint access
tokens for it.

subject_token_audiences is input only. A self-issued subject token
must carry one of the listed audiences on every exchange path, and
audiences lists only what the client may obtain. While
exchange_refresh_tokens is set, startup refuses an input audience that
any client audience covers under the server's audience matching rule,
so a delegate can never get an access token for it. A refresh-token-only
client may have no audiences when token exchange is its only grant.

The exchange-grant path now applies the same source rule as plain
token exchange, so the exchanging client's own login tokens are
accepted, and exchange_refresh_tokens no longer requires
allowed_source_clients.

Co-authored-by: Mecatl <noreply@mecatl.dev>

* Document delegate input and output audiences

The architecture doc still described api_audience and the exemption
from subject coverage. Rewrite the delegate-client section around
subject_token_audiences (input) and audiences (output): one meaning
per sett... (continued)

79 of 79 new or added lines in 5 files covered. (100.0%)

8 existing lines in 3 files now uncovered.

91836 of 126975 relevant lines covered (72.33%)

133.04 hits per line

Coverage Regressions

Lines Coverage ∆ File
4
64.1
4.47% pkg/workloads/manager.go
3
83.94
-0.16% pkg/authserver/storage/redis.go
1
81.58
-0.12% pkg/vmcp/composer/workflow_engine.go
Jobs
ID Job ID Ran Files Coverage
1 41657639155.1 03 Nov 2026 02:58PM UTC 992
72.33
GitHub Action Run
Source Files on build 41657639155
  • Tree
  • List 992
  • Changed 13
  • Source Changed 8
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #41657639155
  • 25bcd3f6 on github
  • Prev Build on main (#41650319421)
  • Next Build on main (#41671625562)
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