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

stacklok / toolhive / 21732934896
63%

Build:
DEFAULT BRANCH: main
Ran 05 Feb 2026 11:54PM UTC
Jobs 1
Files 497
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

05 Feb 2026 11:46PM UTC coverage: 61.033% (+0.1%) from 60.931%
21732934896

push

github

web-flow
Add CEL-based AWS STS role mapper for claim-based IAM role selection (#3609)

Implement a role mapper that selects IAM roles based on JWT claims using
CEL expressions with priority-based selection. The mapper supports two
configuration modes: a simple claim syntax where a value like "admins"
is checked for membership in a configurable claim (defaulting to
"groups"), and a full CEL matcher syntax for complex expressions such as
agent delegation checks using the RFC 7519 "act" claim. All CEL
expressions are compiled at configuration load time for fail-fast
validation, claim values are validated against a safe-character regex to
prevent CEL injection, and role ARNs are validated using the AWS SDK.
When multiple mappings match, the one with the lowest priority number
wins, with configuration order as a tie-breaker. A fallback role ARN can
be configured for when no mapping matches.

This is the first in a series of PRs that add AWS STS authentication to
ToolHive, enabling MCP servers to authenticate with AWS services by exchanging
incoming OIDC tokens for temporary AWS credentials via STS
AssumeRoleWithWebIdentity. Subsequent PRs then add token exchange with SigV4
request signing, credential caching, HTTP middleware integration for the CLI
runner, operator CRD support via MCPExternalAuthConfig, and user-facing
documentation. This PR provides the claim-to-role mapping foundation that all
subsequent layers depend on.

Fixes: #3567

144 of 146 new or added lines in 2 files covered. (98.63%)

90 existing lines in 4 files now uncovered.

41388 of 67812 relevant lines covered (61.03%)

75.99 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
98.58
pkg/auth/awssts/role_mapper.go

Uncovered Existing Lines

Lines Coverage ∆ File
2
94.67
-1.33% pkg/vmcp/composer/dag_executor.go
3
80.11
-0.27% pkg/transport/proxy/httpsse/http_proxy.go
6
75.47
-5.66% pkg/secrets/keyring/keyctl_linux.go
79
81.62
1.36% pkg/auth/token.go
Jobs
ID Job ID Ran Files Coverage
1 21732934896.1 05 Feb 2026 11:54PM UTC 497
61.03
GitHub Action Run
Source Files on build 21732934896
  • Tree
  • List 497
  • Changed 5
  • Source Changed 1
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #21732934896
  • f6ac332f on github
  • Prev Build on main (#21729113644)
  • Next Build on main (#21741964253)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc