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

stacklok / toolhive / 39420908284
73%

Build:
DEFAULT BRANCH: main
Ran 20 Oct 2026 12:25PM UTC
Jobs 1
Files 961
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

20 Oct 2026 12:15PM UTC coverage: 71.367% (+0.05%) from 71.321%
39420908284

push

github

web-flow
Let embedders skip consent for preauthorized clients (#6882)

* Add consent preauthorization policy validation

Embedders of the authorization server need a way to let trusted
confidential clients skip ToolHive's consent page. A list of
preauthorized client IDs is only safe if bad entries and unsafe
deployments are rejected before any request is served, so this commit
adds the configuration and its validation. Nothing reads the list at
request time yet.

Config.ConsentExemptClientIDs and handlers.WithConsentExemptClientIDs
carry the list. The shared checks live in the new internal package
pkg/authserver/internal/consentpolicy. Config.Validate and NewHandler
both call it, so direct handler callers get the same checks as the
core server. When the list is not empty, consentpolicy.Validate
rejects:

- empty or duplicate IDs
- URL-shaped IDs (any parsed scheme, or a "//host" authority), which
  covers CIMD IDs that a remote party can change
- a server with no upstreams
- an effective authorization base (AuthorizationEndpointBaseURL,
  otherwise the issuer) that is not HTTPS

InsecureAllowHTTP does not relax the HTTPS rule. An empty list leaves
all existing validation as it was. The option copies the caller's
slice and replaces earlier values instead of adding to them.
NewHandler turns the list into a lookup set and does no storage
lookups.

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

* Validate preauthorized client registrations

The syntax checks alone do not stop an operator from listing an ID
that is missing, public, or cannot do the interactive flow. Such an
entry would only show up later, at request time. This commit makes
authserver.New resolve each listed ID and fail construction if the
registration is not usable.

validateConsentExemptClients in server_impl.go looks up every ID
through the storage passed to newServer. That is the decorated
storage, so encryption and policy decorators still apply and
storage.Unwrap is not used. A storage error or a... (continued)

202 of 213 new or added lines in 6 files covered. (94.84%)

2 existing lines in 2 files now uncovered.

87654 of 122821 relevant lines covered (71.37%)

126.9 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
79.53
1.26% pkg/authserver/server_impl.go
3
91.46
1.37% pkg/authserver/server/handlers/authorize.go

Coverage Regressions

Lines Coverage ∆ File
1
93.26
0.0% pkg/authserver/storage/memory.go
1
81.07
-0.12% pkg/vmcp/composer/workflow_engine.go
Jobs
ID Job ID Ran Files Coverage
1 39420908284.1 20 Oct 2026 12:25PM UTC 961
71.37
GitHub Action Run
Source Files on build 39420908284
  • Tree
  • List 961
  • Changed 10
  • Source Changed 5
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #39420908284
  • 8aaed56d on github
  • Prev Build on main (#39406126403)
  • Next Build on main (#39427607957)
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