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

stacklok / toolhive / 33764673379
70%

Build:
DEFAULT BRANCH: main
Ran 03 Sep 2026 02:20PM 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

03 Sep 2026 02:04PM UTC coverage: 69.921% (-0.008%) from 69.929%
33764673379

push

github

web-flow
Sign plugin pushes and remove the lock feature gate (#6438)

* Sign plugin pushes and remove the lock gate

The last RFC THV-0080 piece for plugins: thv ai-plugin push signs the
pushed artifact through toolhive-core's signer — with a cosign key, or
keylessly via an OIDC identity token acquired the same way skill push
acquires one — and attaches the signature next to the artifact so
install-time verification finds it. Pushing unsigned now requires an
explicit --no-sign, and a failed signing fails the push rather than
silently publishing an artifact consumers must then install with
--allow-unsigned.

The signing fields are threaded through the plugins push DTO and the Go
HTTP client, which carried only a reference: without that, every flag
died at the transport boundary. The install response gains the recorded
provenance for the same reason — the CLI is a pure HTTP client, so a
dropped provenance block would print every signed install as untracked.
thv ai-plugin info and install now render the trust state the lock file
records, provisional marker included.

With signing on publish and verification on consume both in place, the
TOOLHIVE_PLUGINS_LOCK_ENABLED gate comes out: the lock file, sync,
upgrade, and signature verification are standard behavior for
project-scoped plugins.

E2E pushes carry an explicit no_sign — the suite has no signing
infrastructure, matching the allow_unsigned exceptions its installs
already record.

Part of #6300.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Signed-off-by: Samuele Verzi <samu@stacklok.com>

* Document the plugins trust model

The plugins architecture document described signature verification as "a
separate concern" — true when written, wrong now that TOFU recording,
offline sync re-verification, the signer-change guard, and signed-by-
default publishing have all landed. Add the trust-model section it was
missing: what is verified, what the escape hatches are, and what remains
trusted on f... (continued)

239 of 284 new or added lines in 21 files covered. (84.15%)

54 existing lines in 5 files now uncovered.

77637 of 111035 relevant lines covered (69.92%)

91.54 hits per line

Uncovered Changes

Lines Coverage ∆ File
19
27.27
9.09% cmd/thv/app/ai_plugin_push.go
15
87.32
-5.73% pkg/plugins/pluginsvc/build.go
2
54.55
10.43% cmd/thv/app/ai_plugin_install.go
2
37.25
-1.52% cmd/thv/app/skill_push.go
2
86.03
1.47% pkg/plugins/pluginsvc/verify.go
2
76.89
-0.17% pkg/skills/client/client.go
2
92.86
pkg/skills/identitytoken/transport.go
1
80.77
-1.05% pkg/skills/identitytoken/acquire.go

Coverage Regressions

Lines Coverage ∆ File
47
59.42
-4.58% pkg/workloads/manager.go
3
0.0
-100.0% pkg/workloads/sysproc_unix.go
2
87.32
-5.73% pkg/plugins/pluginsvc/build.go
1
54.55
10.43% cmd/thv/app/ai_plugin_install.go
1
94.49
-0.79% pkg/vmcp/composer/dag_executor.go
Jobs
ID Job ID Ran Files Coverage
1 33764673379.1 03 Sep 2026 02:20PM UTC 906
69.92
GitHub Action Run
Source Files on build 33764673379
  • Tree
  • List 906
  • Changed 33
  • Source Changed 27
  • Coverage Changed 31
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33764673379
  • da85cdbf on github
  • Prev Build on main (#33764144127)
  • Next Build on main (#33774081341)
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