A required plugin blocked your commit or land
TVO-PLUGIN-009 and TVO-PLUGIN-010 — an enforcing gate doing its job.
Written By Dustin
Last updated About 3 hours ago
These two are not plugin loading failures. They mean a required, enforcing binding ran at a lifecycle gate and refused to let the operation through. The gates are pre-snapshot on tovio commit and pre-land on tovio land.
In both cases the plugin ran before the operation took effect and nothing changed — no commit written, no ref advanced. A signed audit entry records which plugin and binding gated it.
TVO-PLUGIN-009 — the plugin ran and said no
The plugin executed and returned fail. This is the normal case: a lint gate, a policy check, a secret scan. The plugin’s own summary and findings are in the output and tell you what to fix.
Fix what it flagged and re-run. The message wording follows the gate, so a pre-snapshot block reads as a blocked snapshot rather than a blocked land.
TVO-PLUGIN-010 — the plugin could not give a verdict
Different problem, same block. The plugin produced no passing verdict because it errored, was skipped or unsupported, is not installed at all (a dangling binding), or could not be executed because this binary was built without the plugins-wasm feature.
An un-runnable required gate must not silently let an operation through, so it blocks fail-closed. Work through it in that order:
tovio plugin doctortovio plugin list- Is the bound plugin installed? A dangling binding is the most common cause, and it usually means a fresh clone or a new machine that never installed it.
- Does your binary support plugins? If it was built without
plugins-wasm, no plugin can run at all. Rebuild with the feature. - Did it error? Then it is the plugin to fix, not the gate.
Do not work around it
Unbinding a required plugin to get a commit through defeats the control someone deliberately put in place, and the unbind is itself audited. If the gate is wrong, that is a conversation with whoever owns the binding.
The Forge equivalent
On the server side, TVO-PLUGIN-015 blocks a landing when a required plugin has no trusted, attested passing result — absent, pending, failing, or authored by someone who is not an approved attester.
Reporting it
The code, and the plugin id only if it is a public plugin. Plugin findings quote your source, so report that it failed rather than what it said.